{"version":3,"file":"d1153ee7fc8224b55c28a0dd105845651011ddf4-e65eb641c3dbd67a3e0d.js","mappings":"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","sources":["webpack://sc-app-orders/./node_modules/@mui/icons-material/ArrowRightAlt.js","webpack://sc-app-orders/./node_modules/@mui/icons-material/Info.js","webpack://sc-app-orders/./node_modules/@mui/icons-material/KeyboardArrowDown.js","webpack://sc-app-orders/./node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js","webpack://sc-app-orders/./node_modules/@mui/material/internal/svg-icons/CheckBox.js","webpack://sc-app-orders/./node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js","webpack://sc-app-orders/./node_modules/@mui/material/Checkbox/checkboxClasses.js","webpack://sc-app-orders/./node_modules/@mui/material/Checkbox/Checkbox.js","webpack://sc-app-orders/./node_modules/@mui/material/Divider/dividerClasses.js","webpack://sc-app-orders/./node_modules/@mui/material/ListItemIcon/listItemIconClasses.js","webpack://sc-app-orders/./node_modules/@mui/material/ListItemText/listItemTextClasses.js","webpack://sc-app-orders/./node_modules/@mui/material/MenuItem/menuItemClasses.js","webpack://sc-app-orders/./node_modules/@mui/material/MenuItem/MenuItem.js","webpack://sc-app-orders/./node_modules/bezier-easing/src/index.js","webpack://sc-app-orders/./node_modules/parallax-controller/dist/parallax-controller.esm.js","webpack://sc-app-orders/./node_modules/react-scroll-parallax/dist/react-scroll-parallax.esm.js","webpack://sc-app-orders/./src/components/AddressSearch/AddressSearchPopup.js","webpack://sc-app-orders/./src/components/ConnectElectric/NoDeregulatedElectric.js","webpack://sc-app-orders/./src/components/ConnectElectric/TermTypePopup.js","webpack://sc-app-orders/./src/components/OfferGrid/SortIcon.js","webpack://sc-app-orders/./node_modules/@mui/material/AlertTitle/alertTitleClasses.js","webpack://sc-app-orders/./node_modules/@mui/material/AlertTitle/AlertTitle.js","webpack://sc-app-orders/./src/components/UsageHistoryEntry/UsageHistoryForm.js","webpack://sc-app-orders/./src/components/UsageHistoryEntry/index.js","webpack://sc-app-orders/./src/components/IntroText/index.js","webpack://sc-app-orders/./src/components/ConnectElectric/FiltersElectric.js","webpack://sc-app-orders/./src/components/ConnectElectric/SCLandingInline.js","webpack://sc-app-orders/./src/components/ConnectElectric/FeaturedOffersElectric.js","webpack://sc-app-orders/./src/components/ConnectElectric/index.js","webpack://sc-app-orders/./src/components/Electric6MonthAvgCompare/index.js","webpack://sc-app-orders/./node_modules/@mui/utils/esm/visuallyHidden/visuallyHidden.js","webpack://sc-app-orders/./node_modules/@mui/material/utils/areArraysEqual.js","webpack://sc-app-orders/./node_modules/@mui/material/Slider/useSlider.js","webpack://sc-app-orders/./node_modules/@mui/material/utils/shouldSpreadAdditionalProps.js","webpack://sc-app-orders/./node_modules/@mui/material/Slider/sliderClasses.js","webpack://sc-app-orders/./node_modules/@mui/material/Slider/Slider.js","webpack://sc-app-orders/./node_modules/@mui/material/Slider/SliderValueLabel.js","webpack://sc-app-orders/./src/components/LandingSC/DontBeAverage.js","webpack://sc-app-orders/./src/components/LandingSC/Rollercoaster.js","webpack://sc-app-orders/./src/components/LandingSC/ThousandKWhTrap.js","webpack://sc-app-orders/./src/components/TXLandingPage/TXProviderList.js","webpack://sc-app-orders/./src/components/LandingSC/index.js","webpack://sc-app-orders/./src/components/OfferGrid/OfferDetailsPopup.js","webpack://sc-app-orders/./src/components/OfferGrid/FeaturedOfferElectric.js","webpack://sc-app-orders/./src/components/SCLandingWrapper/index.js","webpack://sc-app-orders/./src/components/WifiAnimation/index.js"],"sourcesContent":["\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)(/*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M16.01 11H4v2h12.01v3L20 12l-3.99-4z\"\n}), 'ArrowRightAlt');","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)(/*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-6h2zm0-8h-2V7h2z\"\n}), 'Info');","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)(/*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6z\"\n}), 'KeyboardArrowDown');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n}), 'CheckBoxOutlineBlank');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckBox');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z\"\n}), 'IndeterminateCheckBox');","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCheckboxUtilityClass(slot) {\n return generateUtilityClass('MuiCheckbox', slot);\n}\nconst checkboxClasses = generateUtilityClasses('MuiCheckbox', ['root', 'checked', 'disabled', 'indeterminate', 'colorPrimary', 'colorSecondary', 'sizeSmall', 'sizeMedium']);\nexport default checkboxClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"checkedIcon\", \"color\", \"icon\", \"indeterminate\", \"indeterminateIcon\", \"inputProps\", \"size\", \"className\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport SwitchBase from '../internal/SwitchBase';\nimport CheckBoxOutlineBlankIcon from '../internal/svg-icons/CheckBoxOutlineBlank';\nimport CheckBoxIcon from '../internal/svg-icons/CheckBox';\nimport IndeterminateCheckBoxIcon from '../internal/svg-icons/IndeterminateCheckBox';\nimport capitalize from '../utils/capitalize';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport checkboxClasses, { getCheckboxUtilityClass } from './checkboxClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n indeterminate,\n color,\n size\n } = ownerState;\n const slots = {\n root: ['root', indeterminate && 'indeterminate', `color${capitalize(color)}`, `size${capitalize(size)}`]\n };\n const composedClasses = composeClasses(slots, getCheckboxUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst CheckboxRoot = styled(SwitchBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiCheckbox',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.indeterminate && styles.indeterminate, styles[`size${capitalize(ownerState.size)}`], ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`]];\n }\n})(_ref => {\n let {\n theme,\n ownerState\n } = _ref;\n return _extends({\n color: (theme.vars || theme).palette.text.secondary\n }, !ownerState.disableRipple && {\n '&:hover': {\n backgroundColor: theme.vars ? `rgba(${ownerState.color === 'default' ? theme.vars.palette.action.activeChannel : theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(ownerState.color === 'default' ? theme.palette.action.active : theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n }, ownerState.color !== 'default' && {\n [`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${checkboxClasses.disabled}`]: {\n color: (theme.vars || theme).palette.action.disabled\n }\n });\n});\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(CheckBoxIcon, {});\nconst defaultIcon = /*#__PURE__*/_jsx(CheckBoxOutlineBlankIcon, {});\nconst defaultIndeterminateIcon = /*#__PURE__*/_jsx(IndeterminateCheckBoxIcon, {});\nconst Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(inProps, ref) {\n var _icon$props$fontSize, _indeterminateIcon$pr;\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiCheckbox'\n });\n const {\n checkedIcon = defaultCheckedIcon,\n color = 'primary',\n icon: iconProp = defaultIcon,\n indeterminate = false,\n indeterminateIcon: indeterminateIconProp = defaultIndeterminateIcon,\n inputProps,\n size = 'medium',\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const icon = indeterminate ? indeterminateIconProp : iconProp;\n const indeterminateIcon = indeterminate ? indeterminateIconProp : checkedIcon;\n const ownerState = _extends({}, props, {\n color,\n indeterminate,\n size\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CheckboxRoot, _extends({\n type: \"checkbox\",\n inputProps: _extends({\n 'data-indeterminate': indeterminate\n }, inputProps),\n icon: /*#__PURE__*/React.cloneElement(icon, {\n fontSize: (_icon$props$fontSize = icon.props.fontSize) != null ? _icon$props$fontSize : size\n }),\n checkedIcon: /*#__PURE__*/React.cloneElement(indeterminateIcon, {\n fontSize: (_indeterminateIcon$pr = indeterminateIcon.props.fontSize) != null ? _indeterminateIcon$pr : size\n }),\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default Checkbox;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getDividerUtilityClass(slot) {\n return generateUtilityClass('MuiDivider', slot);\n}\nconst dividerClasses = generateUtilityClasses('MuiDivider', ['root', 'absolute', 'fullWidth', 'inset', 'middle', 'flexItem', 'light', 'vertical', 'withChildren', 'withChildrenVertical', 'textAlignRight', 'textAlignLeft', 'wrapper', 'wrapperVertical']);\nexport default dividerClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemIconUtilityClass(slot) {\n return generateUtilityClass('MuiListItemIcon', slot);\n}\nconst listItemIconClasses = generateUtilityClasses('MuiListItemIcon', ['root', 'alignItemsFlexStart']);\nexport default listItemIconClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemTextUtilityClass(slot) {\n return generateUtilityClass('MuiListItemText', slot);\n}\nconst listItemTextClasses = generateUtilityClasses('MuiListItemText', ['root', 'multiline', 'dense', 'inset', 'primary', 'secondary']);\nexport default listItemTextClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getMenuItemUtilityClass(slot) {\n return generateUtilityClass('MuiMenuItem', slot);\n}\nconst menuItemClasses = generateUtilityClasses('MuiMenuItem', ['root', 'focusVisible', 'dense', 'disabled', 'divider', 'gutters', 'selected']);\nexport default menuItemClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"component\", \"dense\", \"divider\", \"disableGutters\", \"focusVisibleClassName\", \"role\", \"tabIndex\", \"className\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport ListContext from '../List/ListContext';\nimport ButtonBase from '../ButtonBase';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport useForkRef from '../utils/useForkRef';\nimport { dividerClasses } from '../Divider';\nimport { listItemIconClasses } from '../ListItemIcon';\nimport { listItemTextClasses } from '../ListItemText';\nimport menuItemClasses, { getMenuItemUtilityClass } from './menuItemClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.dense && styles.dense, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters];\n};\nconst useUtilityClasses = ownerState => {\n const {\n disabled,\n dense,\n divider,\n disableGutters,\n selected,\n classes\n } = ownerState;\n const slots = {\n root: ['root', dense && 'dense', disabled && 'disabled', !disableGutters && 'gutters', divider && 'divider', selected && 'selected']\n };\n const composedClasses = composeClasses(slots, getMenuItemUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst MenuItemRoot = styled(ButtonBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiMenuItem',\n slot: 'Root',\n overridesResolver\n})(_ref => {\n let {\n theme,\n ownerState\n } = _ref;\n return _extends({}, theme.typography.body1, {\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n position: 'relative',\n textDecoration: 'none',\n minHeight: 48,\n paddingTop: 6,\n paddingBottom: 6,\n boxSizing: 'border-box',\n whiteSpace: 'nowrap'\n }, !ownerState.disableGutters && {\n paddingLeft: 16,\n paddingRight: 16\n }, ownerState.divider && {\n borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n backgroundClip: 'padding-box'\n }, {\n '&:hover': {\n textDecoration: 'none',\n backgroundColor: (theme.vars || theme).palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n [`&.${menuItemClasses.selected}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n [`&.${menuItemClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n },\n [`&.${menuItemClasses.selected}:hover`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n }\n },\n [`&.${menuItemClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette.action.focus\n },\n [`&.${menuItemClasses.disabled}`]: {\n opacity: (theme.vars || theme).palette.action.disabledOpacity\n },\n [`& + .${dividerClasses.root}`]: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1)\n },\n [`& + .${dividerClasses.inset}`]: {\n marginLeft: 52\n },\n [`& .${listItemTextClasses.root}`]: {\n marginTop: 0,\n marginBottom: 0\n },\n [`& .${listItemTextClasses.inset}`]: {\n paddingLeft: 36\n },\n [`& .${listItemIconClasses.root}`]: {\n minWidth: 36\n }\n }, !ownerState.dense && {\n [theme.breakpoints.up('sm')]: {\n minHeight: 'auto'\n }\n }, ownerState.dense && _extends({\n minHeight: 32,\n // https://m2.material.io/components/menus#specs > Dense\n paddingTop: 4,\n paddingBottom: 4\n }, theme.typography.body2, {\n [`& .${listItemIconClasses.root} svg`]: {\n fontSize: '1.25rem'\n }\n }));\n});\nconst MenuItem = /*#__PURE__*/React.forwardRef(function MenuItem(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiMenuItem'\n });\n const {\n autoFocus = false,\n component = 'li',\n dense = false,\n divider = false,\n disableGutters = false,\n focusVisibleClassName,\n role = 'menuitem',\n tabIndex: tabIndexProp,\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const context = React.useContext(ListContext);\n const childContext = React.useMemo(() => ({\n dense: dense || context.dense || false,\n disableGutters\n }), [context.dense, dense, disableGutters]);\n const menuItemRef = React.useRef(null);\n useEnhancedEffect(() => {\n if (autoFocus) {\n if (menuItemRef.current) {\n menuItemRef.current.focus();\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('MUI: Unable to set focus to a MenuItem whose component has not been rendered.');\n }\n }\n }, [autoFocus]);\n const ownerState = _extends({}, props, {\n dense: childContext.dense,\n divider,\n disableGutters\n });\n const classes = useUtilityClasses(props);\n const handleRef = useForkRef(menuItemRef, ref);\n let tabIndex;\n if (!props.disabled) {\n tabIndex = tabIndexProp !== undefined ? tabIndexProp : -1;\n }\n return /*#__PURE__*/_jsx(ListContext.Provider, {\n value: childContext,\n children: /*#__PURE__*/_jsx(MenuItemRoot, _extends({\n ref: handleRef,\n role: role,\n tabIndex: tabIndex,\n component: component,\n focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n className: clsx(classes.root, className)\n }, other, {\n ownerState: ownerState,\n classes: classes\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default MenuItem;","/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nvar NEWTON_ITERATIONS = 4;\nvar NEWTON_MIN_SLOPE = 0.001;\nvar SUBDIVISION_PRECISION = 0.0000001;\nvar SUBDIVISION_MAX_ITERATIONS = 10;\nvar kSplineTableSize = 11;\nvar kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\nvar float32ArraySupported = typeof Float32Array === 'function';\nfunction A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n}\nfunction B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n}\nfunction C(aA1) {\n return 3.0 * aA1;\n}\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n}\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n}\nfunction binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n return currentT;\n}\nfunction newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\nfunction LinearEasing(x) {\n return x;\n}\nmodule.exports = function bezier(mX1, mY1, mX2, mY2) {\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n throw new Error('bezier x values must be in [0, 1] range');\n }\n if (mX1 === mY1 && mX2 === mY2) {\n return LinearEasing;\n }\n\n // Precompute samples table\n var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n function getTForX(aX) {\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n return function BezierEasing(x) {\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (x === 0) {\n return 0;\n }\n if (x === 1) {\n return 1;\n }\n return calcBezier(getTForX(x), mY1, mY2);\n };\n};","import bezier from 'bezier-easing';\nvar Limits = function Limits(properties) {\n this.startX = properties.startX;\n this.startY = properties.startY;\n this.endX = properties.endX;\n this.endY = properties.endY; // Used to calculate the progress of the element\n\n this.totalX = this.endX - this.startX;\n this.totalY = this.endY - this.startY; // Used to scale translate effects\n\n this.startMultiplierX = properties.startMultiplierX || 1;\n this.endMultiplierX = properties.endMultiplierX || 1;\n this.startMultiplierY = properties.startMultiplierY || 1;\n this.endMultiplierY = properties.endMultiplierY || 1;\n};\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nvar ValidCSSEffects;\n(function (ValidCSSEffects) {\n ValidCSSEffects[\"speed\"] = \"speed\";\n ValidCSSEffects[\"translateX\"] = \"translateX\";\n ValidCSSEffects[\"translateY\"] = \"translateY\";\n ValidCSSEffects[\"rotate\"] = \"rotate\";\n ValidCSSEffects[\"rotateX\"] = \"rotateX\";\n ValidCSSEffects[\"rotateY\"] = \"rotateY\";\n ValidCSSEffects[\"rotateZ\"] = \"rotateZ\";\n ValidCSSEffects[\"scale\"] = \"scale\";\n ValidCSSEffects[\"scaleX\"] = \"scaleX\";\n ValidCSSEffects[\"scaleY\"] = \"scaleY\";\n ValidCSSEffects[\"scaleZ\"] = \"scaleZ\";\n ValidCSSEffects[\"opacity\"] = \"opacity\";\n})(ValidCSSEffects || (ValidCSSEffects = {}));\nvar Units;\n(function (Units) {\n Units[\"px\"] = \"px\";\n Units[\"%\"] = \"%\";\n Units[\"vh\"] = \"vh\";\n Units[\"vw\"] = \"vw\";\n})(Units || (Units = {}));\nvar RotationUnits;\n(function (RotationUnits) {\n RotationUnits[\"deg\"] = \"deg\";\n RotationUnits[\"turn\"] = \"turn\";\n RotationUnits[\"rad\"] = \"rad\";\n})(RotationUnits || (RotationUnits = {}));\nvar ScaleUnits;\n(function (ScaleUnits) {\n ScaleUnits[\"\"] = \"\";\n})(ScaleUnits || (ScaleUnits = {}));\nvar ScrollAxis;\n(function (ScrollAxis) {\n ScrollAxis[\"vertical\"] = \"vertical\";\n ScrollAxis[\"horizontal\"] = \"horizontal\";\n})(ScrollAxis || (ScrollAxis = {}));\nvar EasingPreset;\n(function (EasingPreset) {\n EasingPreset[\"ease\"] = \"ease\";\n EasingPreset[\"easeIn\"] = \"easeIn\";\n EasingPreset[\"easeOut\"] = \"easeOut\";\n EasingPreset[\"easeInOut\"] = \"easeInOut\";\n EasingPreset[\"easeInQuad\"] = \"easeInQuad\";\n EasingPreset[\"easeInCubic\"] = \"easeInCubic\";\n EasingPreset[\"easeInQuart\"] = \"easeInQuart\";\n EasingPreset[\"easeInQuint\"] = \"easeInQuint\";\n EasingPreset[\"easeInSine\"] = \"easeInSine\";\n EasingPreset[\"easeInExpo\"] = \"easeInExpo\";\n EasingPreset[\"easeInCirc\"] = \"easeInCirc\";\n EasingPreset[\"easeOutQuad\"] = \"easeOutQuad\";\n EasingPreset[\"easeOutCubic\"] = \"easeOutCubic\";\n EasingPreset[\"easeOutQuart\"] = \"easeOutQuart\";\n EasingPreset[\"easeOutQuint\"] = \"easeOutQuint\";\n EasingPreset[\"easeOutSine\"] = \"easeOutSine\";\n EasingPreset[\"easeOutExpo\"] = \"easeOutExpo\";\n EasingPreset[\"easeOutCirc\"] = \"easeOutCirc\";\n EasingPreset[\"easeInOutQuad\"] = \"easeInOutQuad\";\n EasingPreset[\"easeInOutCubic\"] = \"easeInOutCubic\";\n EasingPreset[\"easeInOutQuart\"] = \"easeInOutQuart\";\n EasingPreset[\"easeInOutQuint\"] = \"easeInOutQuint\";\n EasingPreset[\"easeInOutSine\"] = \"easeInOutSine\";\n EasingPreset[\"easeInOutExpo\"] = \"easeInOutExpo\";\n EasingPreset[\"easeInOutCirc\"] = \"easeInOutCirc\";\n EasingPreset[\"easeInBack\"] = \"easeInBack\";\n EasingPreset[\"easeOutBack\"] = \"easeOutBack\";\n EasingPreset[\"easeInOutBack\"] = \"easeInOutBack\";\n})(EasingPreset || (EasingPreset = {}));\n\n/**\r\n * Creates a unique id to distinguish parallax elements.\r\n */\nvar id = 0;\nfunction createId() {\n ++id;\n return id;\n}\nvar Rect = /*#__PURE__*/function () {\n function Rect(options) {\n var rect = options.el.getBoundingClientRect(); // rect is based on viewport -- must adjust for relative scroll container\n\n if (options.view.scrollContainer) {\n var scrollRect = options.view.scrollContainer.getBoundingClientRect();\n rect = _extends({}, rect, {\n top: rect.top - scrollRect.top,\n right: rect.right - scrollRect.left,\n bottom: rect.bottom - scrollRect.top,\n left: rect.left - scrollRect.left\n });\n }\n this.height = options.el.offsetHeight;\n this.width = options.el.offsetWidth;\n this.left = rect.left;\n this.right = rect.right;\n this.top = rect.top;\n this.bottom = rect.bottom;\n if (options.rootMargin) {\n this._setRectWithRootMargin(options.rootMargin);\n }\n }\n /**\r\n * Apply root margin to all properties\r\n */\n\n var _proto = Rect.prototype;\n _proto._setRectWithRootMargin = function _setRectWithRootMargin(rootMargin) {\n var totalRootY = rootMargin.top + rootMargin.bottom;\n var totalRootX = rootMargin.left + rootMargin.right;\n this.top -= rootMargin.top;\n this.right += rootMargin.right;\n this.bottom += rootMargin.bottom;\n this.left -= rootMargin.left;\n this.height += totalRootY;\n this.width += totalRootX;\n };\n return Rect;\n}();\nvar VALID_UNITS = [ScaleUnits[''], Units.px, Units['%'], Units['vh'], Units['vw'], RotationUnits.deg, RotationUnits.turn, RotationUnits.rad];\n/**\r\n * Determines the unit of a string and parses the value\r\n */\n\nfunction parseValueAndUnit(str, defaultUnit) {\n if (defaultUnit === void 0) {\n defaultUnit = Units['%'];\n }\n var out = {\n value: 0,\n unit: defaultUnit\n };\n if (typeof str === 'undefined') return out;\n var isValid = typeof str === 'number' || typeof str === 'string';\n if (!isValid) {\n throw new Error('Invalid value provided. Must provide a value as a string or number');\n }\n str = String(str);\n out.value = parseFloat(str); // @ts-ignore\n\n out.unit = str.match(/[\\d.\\-+]*\\s*(.*)/)[1] || defaultUnit; // @ts-expect-error\n\n var isValidUnit = VALID_UNITS.includes(out.unit);\n if (!isValidUnit) {\n throw new Error('Invalid unit provided.');\n }\n return out;\n}\nvar easingPresets = {\n ease: [0.25, 0.1, 0.25, 1.0],\n easeIn: [0.42, 0.0, 1.0, 1.0],\n easeOut: [0.0, 0.0, 0.58, 1.0],\n easeInOut: [0.42, 0.0, 0.58, 1.0],\n /* Ease IN curves */\n easeInQuad: [0.55, 0.085, 0.68, 0.53],\n easeInCubic: [0.55, 0.055, 0.675, 0.19],\n easeInQuart: [0.895, 0.03, 0.685, 0.22],\n easeInQuint: [0.755, 0.05, 0.855, 0.06],\n easeInSine: [0.47, 0.0, 0.745, 0.715],\n easeInExpo: [0.95, 0.05, 0.795, 0.035],\n easeInCirc: [0.6, 0.04, 0.98, 0.335],\n /* Ease Out Curves */\n easeOutQuad: [0.25, 0.46, 0.45, 0.94],\n easeOutCubic: [0.215, 0.61, 0.355, 1.0],\n easeOutQuart: [0.165, 0.84, 0.44, 1.0],\n easeOutQuint: [0.23, 1.0, 0.32, 1.0],\n easeOutSine: [0.39, 0.575, 0.565, 1.0],\n easeOutExpo: [0.19, 1.0, 0.22, 1.0],\n easeOutCirc: [0.075, 0.82, 0.165, 1.0],\n /* Ease IN Out Curves */\n easeInOutQuad: [0.455, 0.03, 0.515, 0.955],\n easeInOutCubic: [0.645, 0.045, 0.355, 1.0],\n easeInOutQuart: [0.77, 0.0, 0.175, 1.0],\n easeInOutQuint: [0.86, 0.0, 0.07, 1.0],\n easeInOutSine: [0.445, 0.05, 0.55, 0.95],\n easeInOutExpo: [1.0, 0.0, 0.0, 1.0],\n easeInOutCirc: [0.785, 0.135, 0.15, 0.86],\n /* Ease Bounce Curves */\n easeInBack: [0.6, -0.28, 0.735, 0.045],\n easeOutBack: [0.175, 0.885, 0.32, 1.275],\n easeInOutBack: [0.68, -0.55, 0.265, 1.55]\n};\nfunction createEasingFunction(easing) {\n if (Array.isArray(easing)) {\n return bezier(easing[0], easing[1], easing[2], easing[3]);\n }\n if (typeof easing === 'string' && typeof easingPresets[easing] !== 'undefined') {\n var params = easingPresets[easing];\n return bezier(params[0], params[1], params[2], params[3]);\n }\n return;\n}\nvar PARALLAX_EFFECTS = /*#__PURE__*/Object.values(ValidCSSEffects);\nvar MAP_EFFECT_TO_DEFAULT_UNIT = {\n speed: 'px',\n translateX: '%',\n translateY: '%',\n rotate: 'deg',\n rotateX: 'deg',\n rotateY: 'deg',\n rotateZ: 'deg',\n scale: '',\n scaleX: '',\n scaleY: '',\n scaleZ: '',\n opacity: ''\n};\n/**\r\n * Takes a parallax element effects and parses the properties to get the start and end values and units.\r\n */\n\nfunction parseElementTransitionEffects(props, scrollAxis) {\n var parsedEffects = {};\n PARALLAX_EFFECTS.forEach(function (key) {\n var defaultValue = MAP_EFFECT_TO_DEFAULT_UNIT[key]; // If the provided type is a number, this must be the speed prop\n // in which case we need to construct the proper translate config\n\n if (typeof (props == null ? void 0 : props[key]) === 'number') {\n var value = props == null ? void 0 : props[key];\n var startSpeed = (value || 0) * 10 + \"px\";\n var endSpeed = (value || 0) * -10 + \"px\";\n var startParsed = parseValueAndUnit(startSpeed);\n var endParsed = parseValueAndUnit(endSpeed);\n var speedConfig = {\n start: startParsed.value,\n end: endParsed.value,\n unit: startParsed.unit\n }; // Manually set translate y value\n\n if (scrollAxis === ScrollAxis.vertical) {\n parsedEffects.translateY = speedConfig;\n } // Manually set translate y value\n\n if (scrollAxis === ScrollAxis.horizontal) {\n parsedEffects.translateX = speedConfig;\n }\n } // The rest are standard effect being parsed\n\n if (Array.isArray(props == null ? void 0 : props[key])) {\n var _value = props == null ? void 0 : props[key];\n if (typeof _value[0] !== 'undefined' && typeof _value[1] !== 'undefined') {\n var _startParsed = parseValueAndUnit(_value == null ? void 0 : _value[0], defaultValue);\n var _endParsed = parseValueAndUnit(_value == null ? void 0 : _value[1], defaultValue);\n var easing = createEasingFunction(_value == null ? void 0 : _value[2]);\n parsedEffects[key] = {\n start: _startParsed.value,\n end: _endParsed.value,\n unit: _startParsed.unit,\n easing: easing\n };\n if (_startParsed.unit !== _endParsed.unit) {\n throw new Error('Must provide matching units for the min and max offset values of each axis.');\n }\n }\n }\n });\n return parsedEffects;\n}\n\n/**\r\n * Returns the percent (0 - 100) moved based on position in the viewport\r\n */\nfunction getProgressAmount(\n/*\r\n * The start value from cache\r\n */\nstart,\n/*\r\n * total dist the element has to move to be 100% complete (view width/height + element width/height)\r\n */\ntotalDist,\n/*\r\n * Current scroll value\r\n */\ncurrentScroll,\n/*\r\n * an optional easing function to apply\r\n */\neasing) {\n // adjust cached value\n var startAdjustedScroll = currentScroll - start; // Amount the element has moved based on current and total distance to move\n\n var amount = startAdjustedScroll / totalDist; // Apply bezier easing if provided\n\n if (easing) {\n amount = easing(amount);\n }\n return amount;\n}\n\n/**\r\n * Takes two values (start, end) and returns whether the current scroll is within range\r\n * @param {number} start - start of scroll (x/y)\r\n * @param {number} end - end of scroll (x/y)\r\n * @param {number} scroll - current scroll (x/y)\r\n * @return {boolean} isInView\r\n */\nfunction isElementInView(start, end, scroll) {\n var isInView = scroll >= start && scroll <= end;\n return isInView;\n}\n\n// Scale between AKA normalize\nfunction scaleBetween(value, newMin, newMax, oldMin, oldMax) {\n return (newMax - newMin) * (value - oldMin) / (oldMax - oldMin) + newMin;\n}\n\n/**\r\n * Scales a start and end value of an effect based on percent moved and easing function\r\n */\n\nfunction scaleEffectByProgress(effect, progress) {\n var value = scaleBetween(typeof effect.easing === 'function' ? effect.easing(progress) : progress, (effect == null ? void 0 : effect.start) || 0, (effect == null ? void 0 : effect.end) || 0, 0, 1);\n return {\n value: value,\n unit: effect == null ? void 0 : effect.unit\n };\n}\nvar TRANSFORM_EFFECTS = /*#__PURE__*/Object.values(ValidCSSEffects).filter(function (v) {\n return v !== 'opacity';\n});\nfunction setWillChangeStyles(el, effects) {\n var keys = Object.keys(effects);\n var hasOpacity = keys.includes('opacity');\n var willChange = \"transform\" + (hasOpacity ? ',opacity' : '');\n el.style.willChange = willChange;\n}\nfunction setElementStyles(effects, progress, el) {\n if (!el) return;\n var transform = getTransformStyles(effects, progress);\n var opacity = getOpacityStyles(effects, progress);\n el.style.transform = transform;\n el.style.opacity = opacity;\n}\nfunction getOpacityStyles(effects, progress) {\n var scaledOpacity = effects['opacity'] && scaleEffectByProgress(effects['opacity'], progress);\n if (typeof scaledOpacity === 'undefined' || typeof scaledOpacity.value === 'undefined' || typeof scaledOpacity.unit === 'undefined') {\n return '';\n }\n var styleStr = \"\" + scaledOpacity.value;\n return styleStr;\n}\nfunction getTransformStyles(effects, progress) {\n var transform = TRANSFORM_EFFECTS.reduce(function (acc, key) {\n var scaledEffect =\n // @ts-expect-error\n effects[key] && scaleEffectByProgress(effects[key], progress);\n if (typeof scaledEffect === 'undefined' || typeof scaledEffect.value === 'undefined' || typeof scaledEffect.unit === 'undefined') {\n return acc;\n }\n var styleStr = key + \"(\" + scaledEffect.value + scaledEffect.unit + \")\";\n return acc + styleStr;\n }, '');\n return transform;\n}\n/**\r\n * Takes a parallax element and removes parallax offset styles.\r\n * @param {object} element\r\n */\n\nfunction resetStyles(element) {\n var el = element.el;\n if (!el) return;\n el.style.transform = '';\n el.style.opacity = '';\n}\nfunction createLimitsForRelativeElements(rect, view, scroll, shouldAlwaysCompleteAnimation) {\n var startY = rect.top - view.height;\n var startX = rect.left - view.width;\n var endY = rect.bottom;\n var endX = rect.right; // add scroll\n\n startX += scroll.x;\n endX += scroll.x;\n startY += scroll.y;\n endY += scroll.y;\n if (shouldAlwaysCompleteAnimation) {\n if (scroll.y + rect.top < view.height) {\n startY = 0;\n }\n if (scroll.x + rect.left < view.width) {\n startX = 0;\n }\n if (endY > view.scrollHeight - view.height) {\n endY = view.scrollHeight - view.height;\n }\n if (endX > view.scrollWidth - view.width) {\n endX = view.scrollWidth - view.width;\n }\n }\n var limits = new Limits({\n startX: startX,\n startY: startY,\n endX: endX,\n endY: endY\n });\n return limits;\n}\nfunction getTranslateScalar(startTranslatePx, endTranslatePx, totalDist) {\n var slow = endTranslatePx > startTranslatePx; // calculating necessary scale to increase translations\n\n var totalAbsOff = (Math.abs(startTranslatePx) + Math.abs(endTranslatePx)) * (slow ? -1 : 1);\n var totalDistTrue = totalDist + totalAbsOff; // Determine multiple to scale by, only values greater than 1\n\n var scale = Math.max(totalDist / totalDistTrue, 1);\n return scale;\n}\n\n/**\r\n * Return the start and end pixel values for an elements translations\r\n */\nfunction getStartEndValueInPx(translate, elementSize) {\n var start = translate.start,\n end = translate.end,\n unit = translate.unit;\n if (unit === '%') {\n var scale = elementSize / 100;\n start = start * scale;\n end = end * scale;\n }\n if (unit === 'vw') {\n var startScale = start / 100;\n var endScale = end / 100;\n start = window.innerWidth * startScale;\n end = window.innerWidth * endScale;\n }\n if (unit === 'vh') {\n var _startScale = start / 100;\n var _endScale = end / 100;\n start = window.innerHeight * _startScale;\n end = window.innerHeight * _endScale;\n }\n return {\n start: start,\n end: end\n };\n}\nvar DEFAULT_VALUE = {\n start: 0,\n end: 0,\n unit: ''\n};\nfunction createLimitsWithTranslationsForRelativeElements(rect, view, effects, scroll, scrollAxis, shouldAlwaysCompleteAnimation) {\n // get start and end accounting for percent effects\n var translateX = effects.translateX || DEFAULT_VALUE;\n var translateY = effects.translateY || DEFAULT_VALUE;\n var _getStartEndValueInPx = getStartEndValueInPx(translateX, rect.width),\n startTranslateXPx = _getStartEndValueInPx.start,\n endTranslateXPx = _getStartEndValueInPx.end;\n var _getStartEndValueInPx2 = getStartEndValueInPx(translateY, rect.height),\n startTranslateYPx = _getStartEndValueInPx2.start,\n endTranslateYPx = _getStartEndValueInPx2.end; // default starting values\n\n var startY = rect.top - view.height;\n var startX = rect.left - view.width;\n var endY = rect.bottom;\n var endX = rect.right;\n var startMultiplierY = 1;\n var endMultiplierY = 1;\n if (scrollAxis === ScrollAxis.vertical) {\n startMultiplierY = getTranslateScalar(startTranslateYPx, endTranslateYPx, view.height + rect.height);\n endMultiplierY = startMultiplierY;\n }\n var startMultiplierX = 1;\n var endMultiplierX = 1;\n if (scrollAxis === ScrollAxis.horizontal) {\n startMultiplierX = getTranslateScalar(startTranslateXPx, endTranslateXPx, view.width + rect.width);\n endMultiplierX = startMultiplierX;\n } // Apply the scale to initial values\n\n if (startTranslateYPx < 0) {\n startY = startY + startTranslateYPx * startMultiplierY;\n }\n if (endTranslateYPx > 0) {\n endY = endY + endTranslateYPx * endMultiplierY;\n }\n if (startTranslateXPx < 0) {\n startX = startX + startTranslateXPx * startMultiplierX;\n }\n if (endTranslateXPx > 0) {\n endX = endX + endTranslateXPx * endMultiplierX;\n } // add scroll\n\n startX += scroll.x;\n endX += scroll.x;\n startY += scroll.y;\n endY += scroll.y; // NOTE: please refactor and isolate this :(\n\n if (shouldAlwaysCompleteAnimation) {\n var topBeginsInView = scroll.y + rect.top < view.height;\n var leftBeginsInView = scroll.x + rect.left < view.width;\n var bottomEndsInView = scroll.y + rect.bottom > view.scrollHeight - view.height;\n var rightEndsInView = scroll.x + rect.right > view.scrollWidth - view.height;\n if (topBeginsInView && bottomEndsInView) {\n startMultiplierY = 1;\n endMultiplierY = 1;\n startY = 0;\n endY = view.scrollHeight - view.height;\n }\n if (leftBeginsInView && rightEndsInView) {\n startMultiplierX = 1;\n endMultiplierX = 1;\n startX = 0;\n endX = view.scrollWidth - view.width;\n }\n if (!topBeginsInView && bottomEndsInView) {\n startY = rect.top - view.height + scroll.y;\n endY = view.scrollHeight - view.height;\n var totalDist = endY - startY;\n startMultiplierY = getTranslateScalar(startTranslateYPx, endTranslateYPx, totalDist);\n endMultiplierY = 1;\n if (startTranslateYPx < 0) {\n startY = startY + startTranslateYPx * startMultiplierY;\n }\n }\n if (!leftBeginsInView && rightEndsInView) {\n startX = rect.left - view.width + scroll.x;\n endX = view.scrollWidth - view.width;\n var _totalDist = endX - startX;\n startMultiplierX = getTranslateScalar(startTranslateXPx, endTranslateXPx, _totalDist);\n endMultiplierX = 1;\n if (startTranslateXPx < 0) {\n startX = startX + startTranslateXPx * startMultiplierX;\n }\n }\n if (topBeginsInView && !bottomEndsInView) {\n startY = 0;\n endY = rect.bottom + scroll.y;\n var _totalDist2 = endY - startY;\n startMultiplierY = 1;\n endMultiplierY = getTranslateScalar(startTranslateYPx, endTranslateYPx, _totalDist2);\n if (endTranslateYPx > 0) {\n endY = endY + endTranslateYPx * endMultiplierY;\n }\n }\n if (leftBeginsInView && !rightEndsInView) {\n startX = 0;\n endX = rect.right + scroll.x;\n var _totalDist3 = endX - startX;\n startMultiplierX = 1;\n endMultiplierX = getTranslateScalar(startTranslateXPx, endTranslateXPx, _totalDist3);\n if (endTranslateXPx > 0) {\n endX = endX + endTranslateXPx * endMultiplierX;\n }\n }\n }\n var limits = new Limits({\n startX: startX,\n startY: startY,\n endX: endX,\n endY: endY,\n startMultiplierX: startMultiplierX,\n endMultiplierX: endMultiplierX,\n startMultiplierY: startMultiplierY,\n endMultiplierY: endMultiplierY\n });\n return limits;\n}\nfunction scaleTranslateEffectsForSlowerScroll(effects, limits) {\n var effectsCopy = _extends({}, effects);\n if (effectsCopy.translateX) {\n effectsCopy.translateX = _extends({}, effects.translateX, {\n start: effectsCopy.translateX.start * limits.startMultiplierX,\n end: effectsCopy.translateX.end * limits.endMultiplierX\n });\n }\n if (effectsCopy.translateY) {\n effectsCopy.translateY = _extends({}, effects.translateY, {\n start: effectsCopy.translateY.start * limits.startMultiplierY,\n end: effectsCopy.translateY.end * limits.endMultiplierY\n });\n }\n return effectsCopy;\n}\nfunction getShouldScaleTranslateEffects(props, effects, scrollAxis) {\n if (props.rootMargin || props.targetElement || props.shouldDisableScalingTranslations) {\n return false;\n }\n if (!!effects.translateX && scrollAxis === ScrollAxis.horizontal || !!effects.translateY && scrollAxis === ScrollAxis.vertical) {\n return true;\n }\n return false;\n}\nvar clamp = function clamp(num, min, max) {\n return Math.min(Math.max(num, min), max);\n};\nvar Element = /*#__PURE__*/function () {\n function Element(options) {\n this.el = options.el;\n this.props = options.props;\n this.scrollAxis = options.scrollAxis;\n this.disabledParallaxController = options.disabledParallaxController || false;\n this.id = createId();\n this.effects = parseElementTransitionEffects(this.props, this.scrollAxis);\n this.isInView = null;\n this.progress = 0;\n this._setElementEasing(options.props.easing);\n setWillChangeStyles(options.el, this.effects);\n }\n var _proto = Element.prototype;\n _proto.updateProps = function updateProps(nextProps) {\n this.props = _extends({}, this.props, nextProps);\n this.effects = parseElementTransitionEffects(nextProps, this.scrollAxis);\n this._setElementEasing(nextProps.easing);\n return this;\n };\n _proto.setCachedAttributes = function setCachedAttributes(view, scroll) {\n // NOTE: Must reset styles before getting the rect, as it might impact the natural position\n resetStyles(this);\n this.rect = new Rect({\n el: this.props.targetElement || this.el,\n rootMargin: this.props.rootMargin,\n view: view\n });\n var shouldScaleTranslateEffects = getShouldScaleTranslateEffects(this.props, this.effects, this.scrollAxis);\n if (typeof this.props.startScroll === 'number' && typeof this.props.endScroll === 'number') {\n this.limits = new Limits({\n startX: this.props.startScroll,\n startY: this.props.startScroll,\n endX: this.props.endScroll,\n endY: this.props.endScroll\n }); // Undo the reset -- place it back at current position with styles\n\n this._setElementStyles();\n return this;\n }\n if (shouldScaleTranslateEffects) {\n this.limits = createLimitsWithTranslationsForRelativeElements(this.rect, view, this.effects, scroll, this.scrollAxis, this.props.shouldAlwaysCompleteAnimation);\n this.scaledEffects = scaleTranslateEffectsForSlowerScroll(this.effects, this.limits);\n } else {\n this.limits = createLimitsForRelativeElements(this.rect, view, scroll, this.props.shouldAlwaysCompleteAnimation);\n } // Undo the reset -- place it back at current position with styles\n\n this._setElementStyles();\n return this;\n };\n _proto._updateElementIsInView = function _updateElementIsInView(nextIsInView) {\n // NOTE: Check if this is the first change to make sure onExit isn't called\n var isFirstChange = this.isInView === null;\n if (nextIsInView !== this.isInView) {\n if (nextIsInView) {\n this.props.onEnter && this.props.onEnter(this);\n } else if (!isFirstChange) {\n this._setFinalProgress();\n this._setElementStyles();\n this.props.onExit && this.props.onExit(this);\n }\n }\n this.isInView = nextIsInView;\n };\n _proto._setFinalProgress = function _setFinalProgress() {\n var finalProgress = clamp(Math.round(this.progress), 0, 1);\n this._updateElementProgress(finalProgress);\n };\n _proto._setElementStyles = function _setElementStyles() {\n if (this.props.disabled || this.disabledParallaxController) return;\n var effects = this.scaledEffects || this.effects;\n setElementStyles(effects, this.progress, this.el);\n };\n _proto._updateElementProgress = function _updateElementProgress(nextProgress) {\n this.progress = nextProgress;\n this.props.onProgressChange && this.props.onProgressChange(this.progress);\n this.props.onChange && this.props.onChange(this);\n };\n _proto._setElementEasing = function _setElementEasing(easing) {\n this.easing = createEasingFunction(easing);\n };\n _proto.updateElementOptions = function updateElementOptions(options) {\n this.scrollAxis = options.scrollAxis;\n this.disabledParallaxController = options.disabledParallaxController || false;\n };\n _proto.updatePosition = function updatePosition(scroll) {\n if (!this.limits) return this;\n var isVertical = this.scrollAxis === ScrollAxis.vertical;\n var isFirstChange = this.isInView === null; // based on scroll axis\n\n var start = isVertical ? this.limits.startY : this.limits.startX;\n var end = isVertical ? this.limits.endY : this.limits.endX;\n var total = isVertical ? this.limits.totalY : this.limits.totalX;\n var s = isVertical ? scroll.y : scroll.x; // check if in view\n\n var nextIsInView = isElementInView(start, end, s);\n this._updateElementIsInView(nextIsInView); // set the progress if in view or this is the first change\n\n if (nextIsInView) {\n var nextProgress = getProgressAmount(start, total, s, this.easing);\n this._updateElementProgress(nextProgress);\n this._setElementStyles();\n } else if (isFirstChange) {\n // NOTE: this._updateElementProgress -- dont use this because it will trigger onChange\n this.progress = clamp(Math.round(getProgressAmount(start, total, s, this.easing)), 0, 1);\n this._setElementStyles();\n }\n return this;\n };\n return Element;\n}();\nvar View = /*#__PURE__*/function () {\n function View(config) {\n this.scrollContainer = config.scrollContainer;\n this.width = config.width;\n this.height = config.height;\n this.scrollHeight = config.scrollHeight;\n this.scrollWidth = config.scrollWidth;\n }\n var _proto = View.prototype;\n _proto.hasChanged = function hasChanged(params) {\n if (params.width !== this.width || params.height !== this.height || params.scrollWidth !== this.scrollWidth || params.scrollHeight !== this.scrollHeight) {\n return true;\n }\n return false;\n };\n _proto.setSize = function setSize(params) {\n this.width = params.width;\n this.height = params.height;\n this.scrollHeight = params.scrollHeight;\n this.scrollWidth = params.scrollWidth;\n return this;\n };\n return View;\n}();\nvar Scroll = /*#__PURE__*/function () {\n function Scroll(x, y) {\n this.x = x;\n this.y = y;\n this.dx = 0;\n this.dy = 0;\n }\n var _proto = Scroll.prototype;\n _proto.setScroll = function setScroll(x, y) {\n this.dx = x - this.x;\n this.dy = y - this.y;\n this.x = x;\n this.y = y;\n return this;\n };\n return Scroll;\n}();\nfunction testForPassiveScroll() {\n var supportsPassiveOption = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassiveOption = true;\n return true;\n }\n }); // @ts-expect-error\n\n window.addEventListener('test', null, opts); // @ts-expect-error\n\n window.removeEventListener('test', null, opts);\n } catch (e) {}\n return supportsPassiveOption;\n}\n\n/**\r\n * -------------------------------------------------------\r\n * Parallax Controller\r\n * -------------------------------------------------------\r\n *\r\n * The global controller for setting up and managing a scroll view of elements.\r\n *\r\n */\n\nvar ParallaxController = /*#__PURE__*/function () {\n function ParallaxController(_ref) {\n var _ref$scrollAxis = _ref.scrollAxis,\n scrollAxis = _ref$scrollAxis === void 0 ? ScrollAxis.vertical : _ref$scrollAxis,\n scrollContainer = _ref.scrollContainer,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled;\n this.disabled = disabled;\n this.scrollAxis = scrollAxis; // All parallax elements to be updated\n\n this.elements = [];\n this._hasScrollContainer = !!scrollContainer;\n this.viewEl = scrollContainer != null ? scrollContainer : window; // Scroll and View\n\n var _this$_getScrollPosit = this._getScrollPosition(),\n x = _this$_getScrollPosit[0],\n y = _this$_getScrollPosit[1];\n this.scroll = new Scroll(x, y);\n this.view = new View({\n width: 0,\n height: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n scrollContainer: this._hasScrollContainer ? scrollContainer : undefined\n }); // Ticking\n\n this._ticking = false; // Passive support\n\n this._supportsPassive = testForPassiveScroll(); // Bind methods to class\n\n this._bindAllMethods(); // If this is initialized disabled, don't do anything below.\n\n if (this.disabled) return;\n this._addListeners(this.viewEl);\n this._addResizeObserver();\n this._setViewSize();\n }\n /**\r\n * Static method to instantiate the ParallaxController.\r\n * @returns {Class} ParallaxController\r\n */\n\n ParallaxController.init = function init(options) {\n var hasWindow = typeof window !== 'undefined';\n if (!hasWindow) {\n throw new Error('Looks like ParallaxController.init() was called on the server. This method must be called on the client.');\n }\n return new ParallaxController(options);\n };\n var _proto = ParallaxController.prototype;\n _proto._bindAllMethods = function _bindAllMethods() {\n var _this = this;\n ['_addListeners', '_removeListeners', '_getScrollPosition', '_handleScroll', '_handleUpdateCache', '_updateAllElements', '_updateElementPosition', '_setViewSize', '_addResizeObserver', '_checkIfViewHasChanged', '_getViewParams', 'getElements', 'createElement', 'removeElementById', 'resetElementStyles', 'updateElementPropsById', 'update', 'updateScrollContainer', 'destroy'].forEach(function (method) {\n // @ts-expect-error\n _this[method] = _this[method].bind(_this);\n });\n };\n _proto._addListeners = function _addListeners(el) {\n el.addEventListener('scroll', this._handleScroll, this._supportsPassive ? {\n passive: true\n } : false);\n window.addEventListener('resize', this._handleUpdateCache, false);\n window.addEventListener('blur', this._handleUpdateCache, false);\n window.addEventListener('focus', this._handleUpdateCache, false);\n window.addEventListener('load', this._handleUpdateCache, false);\n };\n _proto._removeListeners = function _removeListeners(el) {\n var _this$_resizeObserver;\n el.removeEventListener('scroll', this._handleScroll, false);\n window.removeEventListener('resize', this._handleUpdateCache, false);\n window.removeEventListener('blur', this._handleUpdateCache, false);\n window.removeEventListener('focus', this._handleUpdateCache, false);\n window.removeEventListener('load', this._handleUpdateCache, false);\n (_this$_resizeObserver = this._resizeObserver) == null ? void 0 : _this$_resizeObserver.disconnect();\n };\n _proto._addResizeObserver = function _addResizeObserver() {\n var _this2 = this;\n try {\n var observedEl = this._hasScrollContainer ? this.viewEl : document.documentElement;\n this._resizeObserver = new ResizeObserver(function () {\n return _this2.update();\n });\n this._resizeObserver.observe(observedEl);\n } catch (e) {\n console.warn('Failed to create the resize observer in the ParallaxContoller');\n }\n };\n _proto._getScrollPosition = function _getScrollPosition() {\n // Save current scroll\n // Supports IE 9 and up.\n var nx = this._hasScrollContainer ?\n // @ts-expect-error\n this.viewEl.scrollLeft : window.pageXOffset;\n var ny = this._hasScrollContainer ?\n // @ts-expect-error\n this.viewEl.scrollTop : window.pageYOffset;\n return [nx, ny];\n }\n /**\r\n * Window scroll handler sets scroll position\r\n * and then calls '_updateAllElements()'.\r\n */;\n _proto._handleScroll = function _handleScroll() {\n var _this$elements;\n var _this$_getScrollPosit2 = this._getScrollPosition(),\n nx = _this$_getScrollPosit2[0],\n ny = _this$_getScrollPosit2[1];\n this.scroll.setScroll(nx, ny); // Only called if the last animation request has been\n // completed and there are parallax elements to update\n\n if (!this._ticking && ((_this$elements = this.elements) == null ? void 0 : _this$elements.length) > 0) {\n this._ticking = true; // @ts-ignore\n\n window.requestAnimationFrame(this._updateAllElements);\n }\n }\n /**\r\n * Window resize handler. Sets the new window inner height\r\n * then updates parallax element attributes and positions.\r\n */;\n _proto._handleUpdateCache = function _handleUpdateCache() {\n this._setViewSize();\n this._updateAllElements({\n updateCache: true\n });\n }\n /**\r\n * Update element positions.\r\n * Determines if the element is in view based on the cached\r\n * attributes, if so set the elements parallax styles.\r\n */;\n _proto._updateAllElements = function _updateAllElements(_temp) {\n var _this3 = this;\n var _ref2 = _temp === void 0 ? {} : _temp,\n updateCache = _ref2.updateCache;\n if (this.elements) {\n this.elements.forEach(function (element) {\n if (updateCache) {\n element.setCachedAttributes(_this3.view, _this3.scroll);\n }\n _this3._updateElementPosition(element);\n });\n } // reset ticking so more animations can be called\n\n this._ticking = false;\n }\n /**\r\n * Update element positions.\r\n * Determines if the element is in view based on the cached\r\n * attributes, if so set the elements parallax styles.\r\n */;\n _proto._updateElementPosition = function _updateElementPosition(element) {\n if (element.props.disabled || this.disabled) return;\n element.updatePosition(this.scroll);\n }\n /**\r\n * Gets the params to set in the View from the scroll container or the window\r\n */;\n _proto._getViewParams = function _getViewParams() {\n if (this._hasScrollContainer) {\n // @ts-expect-error\n var _width = this.viewEl.offsetWidth; // @ts-expect-error\n\n var _height = this.viewEl.offsetHeight; // @ts-expect-error\n\n var _scrollHeight = this.viewEl.scrollHeight; // @ts-expect-error\n\n var _scrollWidth = this.viewEl.scrollWidth;\n return this.view.setSize({\n width: _width,\n height: _height,\n scrollHeight: _scrollHeight,\n scrollWidth: _scrollWidth\n });\n }\n var html = document.documentElement;\n var width = window.innerWidth || html.clientWidth;\n var height = window.innerHeight || html.clientHeight;\n var scrollHeight = html.scrollHeight;\n var scrollWidth = html.scrollWidth;\n return {\n width: width,\n height: height,\n scrollHeight: scrollHeight,\n scrollWidth: scrollWidth\n };\n }\n /**\r\n * Cache the view attributes\r\n */;\n _proto._setViewSize = function _setViewSize() {\n return this.view.setSize(this._getViewParams());\n }\n /**\r\n * Checks if any of the cached attributes of the view have changed.\r\n * @returns boolean\r\n */;\n _proto._checkIfViewHasChanged = function _checkIfViewHasChanged() {\n return this.view.hasChanged(this._getViewParams());\n }\n /**\r\n * -------------------------------------------------------\r\n * Public methods\r\n * -------------------------------------------------------\r\n */\n\n /**\r\n * Returns all the parallax elements in the controller\r\n */;\n _proto.getElements = function getElements() {\n return this.elements;\n }\n /**\r\n * Creates and returns new parallax element with provided options to be managed by the controller.\r\n */;\n _proto.createElement = function createElement(options) {\n var newElement = new Element(_extends({}, options, {\n scrollAxis: this.scrollAxis,\n disabledParallaxController: this.disabled\n }));\n newElement.setCachedAttributes(this.view, this.scroll);\n this.elements = this.elements ? [].concat(this.elements, [newElement]) : [newElement];\n this._updateElementPosition(newElement); // NOTE: This checks if the view has changed then update the controller and all elements if it has\n // This shouldn't always be necessary with a resize observer watching the view element\n // but there seems to be cases where the resize observer does not catch and update.\n\n if (this._checkIfViewHasChanged()) {\n this.update();\n }\n return newElement;\n }\n /**\r\n * Remove an element by id\r\n */;\n _proto.removeElementById = function removeElementById(id) {\n if (!this.elements) return;\n this.elements = this.elements.filter(function (el) {\n return el.id !== id;\n });\n }\n /**\r\n * Updates an existing parallax element object with new options.\r\n */;\n _proto.updateElementPropsById = function updateElementPropsById(id, props) {\n if (this.elements) {\n this.elements = this.elements.map(function (el) {\n if (el.id === id) {\n return el.updateProps(props);\n }\n return el;\n });\n }\n this.update();\n }\n /**\r\n * Remove a target elements parallax styles\r\n */;\n _proto.resetElementStyles = function resetElementStyles(element) {\n resetStyles(element);\n }\n /**\r\n * Updates all cached attributes on parallax elements.\r\n */;\n _proto.update = function update() {\n // Save the latest scroll position because window.scroll\n // may be called and the handle scroll event may not be called.\n var _this$_getScrollPosit3 = this._getScrollPosition(),\n nx = _this$_getScrollPosit3[0],\n ny = _this$_getScrollPosit3[1];\n this.scroll.setScroll(nx, ny);\n this._setViewSize();\n this._updateAllElements({\n updateCache: true\n });\n }\n /**\r\n * Updates the scroll container of the parallax controller\r\n */;\n _proto.updateScrollContainer = function updateScrollContainer(el) {\n // remove existing listeners with current el first\n this._removeListeners(this.viewEl);\n this.viewEl = el;\n this._hasScrollContainer = !!el;\n this.view = new View({\n width: 0,\n height: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n scrollContainer: el\n });\n this._setViewSize();\n this._addListeners(this.viewEl);\n this._updateAllElements({\n updateCache: true\n });\n };\n _proto.disableParallaxController = function disableParallaxController() {\n this.disabled = true; // remove listeners\n\n this._removeListeners(this.viewEl); // reset all styles\n\n if (this.elements) {\n this.elements.forEach(function (element) {\n return resetStyles(element);\n });\n }\n };\n _proto.enableParallaxController = function enableParallaxController() {\n var _this4 = this;\n this.disabled = false;\n if (this.elements) {\n this.elements.forEach(function (element) {\n return element.updateElementOptions({\n disabledParallaxController: false,\n scrollAxis: _this4.scrollAxis\n });\n });\n } // add back listeners\n\n this._addListeners(this.viewEl);\n this._addResizeObserver();\n this._setViewSize();\n }\n /**\r\n * Disable all parallax elements\r\n */;\n _proto.disableAllElements = function disableAllElements() {\n console.warn('deprecated: use disableParallaxController() instead');\n if (this.elements) {\n this.elements = this.elements.map(function (el) {\n return el.updateProps({\n disabled: true\n });\n });\n }\n this.update();\n }\n /**\r\n * Enable all parallax elements\r\n */;\n _proto.enableAllElements = function enableAllElements() {\n console.warn('deprecated: use enableParallaxController() instead');\n if (this.elements) {\n this.elements = this.elements.map(function (el) {\n return el.updateProps({\n disabled: false\n });\n });\n }\n this.update();\n }\n /**\r\n * Removes all listeners and resets all styles on managed elements.\r\n */;\n _proto.destroy = function destroy() {\n this._removeListeners(this.viewEl);\n if (this.elements) {\n this.elements.forEach(function (element) {\n return resetStyles(element);\n });\n } // @ts-expect-error\n\n this.elements = undefined;\n };\n return ParallaxController;\n}();\nexport { EasingPreset, Element, Limits, ParallaxController, Rect, RotationUnits, ScaleUnits, Scroll, ScrollAxis, Units, ValidCSSEffects, View, createId, getProgressAmount, isElementInView, parseElementTransitionEffects, parseValueAndUnit, resetStyles, scaleBetween, scaleEffectByProgress, setElementStyles, testForPassiveScroll };","import { ParallaxController, parseValueAndUnit, ScrollAxis } from 'parallax-controller';\nexport { EasingPreset } from 'parallax-controller';\nimport React, { useEffect, useContext, useRef, useState } from 'react';\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction removeUndefinedObjectKeys(obj) {\n Object.keys(obj).forEach(function (key) {\n return obj[key] === undefined && delete obj[key];\n });\n return obj;\n}\nvar _excluded = [\"disabled\", \"easing\", \"endScroll\", \"onChange\", \"onEnter\", \"onExit\", \"onProgressChange\", \"opacity\", \"rootMargin\", \"rotate\", \"rotateX\", \"rotateY\", \"rotateZ\", \"scale\", \"scaleX\", \"scaleY\", \"scaleZ\", \"shouldAlwaysCompleteAnimation\", \"shouldDisableScalingTranslations\", \"speed\", \"startScroll\", \"targetElement\", \"translateX\", \"translateY\"];\nfunction getIsolatedParallaxProps(props) {\n var disabled = props.disabled,\n easing = props.easing,\n endScroll = props.endScroll,\n onChange = props.onChange,\n onEnter = props.onEnter,\n onExit = props.onExit,\n onProgressChange = props.onProgressChange,\n opacity = props.opacity,\n rootMargin = props.rootMargin,\n rotate = props.rotate,\n rotateX = props.rotateX,\n rotateY = props.rotateY,\n rotateZ = props.rotateZ,\n scale = props.scale,\n scaleX = props.scaleX,\n scaleY = props.scaleY,\n scaleZ = props.scaleZ,\n shouldAlwaysCompleteAnimation = props.shouldAlwaysCompleteAnimation,\n shouldDisableScalingTranslations = props.shouldDisableScalingTranslations,\n speed = props.speed,\n startScroll = props.startScroll,\n targetElement = props.targetElement,\n translateX = props.translateX,\n translateY = props.translateY,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n var parallaxProps = removeUndefinedObjectKeys({\n disabled: disabled,\n easing: easing,\n endScroll: endScroll,\n onChange: onChange,\n onEnter: onEnter,\n onExit: onExit,\n onProgressChange: onProgressChange,\n opacity: opacity,\n rootMargin: rootMargin,\n rotate: rotate,\n rotateX: rotateX,\n rotateY: rotateY,\n rotateZ: rotateZ,\n scale: scale,\n scaleX: scaleX,\n scaleY: scaleY,\n scaleZ: scaleZ,\n shouldAlwaysCompleteAnimation: shouldAlwaysCompleteAnimation,\n shouldDisableScalingTranslations: shouldDisableScalingTranslations,\n speed: speed,\n startScroll: startScroll,\n targetElement: targetElement,\n translateX: translateX,\n translateY: translateY\n });\n return {\n parallaxProps: parallaxProps,\n rest: rest\n };\n}\nfunction useVerifyController(controller) {\n useEffect(function () {\n var isServer = typeof window === 'undefined'; // Make sure the provided controller is an instance of the Parallax Controller\n\n var isInstance = controller instanceof ParallaxController; // Throw if neither context or global is available\n\n if (!isServer && !controller && !isInstance) {\n throw new Error(\"Must wrap your application's components in a .\");\n }\n }, [controller]);\n}\nvar ParallaxContext = /*#__PURE__*/React.createContext(null);\nfunction useParallaxController() {\n var parallaxController = useContext(ParallaxContext);\n var isServer = typeof window === 'undefined';\n if (isServer) {\n return null;\n }\n if (!parallaxController) {\n throw new Error('Could not find `react-scroll-parallax` context value. Please ensure the component is wrapped in a ');\n }\n return parallaxController;\n}\nfunction useParallax(props) {\n var controller = useParallaxController();\n var ref = useRef(null);\n var _getIsolatedParallaxP = getIsolatedParallaxProps(props),\n parallaxProps = _getIsolatedParallaxP.parallaxProps;\n useVerifyController(controller);\n var _useState = useState(),\n element = _useState[0],\n setElement = _useState[1]; // create element\n\n useEffect(function () {\n var newElement;\n if (ref.current instanceof HTMLElement) {\n var options = {\n el: ref.current,\n props: parallaxProps\n };\n newElement = controller == null ? void 0 : controller.createElement(options);\n setElement(newElement);\n } else {\n throw new Error('You must assign the ref returned by the useParallax() hook to an HTML Element.');\n }\n return function () {\n if (newElement) {\n controller == null ? void 0 : controller.removeElementById(newElement.id);\n }\n };\n }, []); // update element\n\n useEffect(function () {\n if (element) {\n if (props.disabled) {\n controller == null ? void 0 : controller.resetElementStyles(element);\n controller == null ? void 0 : controller.updateElementPropsById(element.id, parallaxProps);\n } else {\n controller == null ? void 0 : controller.updateElementPropsById(element.id, parallaxProps);\n }\n }\n }, [props.disabled, props.easing, props.endScroll, props.onChange, props.onEnter, props.onExit, props.onProgressChange, props.opacity, props.rootMargin, props.rotate, props.rotateX, props.rotateY, props.rotateZ, props.scale, props.scaleX, props.scaleY, props.scaleZ, props.shouldAlwaysCompleteAnimation, props.shouldDisableScalingTranslations, props.speed, props.startScroll, props.targetElement, props.translateX, props.translateY]);\n return {\n ref: ref,\n controller: controller,\n element: element\n };\n}\nfunction Parallax(props) {\n var _getIsolatedParallaxP = getIsolatedParallaxProps(props),\n parallaxProps = _getIsolatedParallaxP.parallaxProps,\n rest = _getIsolatedParallaxP.rest;\n var _useParallax = useParallax(parallaxProps),\n ref = _useParallax.ref;\n return React.createElement(\"div\", Object.assign({\n ref: ref\n }, rest), props.children);\n}\nvar FALLBACK_RECT = {\n height: 0\n};\nfunction getExpandedStyle(layer) {\n if (Array.isArray(layer.translateY)) {\n var translateYStart = parseValueAndUnit(layer.translateY[0]);\n var translateYEnd = parseValueAndUnit(layer.translateY[1]);\n if (translateYStart.unit === 'px' && translateYEnd.unit === 'px') {\n return {\n top: Math.abs(translateYEnd.value) * -1 + \"px\",\n bottom: Math.abs(translateYStart.value) * -1 + \"px\"\n };\n }\n if (translateYStart.unit === '%' && translateYEnd.unit === '%') {\n var _layer$targetElement$, _layer$targetElement;\n var clientRect = (_layer$targetElement$ = (_layer$targetElement = layer.targetElement) == null ? void 0 : _layer$targetElement.getBoundingClientRect()) != null ? _layer$targetElement$ : FALLBACK_RECT;\n var top = Math.abs(clientRect.height * 0.01 * translateYEnd.value) * -1;\n var bottom = Math.abs(clientRect.height * 0.01 * translateYStart.value) * -1;\n return {\n top: top + \"px\",\n bottom: bottom + \"px\"\n };\n }\n }\n if (layer.speed) {\n var speed = layer.speed || 0;\n var absSpeed = Math.abs(speed) * 10 * -1;\n return {\n top: absSpeed + \"px\",\n bottom: absSpeed + \"px\"\n };\n }\n return {};\n}\nfunction getImageStyle(layer) {\n return layer.image ? {\n backgroundImage: \"url(\" + layer.image + \")\",\n backgroundPosition: 'center',\n backgroundSize: 'cover'\n } : {};\n}\nvar _excluded$1 = [\"children\", \"disabled\", \"style\", \"expanded\", \"image\", \"testId\"];\nvar absoluteStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0\n};\nvar ParallaxBannerLayer = function ParallaxBannerLayer(props) {\n var _getIsolatedParallaxP = getIsolatedParallaxProps(props),\n parallaxProps = _getIsolatedParallaxP.parallaxProps,\n rest = _getIsolatedParallaxP.rest;\n var style = rest.style,\n _rest$expanded = rest.expanded,\n expanded = _rest$expanded === void 0 ? true : _rest$expanded,\n testId = rest.testId,\n divProps = _objectWithoutPropertiesLoose(rest, _excluded$1);\n var imageStyle = getImageStyle(props);\n var expandedStyle = expanded ? getExpandedStyle(props) : {};\n var parallax = useParallax(_extends({\n targetElement: props.targetElement,\n shouldDisableScalingTranslations: true\n }, parallaxProps));\n return React.createElement(\"div\", Object.assign({\n \"data-testid\": testId,\n ref: parallax.ref,\n style: _extends({}, imageStyle, absoluteStyle, expandedStyle, style)\n }, divProps), rest.children);\n};\nvar _excluded$2 = [\"disabled\", \"style\", \"layers\"];\nvar containerStyle = {\n position: 'relative',\n overflow: 'hidden',\n width: '100%'\n};\nvar ParallaxBanner = function ParallaxBanner(props) {\n var _useState = useState(null),\n targetElement = _useState[0],\n setTargetElement = _useState[1];\n var containerRef = useRef(null);\n useEffect(function () {\n setTargetElement(containerRef.current);\n }, []);\n var rootStyle = props.style,\n _props$layers = props.layers,\n layers = _props$layers === void 0 ? [] : _props$layers,\n rootRest = _objectWithoutPropertiesLoose(props, _excluded$2);\n function renderLayers() {\n if (targetElement) {\n var shouldUseLayers = layers && layers.length > 0;\n if (shouldUseLayers) {\n return layers.map(function (layer, i) {\n return React.createElement(ParallaxBannerLayer, Object.assign({}, layer, {\n targetElement: targetElement,\n key: \"layer-\" + i,\n testId: \"layer-\" + i\n }));\n });\n }\n }\n return null;\n }\n function renderChildren() {\n if (targetElement) {\n return React.Children.map(props.children, function (child) {\n var item = child; // adds the targetElement prop to any ParallaxBannerLayer components\n\n if ((item == null ? void 0 : item.type) === ParallaxBannerLayer) {\n var clone = React.cloneElement(item, {\n targetElement: targetElement\n });\n return clone;\n }\n return child;\n });\n }\n return null;\n }\n return React.createElement(\"div\", Object.assign({\n ref: containerRef,\n style: _extends({}, containerStyle, rootStyle)\n }, rootRest), renderLayers(), renderChildren());\n};\nvar createController = function createController(options) {\n // Don't initialize on the server\n var isServer = typeof window === 'undefined';\n if (!isServer) {\n // Must not be the server so kick it off...\n return ParallaxController.init(options);\n }\n return null;\n};\nfunction ParallaxProvider(props) {\n var controller = useRef(null);\n if (!controller.current) {\n controller.current = createController({\n scrollAxis: props.scrollAxis || ScrollAxis.vertical,\n scrollContainer: props.scrollContainer,\n disabled: props.isDisabled\n });\n } // update scroll container\n\n useEffect(function () {\n if (props.scrollContainer && controller.current) {\n controller.current.updateScrollContainer(props.scrollContainer);\n }\n }, [props.scrollContainer, controller.current]); // disable/enable parallax\n\n useEffect(function () {\n if (props.isDisabled && controller.current) {\n controller.current.disableParallaxController();\n }\n if (!props.isDisabled && controller.current) {\n controller.current.enableParallaxController();\n }\n }, [props.isDisabled, controller.current]); // remove the controller when unmounting\n\n useEffect(function () {\n return function () {\n (controller == null ? void 0 : controller.current) && (controller == null ? void 0 : controller.current.destroy());\n };\n }, []);\n return React.createElement(ParallaxContext.Provider, {\n value: controller.current\n }, props.children);\n}\nexport { Parallax, ParallaxBanner, ParallaxBannerLayer, ParallaxContext, ParallaxProvider, useParallax, useParallaxController };","import React, { useState, useEffect } from 'react';\r\nimport { withPrefix } from 'gatsby';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\n\r\nimport Button from '@mui/material/Button';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport PersonIcon from '@mui/icons-material/Person';\r\n\r\nimport {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle\r\n} from '@mui/material';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\n\r\nimport AddressSearch from './index';\r\n\r\nimport './index.css';\r\n\r\nfunction AddressSearchPopup(props) {\r\n const [showAddressSearch, setShowAddressSearch] = useState(false);\r\n const [addressSearched, setAddressSearched] = useState(false);\r\n\r\n return (\r\n \r\n \r\n \r\n {props.title\r\n ? props.title\r\n : props.mode === 'zip'\r\n ? 'Compare Rates'\r\n : 'Address Search'}\r\n {\r\n if (props.closeFunc) {\r\n props.closeFunc();\r\n }\r\n }}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default AddressSearchPopup;\r\n","import React, { useEffect, useState, useRef } from 'react';\r\n\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { withPrefix } from 'gatsby-link';\r\n\r\nimport { Button } from '@mui/material';\r\nimport { Alert } from '@material-ui/lab';\r\nimport LaunchIcon from '@mui/icons-material/Launch';\r\n\r\nimport ProviderLogo from '../OfferGrid/ProviderLogo';\r\nimport AddressSearch from '../AddressSearch';\r\nimport AddressSearchPopup from '../AddressSearch/AddressSearchPopup';\r\n\r\nimport '../OfferGrid/index.css';\r\n\r\nfunction NoDeregulatedElectric({ serviceAddress, includeAddressSearch }) {\r\n const [showZipPopup, setShowZipPopup] = useState(null);\r\n return serviceAddress ? (\r\n
\r\n {serviceAddress.ElectricProviderList &&\r\n serviceAddress.ElectricProviderList.length ? (\r\n <>\r\n {serviceAddress.Address.State === 'TX' ? (\r\n

\r\n {serviceAddress.Address.Zip} is not in an area of Texas that\r\n participates in deregulated retail electric choice.
{' '}\r\n {includeAddressSearch ? (\r\n \r\n ) : null}\r\n

\r\n ) : (\r\n <>\r\n \r\n We don't have electric plan data for the zip code{' '}\r\n \r\n {serviceAddress.Address.Zip} in {serviceAddress.Address.City},{' '}\r\n {serviceAddress.Address.State}\r\n \r\n .\r\n
{' '}\r\n {includeAddressSearch ? (\r\n \r\n ) : null}\r\n
\r\n

\r\n \r\n )}\r\n\r\n

\r\n You'll need to talk to your electric provider directly about ways to\r\n save on your electric bill. The provider\r\n {serviceAddress.ElectricProviderList.length > 1 ? 's' : ''} below\r\n service\r\n {serviceAddress.ElectricProviderList.length > 1 ? '' : 's'} that\r\n location.\r\n

\r\n\r\n {serviceAddress.ElectricProviderList.map((provider) => (\r\n <>\r\n \r\n {provider.WebsiteUrl ? (\r\n \r\n Visit {provider.DisplayName} \r\n \r\n ) : null}\r\n \r\n ))}\r\n \r\n ) : (\r\n <>\r\n Sorry, there are currently no electric plans available for this area.\r\n \r\n \r\n )}\r\n\r\n {showZipPopup ? (\r\n setShowAddressSearch(null)}\r\n title={'Change Location'}\r\n afterAddressSelected={() => {\r\n //do nothing, stay here\r\n setShowZipPopup(null);\r\n }}\r\n />\r\n ) : null}\r\n
\r\n ) : null;\r\n}\r\nfunction mapStateToProps(state) {\r\n return {\r\n webSocket: state.webSocket,\r\n serviceAddress: state.serviceAddress,\r\n siteConfig: state.commonData.siteConfig\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: {}\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(NoDeregulatedElectric);\r\n","import React from 'react';\r\nimport { withPrefix } from 'gatsby-link';\r\nimport {\r\n Box,\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n IconButton,\r\n TextField\r\n} from '@mui/material';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\n\r\nfunction TermTypePopup({ closeFunc, title }) {\r\n return (\r\n \r\n \r\n {\r\n closeFunc();\r\n }}>\r\n \r\n \r\n \r\n {title ? title : 'Term Length Information'}\r\n \r\n \r\n

\r\n Did you know that you can cancel a long-term contract prior to its\r\n expiration date without penalty or early termination fees if you are\r\n moving to a new address?\r\n

\r\n

\r\n \r\n Texas Customer Protection Rules\r\n {' '}\r\n state:{' '}\r\n \r\n \"A contract is limited to service to a customer at a location\r\n specified in the contract.{' '}\r\n \r\n If the customer moves from the location, the customer is under no\r\n obligation to continue the contract at another location.\r\n {' '}\r\n The REP may require a customer to provide evidence that it is moving\r\n to another location. There must be no early termination fee assessed\r\n to the customer as a result of the customer's relocation if the\r\n customer provides a forwarding address and, if required, reasonable\r\n evidence that the customer no longer occupies the location specified\r\n in the contract.\"\r\n \r\n

\r\n\r\n
\r\n {\r\n closeFunc();\r\n }}>\r\n Continue\r\n \r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default TermTypePopup;\r\n","import React from 'react';\r\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\r\nimport ArrowDropUpIcon from '@mui/icons-material/ArrowDropUp';\r\nimport ArrowRightAltIcon from '@mui/icons-material/ArrowRightAlt';\r\n\r\nfunction SortIcon({ sortColumn, column }) {\r\n return sortColumn && sortColumn.indexOf(column) !== -1 ? (\r\n sortColumn.indexOf('-') === 0 ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : null;\r\n}\r\n\r\nexport default SortIcon;\r\n","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAlertTitleUtilityClass(slot) {\n return generateUtilityClass('MuiAlertTitle', slot);\n}\nconst alertTitleClasses = generateUtilityClasses('MuiAlertTitle', ['root']);\nexport default alertTitleClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from '../zero-styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport Typography from '../Typography';\nimport { getAlertTitleUtilityClass } from './alertTitleClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getAlertTitleUtilityClass, classes);\n};\nconst AlertTitleRoot = styled(Typography, {\n name: 'MuiAlertTitle',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(_ref => {\n let {\n theme\n } = _ref;\n return {\n fontWeight: theme.typography.fontWeightMedium,\n marginTop: -2\n };\n});\nconst AlertTitle = /*#__PURE__*/React.forwardRef(function AlertTitle(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiAlertTitle'\n });\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(AlertTitleRoot, _extends({\n gutterBottom: true,\n component: \"div\",\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default AlertTitle;","import React from 'react';\r\n\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\n\r\nimport { TextField } from '@mui/material';\r\n\r\nimport './index.css';\r\n\r\nfunction UsageHistoryForm({\r\n monthList,\r\n usageHistory,\r\n setUsageHistory,\r\n onUsageChanged\r\n}) {\r\n return (\r\n
\r\n
\r\n {monthList.map((month, monthIndex) => (\r\n {\r\n setUsageHistory({\r\n ...usageHistory,\r\n [month]: event.target.value\r\n });\r\n if (onUsageChanged) {\r\n onUsageChanged({\r\n ...usageHistory,\r\n [month]: event.target.value\r\n });\r\n }\r\n }}\r\n onKeyDown={(event) => {\r\n if (event.keyCode === 13) {\r\n const nextInput = document.getElementById(\r\n 'usageHistory_' + (monthIndex + 1)\r\n );\r\n if (nextInput) {\r\n nextInput.focus();\r\n }\r\n }\r\n }}\r\n />\r\n ))}\r\n \r\n
\r\n );\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n monthList: state.commonData.monthList\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {};\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UsageHistoryForm);\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport Loadable from '@loadable/component';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\n\r\nimport {\r\n Box,\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n IconButton,\r\n TextField\r\n} from '@mui/material';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport Autocomplete from '@mui/material/Autocomplete';\r\n\r\nimport FormControl from '@mui/material/FormControl';\r\nimport Select from '@mui/material/Select';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport Checkbox from '@mui/material/Checkbox';\r\nimport WifiAnimation from '../WifiAnimation';\r\nimport { Alert, AlertTitle } from '@mui/material';\r\n\r\nimport * as dataApi from '../../api/dataApi';\r\n\r\nimport './index.css';\r\n\r\nimport UsageHistoryForm from './UsageHistoryForm';\r\n\r\nconst _chartOptions = {\r\n chart: {\r\n id: 'basic-bar',\r\n toolbar: {\r\n show: false\r\n }\r\n },\r\n plotOptions: {\r\n bar: {\r\n columnWidth: '50%',\r\n endingShape: 'arrow'\r\n }\r\n },\r\n stroke: {\r\n width: [4, 0, 0]\r\n },\r\n xaxis: {\r\n categories: [\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December'\r\n ]\r\n },\r\n markers: {\r\n size: 6,\r\n strokeWidth: 3,\r\n fillOpacity: 0,\r\n strokeOpacity: 0,\r\n hover: {\r\n size: 8\r\n }\r\n },\r\n yaxis: {\r\n tickAmount: 5,\r\n min: 0,\r\n max: 100\r\n }\r\n};\r\n\r\nfunction UsageHistoryEntry({\r\n serviceAddress,\r\n siteConfig,\r\n showUsageHistoryPrompt,\r\n setShowUsageHistoryPrompt,\r\n usageHistory,\r\n setUsageHistory,\r\n monthList\r\n}) {\r\n const [saving, setSaving] = useState(false);\r\n const [saveError, setSaveError] = useState(null);\r\n const [chartOptions, setChartOptions] = useState(_chartOptions);\r\n const [chartData, setChartData] = useState(null);\r\n const usageEditTimeout = useRef();\r\n\r\n useEffect(() => {}, [serviceAddress]);\r\n\r\n useEffect(() => {\r\n usageEditTimeout.current = setTimeout(() => {\r\n let minUsage = null;\r\n let maxUsage = null;\r\n let _chartData = {\r\n name: 'Usage in kWh',\r\n type: 'line',\r\n data: []\r\n };\r\n\r\n monthList.map((month) => {\r\n if (!isNaN(usageHistory[month])) {\r\n if (usageHistory[month] < minUsage || minUsage === null) {\r\n minUsage = parseFloat(usageHistory[month]);\r\n }\r\n\r\n if (usageHistory[month] > maxUsage || maxUsage === null) {\r\n maxUsage = parseFloat(usageHistory[month]);\r\n }\r\n\r\n _chartData.data.push(parseFloat(usageHistory[month]));\r\n } else {\r\n _chartData.data.push(null);\r\n }\r\n });\r\n\r\n console.log(maxUsage);\r\n\r\n if (minUsage !== null && maxUsage !== null) {\r\n setChartOptions({\r\n ...chartOptions,\r\n yaxis: { ...chartOptions.yaxis, max: maxUsage + 1000 }\r\n });\r\n\r\n setChartData({ ..._chartData });\r\n }\r\n }, 500);\r\n }, [usageHistory]);\r\n\r\n useEffect(() => {\r\n // cleanup function to cancel the timeout if it hasn't finished.\r\n return () => {\r\n if (usageEditTimeout.current) {\r\n clearTimeout(usageEditTimeout.current);\r\n }\r\n };\r\n }, []);\r\n\r\n return showUsageHistoryPrompt ? (\r\n \r\n \r\n setShowUsageHistoryPrompt(false)}>\r\n \r\n \r\n Your Usage History\r\n \r\n \r\n {usageHistory && usageHistory.SmartMeter ? (\r\n \r\n Success!\r\n The usage history below was pulled directly from your smart meter.\r\n \r\n ) : (\r\n

\r\n Enter your usage history in the form below to find the best plan for\r\n you based on your actual usage.\r\n

\r\n )}\r\n\r\n \r\n\r\n {chartOptions && chartData ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n
\r\n \r\n <>\r\n {saveError ?
{saveError}
: null}\r\n {\r\n setShowUsageHistoryPrompt(false);\r\n }}>\r\n {saving ? 'Calculating...' : 'View Plans'}\r\n \r\n setShowUsageHistoryPrompt(false)}\r\n variant=\"outlined\">\r\n Close\r\n \r\n \r\n
\r\n \r\n ) : null;\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n webSocket: state.webSocket,\r\n serviceAddress: state.serviceAddress,\r\n texasREPList: state.commonData.texasREPList,\r\n siteConfig: state.commonData.siteConfig,\r\n monthList: state.commonData.monthList\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {};\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UsageHistoryEntry);\r\n\r\nconst LoadableChart = Loadable(() => import('react-apexcharts'));\r\n","import React, { isValidElement, useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport Alert from '@mui/material/Alert';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\n\r\nimport * as dataApi from '../../api/dataApi';\r\n\r\nfunction IntroText({\r\n serviceAddress,\r\n siteConfig,\r\n trackAs,\r\n text,\r\n mobileText,\r\n onVisibleChange\r\n}) {\r\n const cookie = trackAs ? 'sc-intro-' + trackAs : null;\r\n const [visible, setVisible] = useState(false);\r\n\r\n const [interpolatedValues, setInterpolatedValues] = useState();\r\n\r\n useEffect(() => {\r\n if (cookie) {\r\n const cookieValue = dataApi.getCookie(cookie);\r\n setVisible(cookieValue != '1');\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (serviceAddress) {\r\n setInterpolatedValues({\r\n text: interpolate(text),\r\n mobileText: interpolate(mobileText)\r\n });\r\n }\r\n }, [text, mobileText, serviceAddress]);\r\n\r\n useEffect(() => {\r\n if (onVisibleChange) {\r\n onVisibleChange(visible);\r\n }\r\n }, [visible]);\r\n\r\n function interpolate(value) {\r\n return value\r\n ? value\r\n .split('{propertyName}')\r\n .join(\r\n serviceAddress.Address && serviceAddress.Address.PropertyName\r\n ? serviceAddress.Address.PropertyName\r\n : 'your new community'\r\n )\r\n .split('{propertyNameAllCaps}')\r\n .join(\r\n serviceAddress.Address && serviceAddress.Address.PropertyName\r\n ? serviceAddress.Address.PropertyName.toUpperCase()\r\n : 'YOUR NEW COMMUNITY'\r\n )\r\n .split('{brand}')\r\n .join(siteConfig.brand ? siteConfig.brand : '')\r\n : null;\r\n }\r\n\r\n return visible && interpolatedValues ? (\r\n <>\r\n {interpolatedValues.text ? (\r\n \r\n {/* {cookie ? (\r\n {\r\n dataApi.setCookie(cookie, '1');\r\n setVisible(false);\r\n }}>\r\n \r\n \r\n ) : null} */}\r\n \r\n \r\n ) : null}\r\n {interpolatedValues.mobileText ? (\r\n \r\n {cookie ? (\r\n {\r\n dataApi.setCookie(cookie, '1');\r\n setVisible(false);\r\n }}>\r\n \r\n \r\n ) : null}\r\n \r\n \r\n ) : null}\r\n \r\n ) : null;\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n serviceAddress: state.serviceAddress,\r\n siteConfig: state.commonData.siteConfig\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: {}\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(IntroText);\r\n","import React, { useState, useEffect } from 'react';\r\nimport { withPrefix } from 'gatsby-link';\r\nimport Button from '@mui/material/Button';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport InfoIcon from '@mui/icons-material/Info';\r\n\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport FormLabel from '@mui/material/FormLabel';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport FormGroup from '@mui/material/FormGroup';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport Checkbox from '@mui/material/Checkbox';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport { TextField } from '@mui/material';\r\nimport InputAdornment from '@mui/material/InputAdornment';\r\nimport { Scrollbars } from 'react-custom-scrollbars';\r\nimport { renderTrackVerticalDefault } from 'react-custom-scrollbars/lib/Scrollbars/defaultRenderElements';\r\nimport Menu from '@mui/material/Menu';\r\nimport MenuItem from '@mui/material/MenuItem';\r\n\r\nimport * as dataApi from '../../api/dataApi';\r\n\r\nimport ConnectSmartMeterButton from '../OfferGrid/ConnectSmartMeterButton';\r\nimport UsageHistoryForm from '../UsageHistoryEntry/UsageHistoryForm';\r\n\r\nimport './FiltersElectric.css';\r\nimport { providerLogoBaseUrl } from '../OfferGrid/ProviderLogo';\r\n\r\nfunction UsageSelection({\r\n usageSetting,\r\n setUsageSetting,\r\n estimatedUsage,\r\n setEstimatedUsage,\r\n selectedUsage,\r\n setSelectedUsage,\r\n serviceAddress,\r\n usageHistory,\r\n setUsageHistory,\r\n setShowUsageHistoryRequest,\r\n lastBillUsage,\r\n setLastBillUsage,\r\n lastBillAmount,\r\n setLastBillAmount,\r\n usageHistoryMode,\r\n setUsageHistoryMode,\r\n setShowUsageHistoryPrompt,\r\n setLastSelectedUsage,\r\n setFiltersExpanded,\r\n tooltips,\r\n quickFilter,\r\n setQuickFilter\r\n}) {\r\n const [showUsageHistoryForm, setShowUsageHistoryForm] = useState(false);\r\n const smtEnabled = false;\r\n const [showCustom, setShowCustom] = useState(\r\n true\r\n //selectedUsage !== 500 && selectedUsage !== 1000 && selectedUsage !== 2000\r\n );\r\n\r\n useEffect(() => {\r\n if (showCustom) {\r\n //setCookie('sc-show-custom', '1');\r\n }\r\n }, [showCustom]);\r\n\r\n return (\r\n
\r\n
\r\n
Choose Your Display Preference:
\r\n\r\n setQuickFilter('all')}\r\n className={quickFilter !== 'no-gimmicks' ? 'selected' : ''}>\r\n Show ALL Plans\r\n \r\n setQuickFilter('no-gimmicks')}\r\n className={quickFilter === 'no-gimmicks' ? 'selected' : ''}>\r\n Show ONLY Fixed Rate Plans\r\n
\r\n No Pricing Gimmicks\r\n \r\n
\r\n\r\n
\r\n
+
\r\n
Choose Your Usage Estimate:
\r\n\r\n
\r\n {\r\n setSelectedUsage(500);\r\n setLastSelectedUsage(500);\r\n setUsageSetting('estimated');\r\n setShowUsageHistoryForm(false);\r\n }}\r\n variant=\"outlined\"\r\n className={\r\n selectedUsage === 500 && selectedUsage !== estimatedUsage\r\n ? 'selected'\r\n : ''\r\n }>\r\n \r\n Apartment\r\n 500 kWh\r\n \r\n\r\n {\r\n setSelectedUsage(1000);\r\n setLastSelectedUsage(1000);\r\n setUsageSetting('estimated');\r\n setShowUsageHistoryForm(false);\r\n }}\r\n variant=\"outlined\"\r\n className={\r\n selectedUsage === 1000 &&\r\n selectedUsage !== estimatedUsage &&\r\n usageSetting !== 'actual'\r\n ? 'selected'\r\n : ''\r\n }>\r\n \r\n Small House\r\n 1000 kWh\r\n \r\n\r\n {\r\n setSelectedUsage(2000);\r\n setLastSelectedUsage(2000);\r\n setUsageSetting('estimated');\r\n setShowUsageHistoryForm(false);\r\n }}\r\n variant=\"outlined\"\r\n className={\r\n selectedUsage === 2000 && selectedUsage !== estimatedUsage\r\n ? 'selected'\r\n : ''\r\n }>\r\n \r\n Large House\r\n 2000 kWh\r\n \r\n
\r\n
\r\n\r\n
\r\n
OR
\r\n\r\n {showCustom ? (\r\n <>\r\n {serviceAddress &&\r\n serviceAddress.Address &&\r\n serviceAddress.Address.ResidentID &&\r\n serviceAddress.Address.PropertyName ? (\r\n
\r\n {\r\n setSelectedUsage(661);\r\n setLastSelectedUsage(661);\r\n setUsageSetting('estimated');\r\n setShowUsageHistoryForm(false);\r\n }}\r\n variant=\"outlined\"\r\n className={\r\n selectedUsage === 661 && selectedUsage !== estimatedUsage\r\n ? 'selected'\r\n : ''\r\n }>\r\n Average Usage at {serviceAddress.Address.PropertyName}\r\n 661 kWh\r\n \r\n
\r\n ) : (\r\n \r\n )}\r\n\r\n \r\n\r\n \r\n \r\n ) : (\r\n
\r\n setShowCustom(true)}>\r\n Click here\r\n {' '}\r\n here to use a custom usage\r\n
\r\n )}\r\n
\r\n\r\n {showUsageHistoryForm ? (\r\n
\r\n {usageHistoryMode || !smtEnabled ? (\r\n

\r\n Enter your 12-month average usage above, or enter your\r\n month-by-month usage below.\r\n
\r\n setUsageSetting('actual')}\r\n />\r\n

\r\n ) : (\r\n
\r\n

\r\n If you’d like to see the{' '}\r\n \r\n True Cost\r\n {' '}\r\n of these plans based on your actual usage, we can pull your\r\n history electronically from Smart Meter Texas, or you can enter\r\n it yourself by clicking below.\r\n

\r\n
\r\n \r\n setUsageHistoryMode('manual')}>\r\n Enter Manually\r\n \r\n
\r\n
\r\n )}\r\n
\r\n ) : usageSetting === 'last-bill' ? (\r\n
\r\n

\r\n Enter your last bill amounts below to compare plans based on how\r\n much you will save. For an even more accurate comparison,{' '}\r\n setUsageSetting('actual')}>\r\n enter your last 12 months of usage\r\n \r\n .\r\n

\r\n {/* {\r\n //open address lookup\r\n }}\r\n variant=\"outlined\">\r\n
Zip Code
\r\n
\r\n \r\n
\r\n */}\r\n
\r\n {\r\n document.getElementById('lastBillAmount').focus();\r\n }}\r\n variant=\"outlined\">\r\n
Last Bill Amount
\r\n
\r\n {\r\n if (event.target.value) {\r\n setLastBillAmount(parseFloat(event.target.value));\r\n } else {\r\n setLastBillAmount(null);\r\n }\r\n }}\r\n variant=\"standard\"\r\n id=\"lastBillAmount\"\r\n key=\"lastBillAmount\"\r\n autoFocus={!lastBillAmount}\r\n onFocus={(event) => event.target.select()}\r\n type=\"number\"\r\n inputProps={{ inputMode: 'numeric' }}\r\n InputProps={{\r\n startAdornment: (\r\n $\r\n )\r\n }}\r\n />\r\n
\r\n \r\n {\r\n if (lastBillUsage) {\r\n setSelectedUsage(lastBillUsage);\r\n }\r\n\r\n if (typeof window !== 'undefined') {\r\n document.getElementById('lastBillUsage').focus();\r\n }\r\n }}\r\n variant=\"outlined\">\r\n
Last Bill Usage
\r\n
\r\n {\r\n if (event.target.value) {\r\n setLastBillUsage(\r\n parseFloat(event.target.value.substring(0, 5))\r\n );\r\n } else {\r\n setLastBillUsage(null);\r\n }\r\n }}\r\n variant=\"standard\"\r\n id=\"lastBillUsage\"\r\n key=\"lastBillUsage\"\r\n autoFocus={lastBillAmount && !lastBillUsage}\r\n onFocus={(event) => event.target.select()}\r\n type=\"number\"\r\n inputProps={{ inputMode: 'numeric', maxLength: 5 }}\r\n InputProps={{\r\n endAdornment: (\r\n kWh\r\n )\r\n }}\r\n />\r\n
\r\n \r\n
\r\n \r\n \r\n {!lastBillAmount || !lastBillUsage ? (\r\n <>\r\n \r\n document.getElementById('lastBillAmount').focus()\r\n }>\r\n Last Bill Amount\r\n {' '}\r\n and{' '}\r\n \r\n document.getElementById('lastBillUsage').focus()\r\n }>\r\n Last Usage Amount\r\n {' '}\r\n are both required\r\n \r\n ) : (\r\n <>\r\n Scroll down to view plans\r\n setFiltersExpanded(false)}>\r\n Close Filters\r\n \r\n \r\n )}\r\n
\r\n
\r\n ) : null}\r\n \r\n );\r\n}\r\n\r\nfunction getContentHeight() {\r\n const contentHeight =\r\n (typeof window !== 'undefined' && window.innerHeight) ||\r\n document.documentElement.clientHeight ||\r\n document.body.clientHeight;\r\n\r\n return contentHeight - 120;\r\n}\r\n\r\nfunction FiltersElectric({\r\n filtersExpanded,\r\n usageSetting,\r\n setUsageSetting,\r\n estimatedUsage,\r\n setEstimatedUsage,\r\n selectedUsage,\r\n setSelectedUsage,\r\n serviceAddress,\r\n usageHistory,\r\n setUsageHistory,\r\n setShowUsageHistoryRequest,\r\n lastBillUsage,\r\n setLastBillUsage,\r\n lastBillAmount,\r\n setLastBillAmount,\r\n usageHistoryMode,\r\n setUsageHistoryMode,\r\n setShowUsageHistoryPrompt,\r\n setLastSelectedUsage,\r\n setFiltersExpanded,\r\n allOptionSelected,\r\n selectedRateType,\r\n selectedTermLength,\r\n filterCounts,\r\n selectedProviderList,\r\n tooltips,\r\n setSelectedRateType,\r\n setSelectedTermLength,\r\n setSelectedProviderList,\r\n setAllOptionSelected,\r\n setFiltersClicked,\r\n quickFilterList,\r\n quickFilter,\r\n setQuickFilter,\r\n mobile,\r\n offerList\r\n}) {\r\n const [showQuickFiltersMenu, setShowQuickFiltersMenu] = useState(null);\r\n\r\n function getTermLengthKeys() {\r\n let termLengthList = Object.keys(selectedTermLength);\r\n\r\n termLengthList.sort((a, b) => {\r\n let valueA = a === 'Monthly' ? 1 : parseInt(a.split(' ')[0]);\r\n let valueB = b === 'Monthly' ? 1 : parseInt(b.split(' ')[0]);\r\n\r\n let result = valueA > valueB ? 1 : valueA < valueB ? -1 : 0;\r\n\r\n return result;\r\n });\r\n\r\n return termLengthList;\r\n }\r\n\r\n function getProviderKeys() {\r\n let providerList = Object.keys(selectedProviderList);\r\n\r\n providerList.sort((a, b) => {\r\n let result = a > b ? 1 : a < b ? -1 : 0;\r\n\r\n return result;\r\n });\r\n\r\n return providerList;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n\r\n

\r\n {mobile ? (\r\n
\r\n setShowQuickFiltersMenu(event.currentTarget)}>\r\n {quickFilter === 'all'\r\n ? 'All Plans'\r\n : quickFilterList.filter(\r\n (_quickFilter) => _quickFilter.value === quickFilter\r\n )[0].label}{' '}\r\n \r\n \r\n setShowQuickFiltersMenu(null)}>\r\n {quickFilterList\r\n .filter((_quickFilter) => !_quickFilter.hideInQuickFilters)\r\n .map((_quickFilter) =>\r\n !_quickFilter.requiredRateType ||\r\n (selectedRateType &&\r\n selectedRateType.hasOwnProperty(\r\n _quickFilter.requiredRateType\r\n )) ? (\r\n {\r\n setQuickFilter(_quickFilter.value);\r\n setShowQuickFiltersMenu(null);\r\n }}>\r\n {_quickFilter.value === 'all'\r\n ? 'All Plans'\r\n : _quickFilter.label}\r\n \r\n ) : null\r\n )}\r\n \r\n
\r\n ) : null}\r\n\r\n \r\n

\r\n\r\n {selectedTermLength ? (\r\n
\r\n \r\n Term (Contract Length)\r\n \r\n \r\n setAllOptionSelected({\r\n ...allOptionSelected,\r\n termLength: !allOptionSelected.termLength\r\n })\r\n }\r\n name=\"ALL\"\r\n color=\"primary\"\r\n disabled={allOptionSelected.termLength}\r\n />\r\n }\r\n label=\"ALL\"\r\n />\r\n\r\n {getTermLengthKeys().map((termLength) => (\r\n {\r\n setSelectedTermLength({\r\n ...selectedTermLength,\r\n [termLength]:\r\n selectedTermLength[termLength] === true\r\n ? false\r\n : true\r\n });\r\n setFiltersClicked(true);\r\n }}\r\n name={termLength}\r\n color=\"primary\"\r\n />\r\n }\r\n label={\r\n termLength +\r\n (filterCounts && filterCounts.termLength\r\n ? ' (' + filterCounts.termLength[termLength] + ')'\r\n : '')\r\n }\r\n disabled={\r\n !filterCounts ||\r\n !filterCounts.termLength ||\r\n !filterCounts.termLength[termLength]\r\n }\r\n />\r\n ))}\r\n \r\n \r\n
\r\n ) : null}\r\n\r\n {quickFilterList ? (\r\n
\r\n \r\n Specific Plan Features\r\n \r\n {quickFilterList\r\n .filter(\r\n (_quickFilter) =>\r\n !_quickFilter.hideInQuickFilters &&\r\n (!_quickFilter.requiredRateType ||\r\n (selectedRateType &&\r\n selectedRateType.hasOwnProperty(\r\n _quickFilter.requiredRateType\r\n ))) &&\r\n (!_quickFilter.func ||\r\n _quickFilter.func(\r\n offerList,\r\n selectedTermLength,\r\n allOptionSelected\r\n ).length)\r\n )\r\n .map((_quickFilter) => (\r\n {\r\n setQuickFilter(_quickFilter.value);\r\n setFiltersClicked(true);\r\n }}\r\n name={_quickFilter.label}\r\n color=\"primary\"\r\n />\r\n }\r\n disabled={\r\n _quickFilter.value === 'all' && quickFilter === 'all'\r\n }\r\n label={\r\n _quickFilter.label +\r\n (_quickFilter.func\r\n ? ' (' +\r\n _quickFilter.func(\r\n offerList,\r\n selectedTermLength,\r\n allOptionSelected\r\n ).length +\r\n ')'\r\n : '')\r\n }\r\n />\r\n ))}\r\n \r\n \r\n
\r\n ) : null}\r\n\r\n {selectedProviderList ? (\r\n
\r\n {offerList &&\r\n offerList.length &&\r\n getProviderKeys().map((providerName) => (\r\n
\r\n {\r\n setSelectedProviderList({\r\n ...selectedProviderList,\r\n [providerName]:\r\n selectedProviderList[providerName] === true\r\n ? false\r\n : true\r\n });\r\n\r\n setFiltersClicked(true);\r\n }}>\r\n offer.ProviderName === providerName\r\n )[0].LogoFile\r\n }\r\n alt={providerName}\r\n />\r\n \r\n
\r\n ))}\r\n {/* \r\n Provider\r\n \r\n \r\n setAllOptionSelected({\r\n ...allOptionSelected,\r\n provider: !allOptionSelected.provider\r\n })\r\n }\r\n name=\"ALL\"\r\n color=\"primary\"\r\n disabled={allOptionSelected.provider}\r\n />\r\n }\r\n label=\"ALL\"\r\n />\r\n\r\n {offerList &&\r\n offerList.length &&\r\n getProviderKeys().map((providerName) => (\r\n\r\n {\r\n setSelectedProviderList({\r\n ...selectedProviderList,\r\n [providerName]:\r\n selectedProviderList[providerName] === true\r\n ? false\r\n : true\r\n });\r\n\r\n setFiltersClicked(true);\r\n }}\r\n color=\"primary\"\r\n name={providerName}\r\n />\r\n }\r\n label={\r\n providerName +\r\n (filterCounts && filterCounts.provider\r\n ? ' (' + filterCounts.provider[providerName] + ')'\r\n : '')\r\n }\r\n disabled={\r\n !filterCounts ||\r\n !filterCounts.provider ||\r\n !filterCounts.provider[providerName]\r\n }\r\n />\r\n ))}\r\n \r\n */}\r\n
\r\n ) : null}\r\n\r\n {/* {selectedRateType ? (\r\n
\r\n \r\n Rate Type:\r\n \r\n \r\n setAllOptionSelected({\r\n ...allOptionSelected,\r\n rateType: !allOptionSelected.rateType\r\n })\r\n }\r\n name=\"ALL\"\r\n color=\"primary\"\r\n disabled={allOptionSelected.rateType}\r\n />\r\n }\r\n label=\"ALL\"\r\n />\r\n\r\n {Object.keys(selectedRateType).map((rateType) => (\r\n {\r\n setSelectedRateType({\r\n ...selectedRateType,\r\n [rateType]:\r\n selectedRateType[rateType] === true ? false : true\r\n });\r\n setFiltersClicked(true);\r\n }}\r\n name={rateType}\r\n color=\"primary\"\r\n />\r\n }\r\n label={\r\n rateType +\r\n (filterCounts && filterCounts.rateType\r\n ? ' (' + filterCounts.rateType[rateType] + ')'\r\n : '')\r\n }\r\n disabled={\r\n !filterCounts ||\r\n !filterCounts.rateType ||\r\n filterCounts.rateType[rateType] === 0\r\n }\r\n />\r\n ))}\r\n \r\n \r\n\r\n {\r\n setFiltersExpanded(false);\r\n setTimeout(() => {\r\n if (typeof window !== 'undefined') {\r\n const top = document.getElementById('offerRowStart');\r\n if (top) {\r\n dataApi.scrollToElementInPage(top, -145, false);\r\n }\r\n }\r\n }, 200);\r\n }}>\r\n Close Filters\r\n \r\n
\r\n ) : null} */}\r\n \r\n );\r\n}\r\n\r\nfunction FiltersElectricWrapper(props) {\r\n const [scrollbarHeight, setScrollbarHeight] = useState(getContentHeight());\r\n\r\n useEffect(() => {\r\n // timeoutId for debounce mechanism\r\n let timeoutId = null;\r\n const resizeListener = () => {\r\n // prevent execution of previous setTimeout\r\n clearTimeout(timeoutId);\r\n\r\n timeoutId = setTimeout(() => setScrollbarHeight(getContentHeight()), 150);\r\n };\r\n // set resize listener\r\n window.addEventListener('resize', resizeListener);\r\n\r\n // clean up function\r\n return () => {\r\n // remove resize listener\r\n window.removeEventListener('resize', resizeListener);\r\n };\r\n }, []);\r\n\r\n return (\r\n <>\r\n {props.mobile ? (\r\n
\r\n \r\n {/*
\r\nShowing {filteredOfferList.length} of {offerList.length}{' '}\r\noffers\r\n
*/}\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n ) : null}\r\n\r\n {!props.mobile ? (\r\n \r\n {/*
\r\nShowing {filteredOfferList.length} of {offerList.length}{' '}\r\noffers\r\n
*/}\r\n\r\n
\r\n (\r\n \r\n )}\r\n renderTrackVertical={(props) =>\r\n renderTrackVerticalDefault({\r\n ...props,\r\n className: 'track-vertical'\r\n })\r\n }>\r\n \r\n \r\n
\r\n \r\n ) : null}\r\n \r\n );\r\n}\r\n\r\nexport default FiltersElectricWrapper;\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { Alert, Button } from '@mui/material';\r\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { withPrefix } from 'gatsby-link';\r\n\r\nimport * as webSocketActions from '../../redux/actions/webSocketActions';\r\n\r\nimport ThousandKWhTrap from '../LandingSC/ThousandKWhTrap';\r\nimport Rollercoaster from '../LandingSC/Rollercoaster';\r\nimport DontBeAverage from '../LandingSC/DontBeAverage';\r\n\r\nimport '../TXLandingPage/index.css';\r\nimport './SCLandingInline.css';\r\n\r\nfunction SCLandingInline({ truePrice }) {\r\n const activeTimeout = useRef();\r\n const [activeSection, setActiveSection] = useState(null);\r\n\r\n function updateActiveSection(section) {\r\n if (activeTimeout.current) {\r\n clearTimeout(activeTimeout.current);\r\n }\r\n\r\n setActiveSection(null);\r\n\r\n if (section) {\r\n if (activeSection) {\r\n activeTimeout.current = setTimeout(() => {\r\n setActiveSection(section);\r\n }, 0);\r\n } else {\r\n setActiveSection(section);\r\n }\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {truePrice ? (\r\n \r\n In Texas, you have a choice when it comes to your electric provider.\r\n But shoppers need to be careful, the advertised prices found on most\r\n comparison sites and on the Electricity Facts Label (EFL) can\r\n sometimes be misleading because they only show you what you’ll pay at\r\n exactly those usage points. Use more or less than that exact amount\r\n and your price can go up, sometimes significantly.\r\n
\r\n
\r\n To help you better understand each plan's actual pricing we’ve\r\n converted those advertised prices into what we call a “True Price”.{' '}\r\n
\r\n
\r\n The True Price column below shows you what the average price will be\r\n for that plan over a 12-month period after taking seasonal usage\r\n fluctuations into account. This True Price is a much better indicator\r\n of what you’ll actually pay over that time than the advertised prices\r\n are.\r\n
\r\n ) : null}\r\n\r\n
\r\n

\r\n Knowledge is Power - how to Save ${' '}\r\n on your next electric plan\r\n

\r\n
    \r\n
  • \r\n \r\n setActiveSection(activeSection === 'trap' ? null : 'trap')\r\n }>\r\n Avoid the 1,000 kWh trap by looking at more than\r\n one price point\r\n \r\n \r\n
  • \r\n
  • \r\n \r\n setActiveSection(\r\n activeSection === 'rollercoaster' ? null : 'rollercoaster'\r\n )\r\n }>\r\n Be sure to account for seasonal usage fluctuations{' '}\r\n \r\n \r\n
  • \r\n
  • \r\n \r\n setActiveSection(activeSection === 'average' ? null : 'average')\r\n }>\r\n Shop using our True Price rate instead of the\r\n lowest advertised price \r\n \r\n
  • \r\n
\r\n\r\n {activeSection ? (\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n ) : null}\r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n webSocket: state.webSocket,\r\n serviceAddress: state.serviceAddress,\r\n siteConfig: state.commonData.siteConfig\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: {\r\n pageLoading: bindActionCreators(webSocketActions.pageLoading, dispatch)\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SCLandingInline);\r\n","import React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\n\r\nimport { getFullCostDetail } from '../../api/offerCalc';\r\n\r\nimport FeaturedOfferElectric from '../OfferGrid/FeaturedOfferElectric';\r\n\r\nexport function FeaturedOffersElectric({ serviceAddress }) {\r\n const [featuredOfferList, setFeaturedOfferList] = useState(null);\r\n const [priceColumn, setPriceColumn] = useState('PriceAt1000');\r\n const [usage, setUsage] = useState(1000);\r\n const [usageSetting, setUsageSetting] = useState('estimated');\r\n useEffect(() => {\r\n console.log('usage changed 2', usage, priceColumn);\r\n\r\n if (serviceAddress && serviceAddress.OfferDictionary) {\r\n if (serviceAddress.OfferDictionary.Electric) {\r\n let _offerList = serviceAddress.OfferDictionary.Electric.filter(\r\n (offer) => offer.TermLength >= 12\r\n ).map((offer) =>\r\n getFullCostDetail(\r\n offer,\r\n usage,\r\n serviceAddress,\r\n null,\r\n 'estimated',\r\n null\r\n )\r\n );\r\n\r\n // if (typeof window !== 'undefined' && window.innerWidth > 820) {\r\n // _offerList = _offerList.filter((offer) => offer.ApiID !== 603);\r\n // }\r\n\r\n _offerList.sort(\r\n (offerA, offerB) => offerA[priceColumn] - offerB[priceColumn]\r\n );\r\n\r\n const bestAdvertisedPriceList = _offerList.filter(\r\n (offer) => offer[priceColumn] === _offerList[0][priceColumn]\r\n );\r\n\r\n const bestAdvertisedPrice =\r\n bestAdvertisedPriceList.length === 1\r\n ? { ...bestAdvertisedPriceList[0] }\r\n : {\r\n ...bestAdvertisedPriceList[\r\n Math.floor(Math.random() * bestAdvertisedPriceList.length)\r\n ]\r\n };\r\n\r\n const mostPopular = _offerList.filter(\r\n (_offer) => _offer.ProviderID === 75593\r\n )[0]; //Already sorted by advertised price\r\n\r\n const bestPrepaid = {\r\n ..._offerList.filter((offer) => offer.IsPrepaid)[0]\r\n };\r\n\r\n _offerList.sort(\r\n (offerA, offerB) => offerA.TrueCost_Dollars - offerB.TrueCost_Dollars\r\n );\r\n\r\n const bestTruePrice = { ..._offerList[0] };\r\n\r\n _offerList.sort(\r\n (offerA, offerB) =>\r\n offerB.RenewableContent - offerA.RenewableContent ||\r\n offerA[priceColumn] - offerB[priceColumn]\r\n );\r\n\r\n const bestPercentRenewable = { ..._offerList[0] };\r\n\r\n if (mostPopular) {\r\n setFeaturedOfferList([\r\n {\r\n label: 'Lowest Advertised Price',\r\n color: '#ed7d31',\r\n ...bestAdvertisedPrice\r\n },\r\n {\r\n label: 'Most Popular Brand',\r\n color: '#0070c0',\r\n ...mostPopular\r\n },\r\n {\r\n label: '100% Renewable',\r\n color: '#00b050',\r\n ...bestPercentRenewable\r\n },\r\n {\r\n label: 'Best Year Round Value',\r\n color: '#7030a0',\r\n ...bestTruePrice\r\n }\r\n ]);\r\n } else {\r\n setFeaturedOfferList([\r\n {\r\n label: 'Lowest Advertised Price',\r\n color: '#ed7d31',\r\n ...bestAdvertisedPrice\r\n },\r\n {\r\n label: 'Best Year Round Value',\r\n color: '#0070c0',\r\n ...bestTruePrice,\r\n isTrueCost: true\r\n },\r\n {\r\n label: '100% Renewable',\r\n color: '#00b050',\r\n ...bestPercentRenewable\r\n },\r\n {\r\n label: 'Best Prepaid - No Deposit Plan',\r\n color: '#7030a0',\r\n ...bestPrepaid\r\n }\r\n ]);\r\n }\r\n } else {\r\n setFeaturedOfferList([]);\r\n }\r\n }\r\n }, [serviceAddress, priceColumn, usage]);\r\n\r\n return featuredOfferList ? (\r\n
    \r\n {featuredOfferList.map((offer) => (\r\n \r\n ))}\r\n
\r\n ) : null;\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n webSocket: state.webSocket,\r\n serviceAddress: state.serviceAddress,\r\n siteConfig: state.commonData.siteConfig\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: {}\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(FeaturedOffersElectric);\r\n","import React, { useEffect, useState, useRef } from 'react';\r\n\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { withPrefix } from 'gatsby-link';\r\n\r\nimport Button from '@mui/material/Button';\r\nimport AppBar from '@mui/material/AppBar';\r\n\r\nimport Tooltip from '@mui/material/Tooltip';\r\n\r\nimport InfoIcon from '@mui/icons-material/Info';\r\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\r\n\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport Tabs from '@mui/material/Tabs';\r\nimport Tab from '@mui/material/Tab';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport ArrowRightAltIcon from '@mui/icons-material/ArrowRightAlt';\r\n\r\nimport * as dataApi from '../../api/dataApi';\r\nimport * as offerCalc from '../../api/offerCalc';\r\nimport * as webSocketActions from '../../redux/actions/webSocketActions';\r\n\r\nimport SortIcon from '../OfferGrid/SortIcon';\r\nimport OfferRowElectric from '../OfferGrid/OfferRowElectric';\r\nimport UsageHistoryEntry from '../UsageHistoryEntry';\r\nimport IntroText from '../IntroText';\r\nimport TermTypePopup from './TermTypePopup';\r\nimport FiltersElectric from './FiltersElectric';\r\nimport SCLandingInline from './SCLandingInline';\r\n\r\nimport '../OfferGrid/index.css';\r\nimport './SCLandingInline.css';\r\nimport AddressSearch from '../AddressSearch';\r\nimport ProviderLogo from '../OfferGrid/ProviderLogo';\r\nimport FeaturedOffersElectric from './FeaturedOffersElectric';\r\nimport AddressSearchPopup from '../AddressSearch/AddressSearchPopup';\r\nimport NoDeregulatedElectric from './NoDeregulatedElectric';\r\nimport FeaturedOffer from '../OfferGrid/FeaturedOfferElectric';\r\n\r\nconst tooltips = {\r\n AdvertisedPrice:\r\n \"The advertised price is what most sites show to make a plan appear cheaper than it is. It can be misleading because it assumes you'll use the same amount of energy each month without considering how your usage actually varies seasonally.\",\r\n TruePrice:\r\n 'True Price is calculated based on a seasonal usage curve, which will more closely match your actual usage pattern from month to month.',\r\n TrueCost:\r\n 'True Cost offsets the advertised price with a projected seasonal usage curve to more accurately reflect what your average bill will look like for each plan.',\r\n TermType:\r\n 'Did you know that you can cancel a long-term contract prior to its expiration date without penalty or early termination fees if you are moving to a new address?'\r\n};\r\n\r\nfunction getTermLengthLabel(termLength) {\r\n return termLength == null\r\n ? 'Unknown'\r\n : termLength && termLength > 1\r\n ? termLength + ' months'\r\n : '1 month';\r\n}\r\n\r\nfunction isGimmickOffer(offer, selectedTermLength, allOptionSelected) {\r\n return (\r\n (allOptionSelected.termLength ||\r\n selectedTermLength[getTermLengthLabel(offer.TermLength)]) &&\r\n !offer.ProviderUsageCharge_Tier2_Amount &&\r\n !offer.ProviderUsageCharge_Tier3_Amount &&\r\n !offer.ProviderUsageCharge_Tier4_Amount &&\r\n !offer.ProviderUsageCharge_Tier5_Amount &&\r\n !offer.ProviderBaseCharge_PerDay_Amount &&\r\n !offer.ProviderCredit_Tier1_Amount &&\r\n !offer.ProviderCredit_Tier2_Amount &&\r\n !offer.ProviderCredit_Tier3_Amount &&\r\n !offer.ProviderCredit_Tier4_Amount &&\r\n !offer.ProviderCredit_Tier5_Amount &&\r\n !offer.BaseChargeAdjustment_Provider &&\r\n !offer.BaseChargeAdjustment_Utility &&\r\n !offer.UsageChargeAdjustment_All\r\n );\r\n}\r\n\r\nconst quickFilterList = [\r\n { label: 'ALL', value: 'all' },\r\n {\r\n label: '100% Green Energy',\r\n value: 'green',\r\n func: (offerList, selectedTermLength, allOptionSelected) => {\r\n return offerList.filter(\r\n (offer) =>\r\n (allOptionSelected.termLength ||\r\n selectedTermLength[getTermLengthLabel(offer.TermLength)]) &&\r\n offer.RenewableContent === 100\r\n );\r\n }\r\n },\r\n {\r\n label: 'Free Nights or Weekends',\r\n value: 'tou',\r\n requiredRateType: 'Time of Use',\r\n func: (offerList, selectedTermLength, allOptionSelected) => {\r\n return offerList.filter(\r\n (offer) =>\r\n (allOptionSelected.termLength ||\r\n selectedTermLength[getTermLengthLabel(offer.TermLength)]) &&\r\n offer.RateType === 'Time of Use'\r\n );\r\n }\r\n },\r\n {\r\n label: 'No Contract (Month-to-month)',\r\n value: 'nocontract',\r\n func: (offerList, selectedTermLength, allOptionSelected) => {\r\n return offerList.filter(\r\n (offer) =>\r\n (allOptionSelected.termLength ||\r\n selectedTermLength[getTermLengthLabel(offer.TermLength)]) &&\r\n offer.TermLength <= 1\r\n );\r\n }\r\n },\r\n {\r\n label: 'Short Term (< 12 months)',\r\n value: 'short',\r\n func: (offerList, selectedTermLength, allOptionSelected) => {\r\n return offerList.filter(\r\n (offer) =>\r\n (allOptionSelected.termLength ||\r\n selectedTermLength[getTermLengthLabel(offer.TermLength)]) &&\r\n offer.TermLength < 12\r\n );\r\n }\r\n },\r\n {\r\n label: 'No Credit Check (Prepaid)',\r\n value: 'prepaid',\r\n requiredRateType: 'Prepaid',\r\n func: (offerList, selectedTermLength, allOptionSelected) => {\r\n return offerList.filter(\r\n (offer) =>\r\n (allOptionSelected.termLength ||\r\n selectedTermLength[getTermLengthLabel(offer.TermLength)]) &&\r\n offer.RateType === 'Prepaid'\r\n );\r\n }\r\n },\r\n\r\n {\r\n label: 'Exclude plans with bill credits',\r\n value: 'no-credits',\r\n //requiredRateType: 'Prepaid',\r\n func: (offerList, selectedTermLength, allOptionSelected) => {\r\n return offerList.filter(\r\n (offer) =>\r\n !offer.ProviderCredit_Tier1_Amount &&\r\n !offer.ProviderCredit_Tier2_Amount &&\r\n !offer.ProviderCredit_Tier3_Amount &&\r\n !offer.ProviderCredit_Tier4_Amount &&\r\n !offer.ProviderCredit_Tier5_Amount\r\n );\r\n }\r\n },\r\n {\r\n label: 'No Pricing Gimmicks',\r\n value: 'no-gimmicks',\r\n hideInQuickFilters: true,\r\n requiredRateType: 'Fixed',\r\n\r\n func: (offerList, selectedTermLength, allOptionSelected) => {\r\n return offerList.filter((offer) =>\r\n isGimmickOffer(offer, selectedTermLength, allOptionSelected)\r\n );\r\n }\r\n }\r\n];\r\n\r\nfunction OfferGridElectric({\r\n serviceAddress,\r\n actions,\r\n webSocket,\r\n siteConfig,\r\n isLanding,\r\n onUsageChanged,\r\n preFilter,\r\n preFilterLabel\r\n}) {\r\n const headerRef = useRef();\r\n const observer = useRef();\r\n const [headerIsSticky, setHeaderIsSticky] = useState(false);\r\n\r\n const [sortColumn, setSortColumn] = useState({\r\n estimated: 'SingleMonthPriceKWh',\r\n lastBill: 'SingleMonthPriceDollars',\r\n actual: 'TrueCost_Dollars'\r\n });\r\n const [offerList, setOfferList] = useState(null);\r\n const [filteredOfferList, setFilteredOfferList] = useState(null);\r\n const [offerDictionary, setOfferDictionary] = useState({});\r\n const [estimatedUsage, setEstimatedUsage] = useState(\r\n offerCalc.getEstimatedUsage()\r\n );\r\n const [visibleOfferCount, setVisibleOfferCount] = useState(null);\r\n\r\n const [lastBillUsage, setLastBillUsage] = useState(\r\n offerCalc.getLastBillUsage()\r\n );\r\n\r\n const [lastBillAmount, setLastBillAmount] = useState(\r\n offerCalc.getLastBillAmount()\r\n );\r\n\r\n const [selectedUsage, setSelectedUsage] = useState(null);\r\n const [lastSelectedUsage, setLastSelectedUsage] = useState(null);\r\n const [filtersExpanded, setFiltersExpanded] = useState(\r\n false //typeof window !== 'undefined' && window.innerWidth > 668\r\n );\r\n const [selectedProviderList, setSelectedProviderList] = useState(null);\r\n const [selectedRateType, setSelectedRateType] = useState(null);\r\n const [selectedTermLength, setSelectedTermLength] = useState(null);\r\n const [showUsageHistoryPrompt, setShowUsageHistoryPrompt] = useState(false);\r\n const [usageHistory, setUsageHistory] = useState({ CookieChecked: false });\r\n const [quickFilter, setQuickFilter] = useState('all');\r\n const [usageSetting, setUsageSetting] = useState(offerCalc.getUsageSetting());\r\n const offerCalculationTimeout = useRef();\r\n const [offersUpdating, setOffersUpdating] = useState(false);\r\n const estimatedUsageTimeout = useRef();\r\n const lastBillUsageTimeout = useRef();\r\n const [showUsageHistoryRequest, setShowUsageHistoryRequest] = useState(false);\r\n const [allOptionSelected, setAllOptionSelected] = useState({\r\n rateType: true,\r\n termLength: false,\r\n provider: true\r\n });\r\n const [filterCounts, setFilterCounts] = useState({});\r\n const [usageHistoryMode, setUsageHistoryMode] = useState(null);\r\n const [usageHistoryExists, setUsageHistoryExists] = useState(false);\r\n const [bestOffer, setBestOffer] = useState(null);\r\n const [showTrueCostExplanation, setShowTrueCostExplanation] = useState(\r\n false //dataApi.getCookie('sc-hide-true-cost-explanation') !== '1'\r\n );\r\n\r\n const [noOffers, setNoOffers] = useState(false);\r\n const [selectedSection, setSelectedSection] = useState(null);\r\n const [highlightPriceColumn, setHighlighPriceColumn] = useState(null);\r\n const [showTermTypePopup, setShowTermTypePopup] = useState();\r\n const [hasIntroText, setHasIntroText] = useState(false);\r\n const [filtersClicked, setFiltersClicked] = useState(null);\r\n const [preFilterRemoved, setPrefilterRemoved] = useState(null);\r\n const [showAddressSearch, setShowAddressSearch] = useState(null);\r\n const [truePriceClicked, setTruePriceClicked] = useState(null);\r\n\r\n useEffect(() => {\r\n if (serviceAddress && serviceAddress.OfferDictionary) {\r\n let _offerList = [];\r\n\r\n for (const key in serviceAddress.OfferDictionary) {\r\n if (key.indexOf('Electric') !== -1) {\r\n _offerList = _offerList\r\n .concat(serviceAddress.OfferDictionary[key])\r\n .map((offer) => {\r\n let _offer = { ...offer };\r\n\r\n _offer.RateType = offerCalc.getRateType(offer);\r\n\r\n return _offer;\r\n });\r\n }\r\n\r\n //As of 12/03/2023 we removed True Price as the default, so we are showing nextera plans\r\n // if (typeof window !== 'undefined' && window.innerWidth > 820) {\r\n // setOfferList(_offerList.filter((offer) => offer.ApiID !== 603)); //Exlude NextEra except on mobile\r\n // } else {\r\n setOfferList(_offerList);\r\n // }\r\n }\r\n\r\n if (!_offerList.length) {\r\n setNoOffers(true);\r\n } else {\r\n setNoOffers(false);\r\n }\r\n }\r\n\r\n if (serviceAddress && serviceAddress.Checklist) {\r\n const _section = serviceAddress.Checklist.filter(\r\n (section) => section.ServiceSectionID === 19\r\n )[0];\r\n setSelectedSection(_section);\r\n }\r\n\r\n actions.pageLoading(false);\r\n }, [serviceAddress]);\r\n\r\n useEffect(() => {\r\n if (filteredOfferList) {\r\n doOfferSort(filteredOfferList);\r\n }\r\n\r\n let _sortColumn = sortColumn[usageSetting].split('-').join('');\r\n switch (_sortColumn) {\r\n case 'SingleMonthPriceKWh':\r\n case 'TrueCost_PerKWh':\r\n case 'SingleMonthPriceDollars':\r\n case 'AmountSaved':\r\n setHighlighPriceColumn(_sortColumn);\r\n break;\r\n }\r\n }, [sortColumn]);\r\n\r\n useEffect(() => {\r\n if (offerList) {\r\n let dictProvider = {};\r\n let dictTermLength = {};\r\n let dictRateType = {};\r\n\r\n offerList.map((offer) => {\r\n let providerFilter = dictProvider[offer.ProviderName]\r\n ? dictProvider[offer.ProviderName]\r\n : false;\r\n\r\n dictProvider[offer.ProviderName] = providerFilter;\r\n\r\n const termLengthLabel = getTermLengthLabel(offer.TermLength);\r\n\r\n let termLengthFilter = dictTermLength[termLengthLabel]\r\n ? dictTermLength[termLengthLabel]\r\n : offer.TermLength >= 12\r\n ? true\r\n : false;\r\n\r\n dictTermLength[termLengthLabel] = termLengthFilter;\r\n\r\n let rateTypeFilter = dictRateType[offer.RateType]\r\n ? dictRateType[offer.RateType]\r\n : false;\r\n\r\n dictRateType[offer.RateType] = rateTypeFilter;\r\n });\r\n\r\n setSelectedProviderList(dictProvider);\r\n setSelectedRateType(dictRateType);\r\n setSelectedTermLength(dictTermLength);\r\n }\r\n }, [offerList]);\r\n\r\n useEffect(() => {\r\n if (selectedRateType) {\r\n let someRateTypeSelected = false;\r\n Object.keys(selectedRateType).map((key) => {\r\n if (selectedRateType[key] === true) {\r\n someRateTypeSelected = true;\r\n }\r\n });\r\n\r\n setAllOptionSelected({\r\n ...allOptionSelected,\r\n rateType: !someRateTypeSelected\r\n });\r\n }\r\n\r\n //updateFilterCounts();\r\n }, [selectedRateType]);\r\n\r\n useEffect(() => {\r\n if (allOptionSelected.rateType && selectedRateType) {\r\n let _selectedRateType = { ...selectedRateType };\r\n let someRateTypeChanged = false;\r\n Object.keys(_selectedRateType).map((key) => {\r\n if (_selectedRateType[key]) {\r\n _selectedRateType[key] = false;\r\n someRateTypeChanged = true;\r\n }\r\n });\r\n\r\n if (someRateTypeChanged) {\r\n setSelectedRateType({ ..._selectedRateType });\r\n }\r\n }\r\n\r\n if (allOptionSelected.termLength && selectedTermLength) {\r\n let _selectedTermLength = { ...selectedTermLength };\r\n let someTermLengthChanged = false;\r\n Object.keys(_selectedTermLength).map((key) => {\r\n if (_selectedTermLength[key]) {\r\n _selectedTermLength[key] = false;\r\n someTermLengthChanged = true;\r\n }\r\n });\r\n\r\n if (someTermLengthChanged) {\r\n setSelectedTermLength({ ..._selectedTermLength });\r\n }\r\n }\r\n\r\n if (allOptionSelected.provider && selectedProviderList) {\r\n let _selectedProviderList = { ...selectedProviderList };\r\n let someProviderChanged = false;\r\n Object.keys(_selectedProviderList).map((key) => {\r\n if (_selectedProviderList[key]) {\r\n _selectedProviderList[key] = false;\r\n someProviderChanged = true;\r\n }\r\n });\r\n\r\n if (someProviderChanged) {\r\n setSelectedProviderList({ ..._selectedProviderList });\r\n }\r\n }\r\n }, [allOptionSelected]);\r\n\r\n useEffect(() => {\r\n if (selectedTermLength && Object.keys(selectedTermLength).length) {\r\n let someTermLengthSelected = false;\r\n Object.keys(selectedTermLength).map((key) => {\r\n if (selectedTermLength[key]) {\r\n someTermLengthSelected = true;\r\n }\r\n });\r\n\r\n const _allOptionsSelected = {\r\n ...allOptionSelected,\r\n termLength: !someTermLengthSelected\r\n };\r\n\r\n setAllOptionSelected(_allOptionsSelected);\r\n }\r\n\r\n updateFilterCounts();\r\n }, [selectedTermLength]);\r\n\r\n useEffect(() => {\r\n if (selectedProviderList) {\r\n let someProviderSelected = false;\r\n Object.keys(selectedProviderList).map((key) => {\r\n if (selectedProviderList[key]) {\r\n someProviderSelected = true;\r\n }\r\n });\r\n\r\n setAllOptionSelected({\r\n ...allOptionSelected,\r\n provider: !someProviderSelected\r\n });\r\n }\r\n }, [selectedProviderList]);\r\n\r\n useEffect(() => {\r\n if (offerList) {\r\n if (!preFilter || preFilterRemoved) {\r\n if (filtersClicked) {\r\n setOffersUpdating(true);\r\n }\r\n\r\n if (offerCalculationTimeout.current) {\r\n clearTimeout(offerCalculationTimeout.current);\r\n }\r\n\r\n offerCalculationTimeout.current = setTimeout(() => {\r\n let _offerList = offerList.filter((offer) => {\r\n let passesFilters = selectedProviderList\r\n ? (selectedProviderList[offer.ProviderName] &&\r\n selectedProviderList[offer.ProviderName] === true) ||\r\n allOptionSelected.provider\r\n : true;\r\n\r\n const termLengthLabel = getTermLengthLabel(offer.TermLength);\r\n if (!allOptionSelected.termLength) {\r\n if (selectedTermLength && !selectedTermLength[termLengthLabel]) {\r\n passesFilters = false;\r\n }\r\n }\r\n\r\n if (!allOptionSelected.rateType) {\r\n if (\r\n selectedRateType &&\r\n selectedRateType[offer.RateType] !== true\r\n ) {\r\n passesFilters = false;\r\n }\r\n }\r\n\r\n if (quickFilter === 'green' && offer.RenewableContent !== 100) {\r\n passesFilters = false;\r\n } else if (\r\n quickFilter === 'no-gimmicks' &&\r\n !isGimmickOffer(offer, selectedTermLength, allOptionSelected)\r\n ) {\r\n passesFilters = false;\r\n } else if (quickFilter === 'no-credits') {\r\n if (\r\n offer.ProviderCredit_Tier1_Amount ||\r\n offer.ProviderCredit_Tier2_Amount ||\r\n offer.ProviderCredit_Tier3_Amount ||\r\n offer.ProviderCredit_Tier4_Amount ||\r\n offer.ProviderCredit_Tier5_Amount\r\n ) {\r\n passesFilters = false;\r\n }\r\n }\r\n\r\n return passesFilters;\r\n });\r\n\r\n doOfferSort(addFullCostDetail(_offerList));\r\n\r\n setOffersUpdating(false);\r\n\r\n updateFilterCounts();\r\n }, 300);\r\n } else {\r\n let _offerList = offerList.filter((offer) => {\r\n let rateTypeFilter = [];\r\n let termLengthFilter = [];\r\n\r\n if (preFilter.quickFilter) {\r\n rateTypeFilter = Object.keys(\r\n Object.keys(getQuickFilterRateType(preFilter.quickFilter)).map(\r\n (rateType) => {\r\n return rateType;\r\n }\r\n )\r\n );\r\n\r\n termLengthFilter = Object.keys(\r\n Object.keys(getQuickFilterTermLength(preFilter.quickFilter)).map(\r\n (termLength) => {\r\n return termLength;\r\n }\r\n )\r\n );\r\n } else {\r\n if (preFilter.rateType) {\r\n rateTypeFilter = Object.keys(preFilter.rateType).map(\r\n (rateType) => {\r\n return rateType;\r\n }\r\n );\r\n }\r\n\r\n if (preFilter.termLength) {\r\n termLengthFilter = Object.keys(preFilter.termLength).map(\r\n (termLength) => {\r\n return termLength;\r\n }\r\n );\r\n }\r\n }\r\n\r\n let passesFilters = true;\r\n\r\n const termLengthLabel = getTermLengthLabel(offer.TermLength);\r\n if (\r\n termLengthFilter &&\r\n termLengthFilter.length &&\r\n termLengthFilter.filter(\r\n (termLength) => termLength === termLengthLabel\r\n ).length === 0\r\n ) {\r\n passesFilters = false;\r\n }\r\n\r\n if (\r\n rateTypeFilter &&\r\n rateTypeFilter.length &&\r\n rateTypeFilter.filter((rateType) => rateType === offer.RateType)\r\n .length === 0\r\n ) {\r\n passesFilters = false;\r\n }\r\n\r\n if (\r\n preFilter.quickFilter === 'green' &&\r\n offer.RenewableContent !== 100\r\n ) {\r\n passesFilters = false;\r\n } else if (\r\n preFilter.quickFilter === 'simple-fixed' &&\r\n (offer.RateType !== 'Fixed' || offerCalc.checkIfTiered(offer))\r\n ) {\r\n passesFilters = false;\r\n } else if (\r\n preFilter.quickFilter === 'no-gimmicks' &&\r\n !isGimmickOffer(offer, selectedTermLength, allOptionSelected)\r\n ) {\r\n passesFilters = false;\r\n }\r\n\r\n return passesFilters;\r\n });\r\n\r\n doOfferSort(addFullCostDetail(_offerList));\r\n }\r\n }\r\n }, [\r\n offerList,\r\n selectedUsage,\r\n selectedProviderList,\r\n selectedRateType,\r\n selectedTermLength,\r\n quickFilter,\r\n usageHistory,\r\n allOptionSelected,\r\n lastBillAmount,\r\n preFilter,\r\n preFilterRemoved\r\n ]);\r\n\r\n useEffect(() => {\r\n if (selectedUsage) {\r\n offerCalc.setSelectedUsage(selectedUsage);\r\n }\r\n }, [selectedUsage]);\r\n\r\n useEffect(() => {\r\n if (usageSetting) {\r\n offerCalc.setUsageSetting(usageSetting);\r\n\r\n if (usageSetting === 'lastBill') {\r\n setSelectedUsage(lastBillUsage ? lastBillUsage : 1000);\r\n } else if (usageSetting === 'actual') {\r\n setSelectedUsage(1000);\r\n } else {\r\n setSelectedUsage(lastSelectedUsage ? lastSelectedUsage : 1000);\r\n }\r\n }\r\n }, [usageSetting]);\r\n\r\n useEffect(() => {\r\n if (\r\n estimatedUsage &&\r\n !isNaN(estimatedUsage) &&\r\n estimatedUsage > 0 &&\r\n selectedUsage\r\n ) {\r\n if (estimatedUsageTimeout.current) {\r\n clearTimeout(estimatedUsageTimeout.current);\r\n }\r\n\r\n estimatedUsageTimeout.current = setTimeout(() => {\r\n setSelectedUsage(estimatedUsage);\r\n }, 300);\r\n\r\n offerCalc.setEstimatedUsage(estimatedUsage);\r\n } else if (usageSetting === 'estimated') {\r\n setSelectedUsage(offerCalc.getSelectedUsage());\r\n\r\n offerCalc.setEstimatedUsage('');\r\n }\r\n }, [estimatedUsage]);\r\n\r\n useEffect(() => {\r\n if (\r\n lastBillUsage &&\r\n !isNaN(lastBillUsage) &&\r\n lastBillUsage > 0 &&\r\n selectedUsage\r\n ) {\r\n if (lastBillUsageTimeout.current) {\r\n clearTimeout(lastBillUsageTimeout.current);\r\n }\r\n\r\n lastBillUsageTimeout.current = setTimeout(() => {\r\n setSelectedUsage(lastBillUsage);\r\n }, 200);\r\n\r\n offerCalc.setLastBillUsage(lastBillUsage);\r\n } else {\r\n offerCalc.setLastBillUsage('');\r\n }\r\n }, [lastBillUsage]);\r\n\r\n useEffect(() => {\r\n if (\r\n lastBillAmount &&\r\n !isNaN(lastBillAmount) &&\r\n lastBillAmount > 0 &&\r\n selectedUsage\r\n ) {\r\n offerCalc.setLastBillAmount(lastBillAmount);\r\n } else {\r\n offerCalc.setLastBillAmount('');\r\n }\r\n }, [lastBillAmount]);\r\n\r\n useEffect(() => {\r\n for (const key in offerDictionary) {\r\n if (!offerDictionary[key].detailList) {\r\n dataApi.listOfferDetail(key).then((detailList) => {\r\n let _detailList = {};\r\n\r\n detailList.map((detail) => {\r\n _detailList[detail.Key] = detail.Value;\r\n });\r\n\r\n setOfferDictionary({\r\n ...offerDictionary,\r\n [key]: {\r\n ...offerDictionary[key],\r\n detailList: _detailList\r\n }\r\n });\r\n });\r\n }\r\n }\r\n }, [offerDictionary]);\r\n\r\n useEffect(() => {\r\n if (!usageHistory.CookieChecked) {\r\n const _usageHistory = offerCalc.getUsageHistory(serviceAddress);\r\n\r\n if (_usageHistory) {\r\n setUsageHistory({\r\n ..._usageHistory\r\n });\r\n }\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n offerCalc.setUsageHistory(usageHistory);\r\n\r\n let _usageHistoryExists = false;\r\n\r\n if (usageHistory) {\r\n dataApi.getMonthsOfYear().map((month) => {\r\n if (usageHistory[month] && !isNaN(usageHistory[month])) {\r\n _usageHistoryExists = true;\r\n }\r\n });\r\n }\r\n\r\n setUsageHistoryExists(_usageHistoryExists);\r\n\r\n if (_usageHistoryExists) {\r\n setUsageHistoryMode('exists');\r\n }\r\n }, [usageHistory]);\r\n\r\n useEffect(() => {\r\n clearFilters();\r\n\r\n switch (quickFilter) {\r\n case 'fixed':\r\n case 'tou':\r\n case 'prepaid':\r\n if (selectedRateType) {\r\n let _selectedRateType = getQuickFilterRateType(quickFilter);\r\n\r\n setSelectedRateType(_selectedRateType);\r\n setAllOptionSelected({ ...allOptionSelected, rateType: false });\r\n }\r\n break;\r\n case 'nocontract':\r\n if (selectedTermLength) {\r\n let _selectedTermLength = getQuickFilterTermLength(quickFilter);\r\n setSelectedTermLength(_selectedTermLength);\r\n setAllOptionSelected({ ...allOptionSelected, termLength: false });\r\n }\r\n break;\r\n case 'short':\r\n if (selectedTermLength) {\r\n let _selectedTermLength = getQuickFilterTermLength(quickFilter);\r\n\r\n setSelectedTermLength(_selectedTermLength);\r\n setAllOptionSelected({ ...allOptionSelected, termLength: false });\r\n }\r\n break;\r\n default:\r\n updateFilterCounts(); //Just re-filter in case a quick filter, like 'Green', is used\r\n break;\r\n }\r\n }, [quickFilter]);\r\n\r\n useEffect(() => {\r\n if (headerRef.current && !observer.current) {\r\n observer.current = new IntersectionObserver(\r\n ([e]) => {\r\n setHeaderIsSticky(e.intersectionRatio < 1);\r\n },\r\n { threshold: [1] }\r\n );\r\n\r\n observer.current.observe(headerRef.current);\r\n\r\n console.log('add observer');\r\n }\r\n }, [headerRef.current]);\r\n\r\n useEffect(() => {\r\n // unmount header observer\r\n return function () {\r\n if (observer.current && headerRef.current) {\r\n console.log('remove observer');\r\n observer.current.unobserve(headerRef.current);\r\n observer.current = null;\r\n }\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (filteredOfferList) {\r\n setVisibleOfferCount(filteredOfferList.length);\r\n }\r\n }, [filteredOfferList]);\r\n\r\n useEffect(() => {\r\n if (visibleOfferCount !== null) {\r\n if (filtersClicked) {\r\n if (typeof window !== 'undefined') {\r\n const top = document.getElementById('offerRowStart');\r\n if (top) {\r\n dataApi.scrollToElementInPage(top, -145, false);\r\n }\r\n }\r\n }\r\n }\r\n }, [visibleOfferCount, sortColumn]);\r\n\r\n useEffect(() => {\r\n if (onUsageChanged) {\r\n onUsageChanged(selectedUsage, usageSetting, sortColumn);\r\n }\r\n\r\n setOfferDictionary({});\r\n }, [selectedUsage]);\r\n\r\n function updateFilterCounts() {\r\n if (selectedRateType && selectedTermLength && selectedProviderList) {\r\n let dictProvider = {};\r\n for (const providerName in selectedProviderList) {\r\n dictProvider[providerName] = 0;\r\n }\r\n\r\n let dictTermLength = {};\r\n for (const termLength in selectedTermLength) {\r\n dictTermLength[termLength] = 0;\r\n }\r\n\r\n let dictRateType = {};\r\n for (const rateType in selectedRateType) {\r\n dictRateType[rateType] = 0;\r\n }\r\n\r\n offerList.map((offer) => {\r\n let passesRateType = true;\r\n let passesTermLength = true;\r\n let passesProvider = true;\r\n\r\n if (!allOptionSelected.rateType) {\r\n if (selectedRateType && selectedRateType[offer.RateType] !== true) {\r\n passesTermLength = false;\r\n passesProvider = false;\r\n }\r\n }\r\n\r\n const termLengthLabel = getTermLengthLabel(offer.TermLength);\r\n if (!allOptionSelected.termLength) {\r\n if (\r\n selectedTermLength &&\r\n selectedTermLength[termLengthLabel] !== true\r\n ) {\r\n passesRateType = false;\r\n passesProvider = false;\r\n }\r\n }\r\n\r\n if (!allOptionSelected.provider) {\r\n if (\r\n selectedProviderList &&\r\n selectedProviderList[offer.ProviderName] !== true\r\n ) {\r\n passesRateType = false;\r\n passesTermLength = false;\r\n }\r\n }\r\n\r\n if (quickFilter === 'green' && offer.RenewableContent !== 1) {\r\n passesRateType = false;\r\n passesTermLength = false;\r\n passesProvider = false;\r\n }\r\n\r\n if (passesRateType) {\r\n dictRateType[offer.RateType]++;\r\n }\r\n\r\n if (passesTermLength) {\r\n dictTermLength[termLengthLabel]++;\r\n }\r\n\r\n if (passesProvider) {\r\n dictProvider[offer.ProviderName]++;\r\n }\r\n });\r\n\r\n setFilterCounts({\r\n ...filterCounts,\r\n rateType: dictRateType,\r\n termLength: dictTermLength,\r\n provider: dictProvider\r\n });\r\n }\r\n }\r\n\r\n function sortOffers(column) {\r\n let _sortColumn = column;\r\n\r\n if (sortColumn[usageSetting] === column) {\r\n if (column.indexOf('-') !== -1) {\r\n _sortColumn = column.split('-')[1];\r\n } else {\r\n _sortColumn = '-' + column;\r\n }\r\n }\r\n\r\n setSortColumn({\r\n ...sortColumn,\r\n [usageSetting]: _sortColumn\r\n });\r\n }\r\n\r\n function addFullCostDetail(_offerList) {\r\n _offerList = _offerList.map((offer) => {\r\n let _offer = offerCalc.getFullCostDetail(\r\n offer,\r\n selectedUsage,\r\n serviceAddress,\r\n usageHistory,\r\n usageSetting,\r\n lastBillAmount\r\n );\r\n\r\n return _offer;\r\n });\r\n\r\n return _offerList;\r\n }\r\n\r\n function doOfferSort(offerList) {\r\n const column = sortColumn[usageSetting].split('-').join('');\r\n let desc = sortColumn[usageSetting].indexOf('-') === 0;\r\n\r\n let sortedList = [...offerList];\r\n\r\n switch (column) {\r\n case 'RenewableContent':\r\n case 'TermLength':\r\n if (desc) {\r\n sortedList.sort(\r\n (offerA, offerB) =>\r\n offerB[column] - offerA[column] ||\r\n offerA[highlightPriceColumn] - offerB[highlightPriceColumn]\r\n );\r\n } else {\r\n sortedList.sort(\r\n (offerA, offerB) =>\r\n offerA[column] - offerB[column] ||\r\n offerA[highlightPriceColumn] - offerB[highlightPriceColumn]\r\n );\r\n }\r\n break;\r\n default:\r\n sortedList.sort((a, b) => {\r\n const valueA = a[column];\r\n const valueB = b[column];\r\n\r\n let result = valueA > valueB ? 1 : valueA < valueB ? -1 : 0;\r\n\r\n if (valueB === null) {\r\n result = 1;\r\n }\r\n\r\n if (valueA === null) {\r\n result = -1;\r\n }\r\n\r\n if (desc) {\r\n result = result * -1;\r\n }\r\n\r\n return result;\r\n });\r\n break;\r\n }\r\n\r\n //Find the best offer\r\n //Removed per Bud 11/8/2023\r\n // if (siteConfig && siteConfig.id === 'mi') {\r\n // let sortedListByBestOffer = [...offerList];\r\n // if (sortedListByBestOffer.length > 0) {\r\n // const bestOfferSortColumn =\r\n // usageSetting === 'lastBill' && lastBillAmount && lastBillUsage\r\n // ? 'SingleMonthPriceDollars'\r\n // : 'TrueCost_Dollars';\r\n // sortedListByBestOffer.sort((a, b) => {\r\n // const valueA = a[bestOfferSortColumn];\r\n // const valueB = b[bestOfferSortColumn];\r\n\r\n // let result = valueA > valueB ? 1 : valueA < valueB ? -1 : 0;\r\n\r\n // if (valueB === null) {\r\n // result = 1;\r\n // }\r\n\r\n // if (valueA === null) {\r\n // result = -1;\r\n // }\r\n\r\n // return result;\r\n // });\r\n\r\n // const _bestOffer = { ...sortedListByBestOffer[0] };\r\n\r\n // setBestOffer(_bestOffer);\r\n // }\r\n // }\r\n\r\n setFilteredOfferList(sortedList);\r\n }\r\n\r\n function clearFilters() {\r\n let _selectedRateType = { ...selectedRateType };\r\n let _selectedTermLength = { ...selectedTermLength };\r\n\r\n for (const field in _selectedRateType) {\r\n _selectedRateType[field] = false;\r\n }\r\n\r\n for (const field in _selectedTermLength) {\r\n const termLength = parseInt(field.split(' ')[0]);\r\n _selectedTermLength[field] = termLength >= 12;\r\n }\r\n\r\n setSelectedRateType(_selectedRateType);\r\n setSelectedTermLength(_selectedTermLength);\r\n setAllOptionSelected({\r\n ...allOptionSelected,\r\n rateType: true,\r\n termLength: false,\r\n provider: true\r\n });\r\n }\r\n\r\n function getQuickFilterRateType(_quickFilter) {\r\n let _selectedRateType = {};\r\n\r\n switch (_quickFilter) {\r\n case 'fixed':\r\n case 'tou':\r\n case 'prepaid':\r\n if (selectedRateType) {\r\n Object.keys(selectedRateType).map((key) => {\r\n _selectedRateType[key] =\r\n _quickFilter === 'fixed'\r\n ? key.indexOf('Fixed') !== -1\r\n : _quickFilter === 'tou'\r\n ? key.indexOf('Time of Use') !== -1\r\n : _quickFilter === 'prepaid'\r\n ? key.indexOf('Prepaid') !== -1\r\n : false;\r\n });\r\n }\r\n break;\r\n }\r\n\r\n return _selectedRateType;\r\n }\r\n\r\n function getQuickFilterTermLength(_quickFilter) {\r\n let _selectedTermLength = {};\r\n\r\n switch (_quickFilter) {\r\n case 'nocontract':\r\n if (selectedTermLength) {\r\n Object.keys(selectedTermLength).map((key) => {\r\n _selectedTermLength[key] = key === '1 month';\r\n });\r\n }\r\n break;\r\n case 'short':\r\n if (selectedTermLength) {\r\n Object.keys(selectedTermLength).map((key) => {\r\n const termLength = parseInt(key.split(' ')[0]);\r\n _selectedTermLength[key] = termLength < 12;\r\n });\r\n }\r\n break;\r\n }\r\n\r\n return _selectedTermLength;\r\n }\r\n\r\n return noOffers ? (\r\n \r\n ) : (\r\n <>\r\n \r\n {' '}\r\n {!preFilter ? (\r\n <>\r\n {siteConfig.id === 'mi' ? (\r\n

\r\n \r\n Electric Plans for{' '}\r\n \r\n {' '}\r\n {serviceAddress &&\r\n serviceAddress.Address &&\r\n serviceAddress.Address.Zip\r\n ? serviceAddress.Address.Zip\r\n : 'Texas'}\r\n \r\n \r\n

\r\n ) : null}\r\n\r\n \r\n\r\n {isLanding &&\r\n serviceAddress.OfferDictionary &&\r\n serviceAddress.OfferDictionary.Electric ? (\r\n
\r\n

\r\n {serviceAddress &&\r\n serviceAddress.OfferDictionary &&\r\n serviceAddress.OfferDictionary.Electric ? (\r\n \r\n \r\n All electric plans for{' '}\r\n \r\n {serviceAddress.Address.Address ? (\r\n <>\r\n {serviceAddress.Address.Address}{' '}\r\n {serviceAddress.Address.Secondary\r\n ? serviceAddress.Address.Secondary\r\n : ''}\r\n \r\n ) : (\r\n serviceAddress.Address.Zip\r\n )}\r\n \r\n \r\n \r\n ) : null}\r\n

\r\n\r\n

\r\n You can adjust the usage levels used to calculate prices using\r\n the blue buttons below.\r\n

\r\n
\r\n ) : null}\r\n \r\n ) : null}\r\n
\r\n {filteredOfferList && offerList.length ? (\r\n
\r\n \r\n
\r\n {/* {!preFilter || preFilterRemoved ? (\r\n
\r\n

\r\n Want to know a secret? ... The plans with the lowest\r\n Advertised Price are not always the best value. Sort by\r\n the True Price column below to learn why.\r\n

\r\n
\r\n \r\n
\r\n
\r\n ) : null} */}\r\n\r\n {preFilter && !preFilterRemoved ? (\r\n
\r\n The {preFilterLabel} plans listed below are available in{' '}\r\n {serviceAddress.Address.City} for the zip code{' '}\r\n {serviceAddress.Address.Zip}.{' '}\r\n setShowAddressSearch(true)}>\r\n Change locations \r\n \r\n
\r\n ) : null}\r\n\r\n
\r\n
\r\n
\r\n
\r\n Choose your priority \r\n
\r\n
\r\n
\r\n {/*
\r\n \r\n
*/}\r\n
\r\n {\r\n setFiltersClicked(true);\r\n sortOffers('TermLength');\r\n if (!showTermTypePopup) {\r\n setShowTermTypePopup({ show: true });\r\n }\r\n }}\r\n variant={\r\n sortColumn &&\r\n sortColumn[usageSetting] &&\r\n sortColumn[usageSetting].indexOf('TermLength') !==\r\n -1\r\n ? 'contained'\r\n : 'outlined'\r\n }\r\n color=\"primary\">\r\n \r\n Term Type\r\n \r\n \r\n \r\n \r\n
\r\n\r\n {usageSetting === 'lastBill' ? (\r\n <>\r\n
\r\n {\r\n setFiltersClicked(true);\r\n sortOffers('SingleMonthPriceKWh');\r\n }}\r\n variant={\r\n sortColumn &&\r\n sortColumn[usageSetting] &&\r\n sortColumn[usageSetting].indexOf(\r\n 'SingleMonthPriceKWh'\r\n ) !== -1\r\n ? 'contained'\r\n : 'outlined'\r\n }\r\n color=\"primary\">\r\n \r\n Current Plan\r\n \r\n
\r\n
\r\n {\r\n setFiltersClicked(true);\r\n sortOffers('SingleMonthPriceDollars');\r\n }}\r\n variant={\r\n sortColumn &&\r\n sortColumn[usageSetting] &&\r\n sortColumn[usageSetting].indexOf(\r\n 'SingleMonthPriceDollars'\r\n ) !== -1\r\n ? 'contained'\r\n : 'outlined'\r\n }\r\n color=\"primary\">\r\n \r\n This Plan\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {\r\n setFiltersClicked(true);\r\n sortOffers('AmountSaved');\r\n }}\r\n variant={\r\n sortColumn &&\r\n sortColumn[usageSetting] &&\r\n sortColumn[usageSetting].indexOf(\r\n 'AmountSaved'\r\n ) !== -1\r\n ? 'contained'\r\n : 'outlined'\r\n }\r\n color=\"primary\">\r\n \r\n Your Savings\r\n \r\n \r\n \r\n \r\n
\r\n {/*
\r\n \r\n
\r\n
\r\n \r\n
*/}\r\n \r\n ) : (\r\n <>\r\n
\r\n {\r\n setFiltersClicked(true);\r\n sortOffers('-RenewableContent');\r\n }}>\r\n \r\n % Renewable\r\n \r\n
\r\n\r\n
\r\n {\r\n setFiltersClicked(true);\r\n sortOffers('TrueCost_PerKWh');\r\n setTruePriceClicked(true);\r\n }}>\r\n \r\n True Price\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n {\r\n setFiltersClicked(true);\r\n sortOffers('SingleMonthPriceDollars');\r\n }}>\r\n \r\n Estimated Bill\r\n \r\n
\r\n\r\n
\r\n {\r\n setFiltersClicked(true);\r\n sortOffers('SingleMonthPriceKWh');\r\n }}>\r\n \r\n Advertised Price\r\n Price per kWh\r\n \r\n \r\n \r\n \r\n
\r\n {/*
\r\n sortOffers('TrueCost_Dollars')}>\r\n \r\n True Cost\r\n \r\n \r\n \r\n \r\n
*/}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n {\r\n setFiltersClicked(true);\r\n sortOffers('SingleMonthPriceKWh');\r\n }}>\r\n \r\n Advertised Price\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n {isLanding && sortColumn[usageSetting] === 'TrueCost_PerKWh' ? (\r\n \r\n ) : null}\r\n\r\n {showTrueCostExplanation && usageSetting === 'estimated' ? (\r\n
\r\n
\r\n {/*
*/}\r\n \r\n
\r\n {\r\n setShowTrueCostExplanation(false);\r\n dataApi.setCookie('sc-hide-true-cost-explanation', '1');\r\n }}>\r\n \r\n \r\n

\r\n The advertised prices found on the Electricity Facts Label\r\n (EFL) can sometimes be misleading because they only show\r\n you what you’ll pay at exactly those usage points. Use\r\n more or less than that exact usage and your price can go\r\n up, sometimes significantly.\r\n

\r\n

\r\n To help you better understand each plan's actual pricing\r\n we’ve converted those advertised prices into what we call\r\n a “True Price”.{' '}\r\n

\r\n

\r\n The True Price column shows you what the average price\r\n will be for that plan over a 12-month period after taking\r\n seasonal usage fluctuations into consideration. This True\r\n Price is a much better indicator of what you’ll actually\r\n pay than the prices advertised by providers.\r\n

\r\n
\r\n ) : null}\r\n\r\n {usageSetting !== 'lastBill' ||\r\n (lastBillAmount && lastBillUsage) ? (\r\n <>\r\n {bestOffer ? (\r\n \r\n // Best Deal\r\n // {sortColumn[usageSetting] !== 'TrueCost_Dollars' &&\r\n // sortColumn[usageSetting] !== 'TrueCost_PerKWh' &&\r\n // usageSetting !== 'lastBill' ? (\r\n //
\r\n // Sort by True Price to see the best deals{' '}\r\n // \r\n //
\r\n // ) : null}\r\n // \r\n // }\r\n isFeatured\r\n highlightPriceColumn={highlightPriceColumn}\r\n truePriceClicked={truePriceClicked}\r\n />\r\n ) : null}\r\n\r\n {filteredOfferList.map((offer, offerIndex) =>\r\n !bestOffer ||\r\n bestOffer.OfferID !== offer.OfferID ||\r\n offerIndex > 0 ? (\r\n <>\r\n
\r\n \r\n {isLanding &&\r\n sortColumn[usageSetting] !== 'TrueCost_PerKWh' &&\r\n offerIndex === 3 ? (\r\n \r\n ) : null}\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n ) : null\r\n )}\r\n \r\n ) : (\r\n
\r\n Enter your{' '}\r\n {\r\n setFiltersExpanded(true);\r\n setTimeout(() => {\r\n document.getElementById('lastBillAmount').focus();\r\n }, 100);\r\n }}>\r\n last bill amount\r\n {' '}\r\n and{' '}\r\n {\r\n setFiltersExpanded(true);\r\n setTimeout(() => {\r\n document.getElementById('lastBillUsage').focus();\r\n }, 100);\r\n }}>\r\n last usage amount\r\n {' '}\r\n in the form above to view plans.\r\n
\r\n )}\r\n
\r\n \r\n
\r\n ) : !webSocket || !webSocket.pageLoading ? (\r\n
\r\n \r\n
\r\n
\r\n Loading plans...\r\n
\r\n ) : null}\r\n
\r\n \r\n\r\n {/* Commented out until we figure out how to present this or remove it for customers */}\r\n \r\n\r\n {showTermTypePopup && showTermTypePopup.show ? (\r\n {\r\n setShowTermTypePopup({ show: false });\r\n }}\r\n />\r\n ) : null}\r\n\r\n {showAddressSearch ? (\r\n setShowAddressSearch(null)}\r\n title={\r\n preFilterLabel\r\n ? 'Compare ' + preFilterLabel + ' Plans'\r\n : 'Compare Rates'\r\n }\r\n afterAddressSelected={() => {\r\n //do nothing, stay here\r\n setShowAddressSearch(null);\r\n }}\r\n />\r\n ) : null}\r\n \r\n );\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n webSocket: state.webSocket,\r\n serviceAddress: state.serviceAddress,\r\n siteConfig: state.commonData.siteConfig\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: {\r\n pageLoading: bindActionCreators(webSocketActions.pageLoading, dispatch)\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(OfferGridElectric);\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport Table from '@mui/material/Table';\r\nimport TableBody from '@mui/material/TableBody';\r\nimport TableCell from '@mui/material/TableCell';\r\nimport TableContainer from '@mui/material/TableContainer';\r\nimport TableHead from '@mui/material/TableHead';\r\nimport TableRow from '@mui/material/TableRow';\r\nimport { compareElectric6Month } from '../../api/dataApi';\r\nimport { getFullCostDetail, round } from '../../api/offerCalc';\r\n\r\nimport './index.css';\r\n\r\nfunction Electric6MonthAvgCompare({}) {\r\n const [offerList, setOfferList] = useState(null);\r\n const usage = 1000;\r\n\r\n useEffect(() => {\r\n compareElectric6Month(usage).then((_offerList) =>\r\n setOfferList(\r\n _offerList.map((offer) =>\r\n getFullCostDetail(offer, usage, {}, null, 'average')\r\n )\r\n )\r\n );\r\n }, []);\r\n\r\n return (\r\n offerList[1].PriceKWh\r\n ? ' loaded'\r\n : '')\r\n }>\r\n

Electric rates are down 20% or more depending on where you live.

\r\n {offerList && offerList.length == 2 ? (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Current\r\n
\r\n Lowest Rate\r\n
\r\n \r\n Same Plan\r\n
6 Months Ago\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {round(offerList[1].PriceKWh, 1)}¢ per kWh\r\n \r\n {round(offerList[0].PriceKWh)}¢ per kWh\r\n \r\n \r\n \r\n ${round(offerList[1].PriceDollars).toFixed(2)}/mo est. bill*\r\n \r\n \r\n ${round(offerList[0].PriceDollars).toFixed(2)}/mo est. bill*\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
Estimated monthly savings:
\r\n

\r\n $\r\n {round(\r\n offerList[0].PriceDollars - offerList[1].PriceDollars\r\n ).toFixed(2)}\r\n *\r\n

\r\n
\r\n
\r\n ) : null}\r\n\r\n {offerList && offerList.length == 2 ? (\r\n

\r\n *Estimated prices above based on average usage of {usage} kWh and the\r\n lowest available rate.\r\n

\r\n ) : null}\r\n

\r\n \r\n Enter your zip code below to find the lowest rate in your area.\r\n \r\n

\r\n \r\n );\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n webSocket: state.webSocket,\r\n serviceAddress: state.serviceAddress,\r\n siteConfig: state.commonData.siteConfig\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: {}\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(Electric6MonthAvgCompare);\r\n","const visuallyHidden = {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n whiteSpace: 'nowrap',\n width: '1px'\n};\nexport default visuallyHidden;","function areArraysEqual(array1, array2) {\n let itemComparer = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : (a, b) => a === b;\n return array1.length === array2.length && array1.every((value, index) => itemComparer(value, array2[index]));\n}\nexport default areArraysEqual;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_ownerDocument as ownerDocument, unstable_useControlled as useControlled, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useEventCallback as useEventCallback, unstable_useForkRef as useForkRef, unstable_useIsFocusVisible as useIsFocusVisible, visuallyHidden, clamp } from '@mui/utils';\nimport extractEventHandlers from '@mui/utils/extractEventHandlers';\nimport areArraysEqual from '../utils/areArraysEqual';\nconst INTENTIONAL_DRAG_COUNT_THRESHOLD = 2;\nfunction asc(a, b) {\n return a - b;\n}\nfunction findClosest(values, currentValue) {\n var _values$reduce;\n const {\n index: closestIndex\n } = (_values$reduce = values.reduce((acc, value, index) => {\n const distance = Math.abs(currentValue - value);\n if (acc === null || distance < acc.distance || distance === acc.distance) {\n return {\n distance,\n index\n };\n }\n return acc;\n }, null)) != null ? _values$reduce : {};\n return closestIndex;\n}\nfunction trackFinger(event, touchId) {\n // The event is TouchEvent\n if (touchId.current !== undefined && event.changedTouches) {\n const touchEvent = event;\n for (let i = 0; i < touchEvent.changedTouches.length; i += 1) {\n const touch = touchEvent.changedTouches[i];\n if (touch.identifier === touchId.current) {\n return {\n x: touch.clientX,\n y: touch.clientY\n };\n }\n }\n return false;\n }\n\n // The event is MouseEvent\n return {\n x: event.clientX,\n y: event.clientY\n };\n}\nexport function valueToPercent(value, min, max) {\n return (value - min) * 100 / (max - min);\n}\nfunction percentToValue(percent, min, max) {\n return (max - min) * percent + min;\n}\nfunction getDecimalPrecision(num) {\n // This handles the case when num is very small (0.00000001), js will turn this into 1e-8.\n // When num is bigger than 1 or less than -1 it won't get converted to this notation so it's fine.\n if (Math.abs(num) < 1) {\n const parts = num.toExponential().split('e-');\n const matissaDecimalPart = parts[0].split('.')[1];\n return (matissaDecimalPart ? matissaDecimalPart.length : 0) + parseInt(parts[1], 10);\n }\n const decimalPart = num.toString().split('.')[1];\n return decimalPart ? decimalPart.length : 0;\n}\nfunction roundValueToStep(value, step, min) {\n const nearest = Math.round((value - min) / step) * step + min;\n return Number(nearest.toFixed(getDecimalPrecision(step)));\n}\nfunction setValueIndex(_ref) {\n let {\n values,\n newValue,\n index\n } = _ref;\n const output = values.slice();\n output[index] = newValue;\n return output.sort(asc);\n}\nfunction focusThumb(_ref2) {\n let {\n sliderRef,\n activeIndex,\n setActive\n } = _ref2;\n var _sliderRef$current, _doc$activeElement;\n const doc = ownerDocument(sliderRef.current);\n if (!((_sliderRef$current = sliderRef.current) != null && _sliderRef$current.contains(doc.activeElement)) || Number(doc == null || (_doc$activeElement = doc.activeElement) == null ? void 0 : _doc$activeElement.getAttribute('data-index')) !== activeIndex) {\n var _sliderRef$current2;\n (_sliderRef$current2 = sliderRef.current) == null || _sliderRef$current2.querySelector(`[type=\"range\"][data-index=\"${activeIndex}\"]`).focus();\n }\n if (setActive) {\n setActive(activeIndex);\n }\n}\nfunction areValuesEqual(newValue, oldValue) {\n if (typeof newValue === 'number' && typeof oldValue === 'number') {\n return newValue === oldValue;\n }\n if (typeof newValue === 'object' && typeof oldValue === 'object') {\n return areArraysEqual(newValue, oldValue);\n }\n return false;\n}\nconst axisProps = {\n horizontal: {\n offset: percent => ({\n left: `${percent}%`\n }),\n leap: percent => ({\n width: `${percent}%`\n })\n },\n 'horizontal-reverse': {\n offset: percent => ({\n right: `${percent}%`\n }),\n leap: percent => ({\n width: `${percent}%`\n })\n },\n vertical: {\n offset: percent => ({\n bottom: `${percent}%`\n }),\n leap: percent => ({\n height: `${percent}%`\n })\n }\n};\nexport const Identity = x => x;\n\n// TODO: remove support for Safari < 13.\n// https://caniuse.com/#search=touch-action\n//\n// Safari, on iOS, supports touch action since v13.\n// Over 80% of the iOS phones are compatible\n// in August 2020.\n// Utilizing the CSS.supports method to check if touch-action is supported.\n// Since CSS.supports is supported on all but Edge@12 and IE and touch-action\n// is supported on both Edge@12 and IE if CSS.supports is not available that means that\n// touch-action will be supported\nlet cachedSupportsTouchActionNone;\nfunction doesSupportTouchActionNone() {\n if (cachedSupportsTouchActionNone === undefined) {\n if (typeof CSS !== 'undefined' && typeof CSS.supports === 'function') {\n cachedSupportsTouchActionNone = CSS.supports('touch-action', 'none');\n } else {\n cachedSupportsTouchActionNone = true;\n }\n }\n return cachedSupportsTouchActionNone;\n}\n/**\n *\n * Demos:\n *\n * - [Slider](https://mui.com/base-ui/react-slider/#hook)\n *\n * API:\n *\n * - [useSlider API](https://mui.com/base-ui/react-slider/hooks-api/#use-slider)\n */\nexport function useSlider(parameters) {\n const {\n 'aria-labelledby': ariaLabelledby,\n defaultValue,\n disabled = false,\n disableSwap = false,\n isRtl = false,\n marks: marksProp = false,\n max = 100,\n min = 0,\n name,\n onChange,\n onChangeCommitted,\n orientation = 'horizontal',\n rootRef: ref,\n scale = Identity,\n step = 1,\n shiftStep = 10,\n tabIndex,\n value: valueProp\n } = parameters;\n const touchId = React.useRef();\n // We can't use the :active browser pseudo-classes.\n // - The active state isn't triggered when clicking on the rail.\n // - The active state isn't transferred when inversing a range slider.\n const [active, setActive] = React.useState(-1);\n const [open, setOpen] = React.useState(-1);\n const [dragging, setDragging] = React.useState(false);\n const moveCount = React.useRef(0);\n const [valueDerived, setValueState] = useControlled({\n controlled: valueProp,\n default: defaultValue != null ? defaultValue : min,\n name: 'Slider'\n });\n const handleChange = onChange && ((event, value, thumbIndex) => {\n // Redefine target to allow name and value to be read.\n // This allows seamless integration with the most popular form libraries.\n // https://github.com/mui/material-ui/issues/13485#issuecomment-676048492\n // Clone the event to not override `target` of the original event.\n const nativeEvent = event.nativeEvent || event;\n // @ts-ignore The nativeEvent is function, not object\n const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n Object.defineProperty(clonedEvent, 'target', {\n writable: true,\n value: {\n value,\n name\n }\n });\n onChange(clonedEvent, value, thumbIndex);\n });\n const range = Array.isArray(valueDerived);\n let values = range ? valueDerived.slice().sort(asc) : [valueDerived];\n values = values.map(value => value == null ? min : clamp(value, min, max));\n const marks = marksProp === true && step !== null ? [...Array(Math.floor((max - min) / step) + 1)].map((_, index) => ({\n value: min + step * index\n })) : marksProp || [];\n const marksValues = marks.map(mark => mark.value);\n const {\n isFocusVisibleRef,\n onBlur: handleBlurVisible,\n onFocus: handleFocusVisible,\n ref: focusVisibleRef\n } = useIsFocusVisible();\n const [focusedThumbIndex, setFocusedThumbIndex] = React.useState(-1);\n const sliderRef = React.useRef();\n const handleFocusRef = useForkRef(focusVisibleRef, sliderRef);\n const handleRef = useForkRef(ref, handleFocusRef);\n const createHandleHiddenInputFocus = otherHandlers => event => {\n var _otherHandlers$onFocu;\n const index = Number(event.currentTarget.getAttribute('data-index'));\n handleFocusVisible(event);\n if (isFocusVisibleRef.current === true) {\n setFocusedThumbIndex(index);\n }\n setOpen(index);\n otherHandlers == null || (_otherHandlers$onFocu = otherHandlers.onFocus) == null || _otherHandlers$onFocu.call(otherHandlers, event);\n };\n const createHandleHiddenInputBlur = otherHandlers => event => {\n var _otherHandlers$onBlur;\n handleBlurVisible(event);\n if (isFocusVisibleRef.current === false) {\n setFocusedThumbIndex(-1);\n }\n setOpen(-1);\n otherHandlers == null || (_otherHandlers$onBlur = otherHandlers.onBlur) == null || _otherHandlers$onBlur.call(otherHandlers, event);\n };\n const changeValue = (event, valueInput) => {\n const index = Number(event.currentTarget.getAttribute('data-index'));\n const value = values[index];\n const marksIndex = marksValues.indexOf(value);\n let newValue = valueInput;\n if (marks && step == null) {\n const maxMarksValue = marksValues[marksValues.length - 1];\n if (newValue > maxMarksValue) {\n newValue = maxMarksValue;\n } else if (newValue < marksValues[0]) {\n newValue = marksValues[0];\n } else {\n newValue = newValue < value ? marksValues[marksIndex - 1] : marksValues[marksIndex + 1];\n }\n }\n newValue = clamp(newValue, min, max);\n if (range) {\n // Bound the new value to the thumb's neighbours.\n if (disableSwap) {\n newValue = clamp(newValue, values[index - 1] || -Infinity, values[index + 1] || Infinity);\n }\n const previousValue = newValue;\n newValue = setValueIndex({\n values,\n newValue,\n index\n });\n let activeIndex = index;\n\n // Potentially swap the index if needed.\n if (!disableSwap) {\n activeIndex = newValue.indexOf(previousValue);\n }\n focusThumb({\n sliderRef,\n activeIndex\n });\n }\n setValueState(newValue);\n setFocusedThumbIndex(index);\n if (handleChange && !areValuesEqual(newValue, valueDerived)) {\n handleChange(event, newValue, index);\n }\n if (onChangeCommitted) {\n onChangeCommitted(event, newValue);\n }\n };\n const createHandleHiddenInputKeyDown = otherHandlers => event => {\n var _otherHandlers$onKeyD;\n // The Shift + Up/Down keyboard shortcuts for moving the slider makes sense to be supported\n // only if the step is defined. If the step is null, this means tha the marks are used for specifying the valid values.\n if (step !== null) {\n const index = Number(event.currentTarget.getAttribute('data-index'));\n const value = values[index];\n let newValue = null;\n if ((event.key === 'ArrowLeft' || event.key === 'ArrowDown') && event.shiftKey || event.key === 'PageDown') {\n newValue = Math.max(value - shiftStep, min);\n } else if ((event.key === 'ArrowRight' || event.key === 'ArrowUp') && event.shiftKey || event.key === 'PageUp') {\n newValue = Math.min(value + shiftStep, max);\n }\n if (newValue !== null) {\n changeValue(event, newValue);\n event.preventDefault();\n }\n }\n otherHandlers == null || (_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null || _otherHandlers$onKeyD.call(otherHandlers, event);\n };\n useEnhancedEffect(() => {\n if (disabled && sliderRef.current.contains(document.activeElement)) {\n var _document$activeEleme;\n // This is necessary because Firefox and Safari will keep focus\n // on a disabled element:\n // https://codesandbox.io/p/sandbox/mui-pr-22247-forked-h151h?file=/src/App.js\n // @ts-ignore\n (_document$activeEleme = document.activeElement) == null || _document$activeEleme.blur();\n }\n }, [disabled]);\n if (disabled && active !== -1) {\n setActive(-1);\n }\n if (disabled && focusedThumbIndex !== -1) {\n setFocusedThumbIndex(-1);\n }\n const createHandleHiddenInputChange = otherHandlers => event => {\n var _otherHandlers$onChan;\n (_otherHandlers$onChan = otherHandlers.onChange) == null || _otherHandlers$onChan.call(otherHandlers, event);\n // @ts-ignore\n changeValue(event, event.target.valueAsNumber);\n };\n const previousIndex = React.useRef();\n let axis = orientation;\n if (isRtl && orientation === 'horizontal') {\n axis += '-reverse';\n }\n const getFingerNewValue = _ref3 => {\n let {\n finger,\n move = false\n } = _ref3;\n const {\n current: slider\n } = sliderRef;\n const {\n width,\n height,\n bottom,\n left\n } = slider.getBoundingClientRect();\n let percent;\n if (axis.indexOf('vertical') === 0) {\n percent = (bottom - finger.y) / height;\n } else {\n percent = (finger.x - left) / width;\n }\n if (axis.indexOf('-reverse') !== -1) {\n percent = 1 - percent;\n }\n let newValue;\n newValue = percentToValue(percent, min, max);\n if (step) {\n newValue = roundValueToStep(newValue, step, min);\n } else {\n const closestIndex = findClosest(marksValues, newValue);\n newValue = marksValues[closestIndex];\n }\n newValue = clamp(newValue, min, max);\n let activeIndex = 0;\n if (range) {\n if (!move) {\n activeIndex = findClosest(values, newValue);\n } else {\n activeIndex = previousIndex.current;\n }\n\n // Bound the new value to the thumb's neighbours.\n if (disableSwap) {\n newValue = clamp(newValue, values[activeIndex - 1] || -Infinity, values[activeIndex + 1] || Infinity);\n }\n const previousValue = newValue;\n newValue = setValueIndex({\n values,\n newValue,\n index: activeIndex\n });\n\n // Potentially swap the index if needed.\n if (!(disableSwap && move)) {\n activeIndex = newValue.indexOf(previousValue);\n previousIndex.current = activeIndex;\n }\n }\n return {\n newValue,\n activeIndex\n };\n };\n const handleTouchMove = useEventCallback(nativeEvent => {\n const finger = trackFinger(nativeEvent, touchId);\n if (!finger) {\n return;\n }\n moveCount.current += 1;\n\n // Cancel move in case some other element consumed a mouseup event and it was not fired.\n // @ts-ignore buttons doesn't not exists on touch event\n if (nativeEvent.type === 'mousemove' && nativeEvent.buttons === 0) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n handleTouchEnd(nativeEvent);\n return;\n }\n const {\n newValue,\n activeIndex\n } = getFingerNewValue({\n finger,\n move: true\n });\n focusThumb({\n sliderRef,\n activeIndex,\n setActive\n });\n setValueState(newValue);\n if (!dragging && moveCount.current > INTENTIONAL_DRAG_COUNT_THRESHOLD) {\n setDragging(true);\n }\n if (handleChange && !areValuesEqual(newValue, valueDerived)) {\n handleChange(nativeEvent, newValue, activeIndex);\n }\n });\n const handleTouchEnd = useEventCallback(nativeEvent => {\n const finger = trackFinger(nativeEvent, touchId);\n setDragging(false);\n if (!finger) {\n return;\n }\n const {\n newValue\n } = getFingerNewValue({\n finger,\n move: true\n });\n setActive(-1);\n if (nativeEvent.type === 'touchend') {\n setOpen(-1);\n }\n if (onChangeCommitted) {\n onChangeCommitted(nativeEvent, newValue);\n }\n touchId.current = undefined;\n\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n stopListening();\n });\n const handleTouchStart = useEventCallback(nativeEvent => {\n if (disabled) {\n return;\n }\n // If touch-action: none; is not supported we need to prevent the scroll manually.\n if (!doesSupportTouchActionNone()) {\n nativeEvent.preventDefault();\n }\n const touch = nativeEvent.changedTouches[0];\n if (touch != null) {\n // A number that uniquely identifies the current finger in the touch session.\n touchId.current = touch.identifier;\n }\n const finger = trackFinger(nativeEvent, touchId);\n if (finger !== false) {\n const {\n newValue,\n activeIndex\n } = getFingerNewValue({\n finger\n });\n focusThumb({\n sliderRef,\n activeIndex,\n setActive\n });\n setValueState(newValue);\n if (handleChange && !areValuesEqual(newValue, valueDerived)) {\n handleChange(nativeEvent, newValue, activeIndex);\n }\n }\n moveCount.current = 0;\n const doc = ownerDocument(sliderRef.current);\n doc.addEventListener('touchmove', handleTouchMove, {\n passive: true\n });\n doc.addEventListener('touchend', handleTouchEnd, {\n passive: true\n });\n });\n const stopListening = React.useCallback(() => {\n const doc = ownerDocument(sliderRef.current);\n doc.removeEventListener('mousemove', handleTouchMove);\n doc.removeEventListener('mouseup', handleTouchEnd);\n doc.removeEventListener('touchmove', handleTouchMove);\n doc.removeEventListener('touchend', handleTouchEnd);\n }, [handleTouchEnd, handleTouchMove]);\n React.useEffect(() => {\n const {\n current: slider\n } = sliderRef;\n slider.addEventListener('touchstart', handleTouchStart, {\n passive: doesSupportTouchActionNone()\n });\n return () => {\n slider.removeEventListener('touchstart', handleTouchStart);\n stopListening();\n };\n }, [stopListening, handleTouchStart]);\n React.useEffect(() => {\n if (disabled) {\n stopListening();\n }\n }, [disabled, stopListening]);\n const createHandleMouseDown = otherHandlers => event => {\n var _otherHandlers$onMous;\n (_otherHandlers$onMous = otherHandlers.onMouseDown) == null || _otherHandlers$onMous.call(otherHandlers, event);\n if (disabled) {\n return;\n }\n if (event.defaultPrevented) {\n return;\n }\n\n // Only handle left clicks\n if (event.button !== 0) {\n return;\n }\n\n // Avoid text selection\n event.preventDefault();\n const finger = trackFinger(event, touchId);\n if (finger !== false) {\n const {\n newValue,\n activeIndex\n } = getFingerNewValue({\n finger\n });\n focusThumb({\n sliderRef,\n activeIndex,\n setActive\n });\n setValueState(newValue);\n if (handleChange && !areValuesEqual(newValue, valueDerived)) {\n handleChange(event, newValue, activeIndex);\n }\n }\n moveCount.current = 0;\n const doc = ownerDocument(sliderRef.current);\n doc.addEventListener('mousemove', handleTouchMove, {\n passive: true\n });\n doc.addEventListener('mouseup', handleTouchEnd);\n };\n const trackOffset = valueToPercent(range ? values[0] : min, min, max);\n const trackLeap = valueToPercent(values[values.length - 1], min, max) - trackOffset;\n const getRootProps = function () {\n let externalProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const externalHandlers = extractEventHandlers(externalProps);\n const ownEventHandlers = {\n onMouseDown: createHandleMouseDown(externalHandlers || {})\n };\n const mergedEventHandlers = _extends({}, externalHandlers, ownEventHandlers);\n return _extends({}, externalProps, {\n ref: handleRef\n }, mergedEventHandlers);\n };\n const createHandleMouseOver = otherHandlers => event => {\n var _otherHandlers$onMous2;\n (_otherHandlers$onMous2 = otherHandlers.onMouseOver) == null || _otherHandlers$onMous2.call(otherHandlers, event);\n const index = Number(event.currentTarget.getAttribute('data-index'));\n setOpen(index);\n };\n const createHandleMouseLeave = otherHandlers => event => {\n var _otherHandlers$onMous3;\n (_otherHandlers$onMous3 = otherHandlers.onMouseLeave) == null || _otherHandlers$onMous3.call(otherHandlers, event);\n setOpen(-1);\n };\n const getThumbProps = function () {\n let externalProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const externalHandlers = extractEventHandlers(externalProps);\n const ownEventHandlers = {\n onMouseOver: createHandleMouseOver(externalHandlers || {}),\n onMouseLeave: createHandleMouseLeave(externalHandlers || {})\n };\n return _extends({}, externalProps, externalHandlers, ownEventHandlers);\n };\n const getThumbStyle = index => {\n return {\n // So the non active thumb doesn't show its label on hover.\n pointerEvents: active !== -1 && active !== index ? 'none' : undefined\n };\n };\n const getHiddenInputProps = function () {\n let externalProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _parameters$step;\n const externalHandlers = extractEventHandlers(externalProps);\n const ownEventHandlers = {\n onChange: createHandleHiddenInputChange(externalHandlers || {}),\n onFocus: createHandleHiddenInputFocus(externalHandlers || {}),\n onBlur: createHandleHiddenInputBlur(externalHandlers || {}),\n onKeyDown: createHandleHiddenInputKeyDown(externalHandlers || {})\n };\n const mergedEventHandlers = _extends({}, externalHandlers, ownEventHandlers);\n return _extends({\n tabIndex,\n 'aria-labelledby': ariaLabelledby,\n 'aria-orientation': orientation,\n 'aria-valuemax': scale(max),\n 'aria-valuemin': scale(min),\n name,\n type: 'range',\n min: parameters.min,\n max: parameters.max,\n step: parameters.step === null && parameters.marks ? 'any' : (_parameters$step = parameters.step) != null ? _parameters$step : undefined,\n disabled\n }, externalProps, mergedEventHandlers, {\n style: _extends({}, visuallyHidden, {\n direction: isRtl ? 'rtl' : 'ltr',\n // So that VoiceOver's focus indicator matches the thumb's dimensions\n width: '100%',\n height: '100%'\n })\n });\n };\n return {\n active,\n axis: axis,\n axisProps,\n dragging,\n focusedThumbIndex,\n getHiddenInputProps,\n getRootProps,\n getThumbProps,\n marks: marks,\n open,\n range,\n rootRef: handleRef,\n trackLeap,\n trackOffset,\n values,\n getThumbStyle\n };\n}","import isHostComponent from '@mui/utils/isHostComponent';\nconst shouldSpreadAdditionalProps = Slot => {\n return !Slot || !isHostComponent(Slot);\n};\nexport default shouldSpreadAdditionalProps;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSliderUtilityClass(slot) {\n return generateUtilityClass('MuiSlider', slot);\n}\nconst sliderClasses = generateUtilityClasses('MuiSlider', ['root', 'active', 'colorPrimary', 'colorSecondary', 'colorError', 'colorInfo', 'colorSuccess', 'colorWarning', 'disabled', 'dragging', 'focusVisible', 'mark', 'markActive', 'marked', 'markLabel', 'markLabelActive', 'rail', 'sizeSmall', 'thumb', 'thumbColorPrimary', 'thumbColorSecondary', 'thumbColorError', 'thumbColorSuccess', 'thumbColorInfo', 'thumbColorWarning', 'track', 'trackInverted', 'trackFalse', 'thumbSizeSmall', 'valueLabel', 'valueLabelOpen', 'valueLabelCircle', 'valueLabelLabel', 'vertical']);\nexport default sliderClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"aria-label\", \"aria-valuetext\", \"aria-labelledby\", \"component\", \"components\", \"componentsProps\", \"color\", \"classes\", \"className\", \"disableSwap\", \"disabled\", \"getAriaLabel\", \"getAriaValueText\", \"marks\", \"max\", \"min\", \"name\", \"onChange\", \"onChangeCommitted\", \"orientation\", \"shiftStep\", \"size\", \"step\", \"scale\", \"slotProps\", \"slots\", \"tabIndex\", \"track\", \"value\", \"valueLabelDisplay\", \"valueLabelFormat\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha, lighten, darken } from '@mui/system/colorManipulator';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport isHostComponent from '@mui/utils/isHostComponent';\nimport { useSlider, valueToPercent } from './useSlider';\nimport { styled } from '../zero-styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport slotShouldForwardProp from '../styles/slotShouldForwardProp';\nimport shouldSpreadAdditionalProps from '../utils/shouldSpreadAdditionalProps';\nimport capitalize from '../utils/capitalize';\nimport BaseSliderValueLabel from './SliderValueLabel';\nimport sliderClasses, { getSliderUtilityClass } from './sliderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction Identity(x) {\n return x;\n}\nexport const SliderRoot = styled('span', {\n name: 'MuiSlider',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`color${capitalize(ownerState.color)}`], ownerState.size !== 'medium' && styles[`size${capitalize(ownerState.size)}`], ownerState.marked && styles.marked, ownerState.orientation === 'vertical' && styles.vertical, ownerState.track === 'inverted' && styles.trackInverted, ownerState.track === false && styles.trackFalse];\n }\n})(_ref9 => {\n let {\n theme\n } = _ref9;\n var _theme$vars;\n return {\n borderRadius: 12,\n boxSizing: 'content-box',\n display: 'inline-block',\n position: 'relative',\n cursor: 'pointer',\n touchAction: 'none',\n WebkitTapHighlightColor: 'transparent',\n '@media print': {\n colorAdjust: 'exact'\n },\n [`&.${sliderClasses.disabled}`]: {\n pointerEvents: 'none',\n cursor: 'default',\n color: (theme.vars || theme).palette.grey[400]\n },\n [`&.${sliderClasses.dragging}`]: {\n [`& .${sliderClasses.thumb}, & .${sliderClasses.track}`]: {\n transition: 'none'\n }\n },\n variants: [...Object.keys(((_theme$vars = theme.vars) != null ? _theme$vars : theme).palette).filter(key => {\n var _theme$vars2;\n return ((_theme$vars2 = theme.vars) != null ? _theme$vars2 : theme).palette[key].main;\n }).map(color => ({\n props: {\n color\n },\n style: {\n color: (theme.vars || theme).palette[color].main\n }\n })), {\n props: {\n orientation: 'horizontal'\n },\n style: {\n height: 4,\n width: '100%',\n padding: '13px 0',\n // The primary input mechanism of the device includes a pointing device of limited accuracy.\n '@media (pointer: coarse)': {\n // Reach 42px touch target, about ~8mm on screen.\n padding: '20px 0'\n }\n }\n }, {\n props: {\n orientation: 'horizontal',\n size: 'small'\n },\n style: {\n height: 2\n }\n }, {\n props: {\n orientation: 'horizontal',\n marked: true\n },\n style: {\n marginBottom: 20\n }\n }, {\n props: {\n orientation: 'vertical'\n },\n style: {\n height: '100%',\n width: 4,\n padding: '0 13px',\n // The primary input mechanism of the device includes a pointing device of limited accuracy.\n '@media (pointer: coarse)': {\n // Reach 42px touch target, about ~8mm on screen.\n padding: '0 20px'\n }\n }\n }, {\n props: {\n orientation: 'vertical',\n size: 'small'\n },\n style: {\n width: 2\n }\n }, {\n props: {\n orientation: 'vertical',\n marked: true\n },\n style: {\n marginRight: 44\n }\n }]\n };\n});\nexport const SliderRail = styled('span', {\n name: 'MuiSlider',\n slot: 'Rail',\n overridesResolver: (props, styles) => styles.rail\n})({\n display: 'block',\n position: 'absolute',\n borderRadius: 'inherit',\n backgroundColor: 'currentColor',\n opacity: 0.38,\n variants: [{\n props: {\n orientation: 'horizontal'\n },\n style: {\n width: '100%',\n height: 'inherit',\n top: '50%',\n transform: 'translateY(-50%)'\n }\n }, {\n props: {\n orientation: 'vertical'\n },\n style: {\n height: '100%',\n width: 'inherit',\n left: '50%',\n transform: 'translateX(-50%)'\n }\n }, {\n props: {\n track: 'inverted'\n },\n style: {\n opacity: 1\n }\n }]\n});\nexport const SliderTrack = styled('span', {\n name: 'MuiSlider',\n slot: 'Track',\n overridesResolver: (props, styles) => styles.track\n})(_ref10 => {\n let {\n theme\n } = _ref10;\n var _theme$vars3;\n return {\n display: 'block',\n position: 'absolute',\n borderRadius: 'inherit',\n border: '1px solid currentColor',\n backgroundColor: 'currentColor',\n transition: theme.transitions.create(['left', 'width', 'bottom', 'height'], {\n duration: theme.transitions.duration.shortest\n }),\n variants: [{\n props: {\n size: 'small'\n },\n style: {\n border: 'none'\n }\n }, {\n props: {\n orientation: 'horizontal'\n },\n style: {\n height: 'inherit',\n top: '50%',\n transform: 'translateY(-50%)'\n }\n }, {\n props: {\n orientation: 'vertical'\n },\n style: {\n width: 'inherit',\n left: '50%',\n transform: 'translateX(-50%)'\n }\n }, {\n props: {\n track: false\n },\n style: {\n display: 'none'\n }\n }, ...Object.keys(((_theme$vars3 = theme.vars) != null ? _theme$vars3 : theme).palette).filter(key => {\n var _theme$vars4;\n return ((_theme$vars4 = theme.vars) != null ? _theme$vars4 : theme).palette[key].main;\n }).map(color => ({\n props: {\n color,\n track: 'inverted'\n },\n style: _extends({}, theme.vars ? {\n backgroundColor: theme.vars.palette.Slider[`${color}Track`],\n borderColor: theme.vars.palette.Slider[`${color}Track`]\n } : _extends({\n backgroundColor: lighten(theme.palette[color].main, 0.62),\n borderColor: lighten(theme.palette[color].main, 0.62)\n }, theme.applyStyles('dark', {\n backgroundColor: darken(theme.palette[color].main, 0.5)\n }), theme.applyStyles('dark', {\n borderColor: darken(theme.palette[color].main, 0.5)\n })))\n }))]\n };\n});\nexport const SliderThumb = styled('span', {\n name: 'MuiSlider',\n slot: 'Thumb',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.thumb, styles[`thumbColor${capitalize(ownerState.color)}`], ownerState.size !== 'medium' && styles[`thumbSize${capitalize(ownerState.size)}`]];\n }\n})(_ref11 => {\n let {\n theme\n } = _ref11;\n var _theme$vars5;\n return {\n position: 'absolute',\n width: 20,\n height: 20,\n boxSizing: 'border-box',\n borderRadius: '50%',\n outline: 0,\n backgroundColor: 'currentColor',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: theme.transitions.create(['box-shadow', 'left', 'bottom'], {\n duration: theme.transitions.duration.shortest\n }),\n '&::before': {\n position: 'absolute',\n content: '\"\"',\n borderRadius: 'inherit',\n width: '100%',\n height: '100%',\n boxShadow: (theme.vars || theme).shadows[2]\n },\n '&::after': {\n position: 'absolute',\n content: '\"\"',\n borderRadius: '50%',\n // 42px is the hit target\n width: 42,\n height: 42,\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)'\n },\n [`&.${sliderClasses.disabled}`]: {\n '&:hover': {\n boxShadow: 'none'\n }\n },\n variants: [{\n props: {\n size: 'small'\n },\n style: {\n width: 12,\n height: 12,\n '&::before': {\n boxShadow: 'none'\n }\n }\n }, {\n props: {\n orientation: 'horizontal'\n },\n style: {\n top: '50%',\n transform: 'translate(-50%, -50%)'\n }\n }, {\n props: {\n orientation: 'vertical'\n },\n style: {\n left: '50%',\n transform: 'translate(-50%, 50%)'\n }\n }, ...Object.keys(((_theme$vars5 = theme.vars) != null ? _theme$vars5 : theme).palette).filter(key => {\n var _theme$vars6;\n return ((_theme$vars6 = theme.vars) != null ? _theme$vars6 : theme).palette[key].main;\n }).map(color => ({\n props: {\n color\n },\n style: {\n [`&:hover, &.${sliderClasses.focusVisible}`]: _extends({}, theme.vars ? {\n boxShadow: `0px 0px 0px 8px rgba(${theme.vars.palette[color].mainChannel} / 0.16)`\n } : {\n boxShadow: `0px 0px 0px 8px ${alpha(theme.palette[color].main, 0.16)}`\n }, {\n '@media (hover: none)': {\n boxShadow: 'none'\n }\n }),\n [`&.${sliderClasses.active}`]: _extends({}, theme.vars ? {\n boxShadow: `0px 0px 0px 14px rgba(${theme.vars.palette[color].mainChannel} / 0.16)`\n } : {\n boxShadow: `0px 0px 0px 14px ${alpha(theme.palette[color].main, 0.16)}`\n })\n }\n }))]\n };\n});\nexport const SliderValueLabel = styled(BaseSliderValueLabel, {\n name: 'MuiSlider',\n slot: 'ValueLabel',\n overridesResolver: (props, styles) => styles.valueLabel\n})(_ref12 => {\n let {\n theme\n } = _ref12;\n return _extends({\n zIndex: 1,\n whiteSpace: 'nowrap'\n }, theme.typography.body2, {\n fontWeight: 500,\n transition: theme.transitions.create(['transform'], {\n duration: theme.transitions.duration.shortest\n }),\n position: 'absolute',\n backgroundColor: (theme.vars || theme).palette.grey[600],\n borderRadius: 2,\n color: (theme.vars || theme).palette.common.white,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '0.25rem 0.75rem',\n variants: [{\n props: {\n orientation: 'horizontal'\n },\n style: {\n transform: 'translateY(-100%) scale(0)',\n top: '-10px',\n transformOrigin: 'bottom center',\n '&::before': {\n position: 'absolute',\n content: '\"\"',\n width: 8,\n height: 8,\n transform: 'translate(-50%, 50%) rotate(45deg)',\n backgroundColor: 'inherit',\n bottom: 0,\n left: '50%'\n },\n [`&.${sliderClasses.valueLabelOpen}`]: {\n transform: 'translateY(-100%) scale(1)'\n }\n }\n }, {\n props: {\n orientation: 'vertical'\n },\n style: {\n transform: 'translateY(-50%) scale(0)',\n right: '30px',\n top: '50%',\n transformOrigin: 'right center',\n '&::before': {\n position: 'absolute',\n content: '\"\"',\n width: 8,\n height: 8,\n transform: 'translate(-50%, -50%) rotate(45deg)',\n backgroundColor: 'inherit',\n right: -8,\n top: '50%'\n },\n [`&.${sliderClasses.valueLabelOpen}`]: {\n transform: 'translateY(-50%) scale(1)'\n }\n }\n }, {\n props: {\n size: 'small'\n },\n style: {\n fontSize: theme.typography.pxToRem(12),\n padding: '0.25rem 0.5rem'\n }\n }, {\n props: {\n orientation: 'vertical',\n size: 'small'\n },\n style: {\n right: '20px'\n }\n }]\n });\n});\nexport const SliderMark = styled('span', {\n name: 'MuiSlider',\n slot: 'Mark',\n shouldForwardProp: prop => slotShouldForwardProp(prop) && prop !== 'markActive',\n overridesResolver: (props, styles) => {\n const {\n markActive\n } = props;\n return [styles.mark, markActive && styles.markActive];\n }\n})(_ref13 => {\n let {\n theme\n } = _ref13;\n return {\n position: 'absolute',\n width: 2,\n height: 2,\n borderRadius: 1,\n backgroundColor: 'currentColor',\n variants: [{\n props: {\n orientation: 'horizontal'\n },\n style: {\n top: '50%',\n transform: 'translate(-1px, -50%)'\n }\n }, {\n props: {\n orientation: 'vertical'\n },\n style: {\n left: '50%',\n transform: 'translate(-50%, 1px)'\n }\n }, {\n props: {\n markActive: true\n },\n style: {\n backgroundColor: (theme.vars || theme).palette.background.paper,\n opacity: 0.8\n }\n }]\n };\n});\nexport const SliderMarkLabel = styled('span', {\n name: 'MuiSlider',\n slot: 'MarkLabel',\n shouldForwardProp: prop => slotShouldForwardProp(prop) && prop !== 'markLabelActive',\n overridesResolver: (props, styles) => styles.markLabel\n})(_ref14 => {\n let {\n theme\n } = _ref14;\n return _extends({}, theme.typography.body2, {\n color: (theme.vars || theme).palette.text.secondary,\n position: 'absolute',\n whiteSpace: 'nowrap',\n variants: [{\n props: {\n orientation: 'horizontal'\n },\n style: {\n top: 30,\n transform: 'translateX(-50%)',\n '@media (pointer: coarse)': {\n top: 40\n }\n }\n }, {\n props: {\n orientation: 'vertical'\n },\n style: {\n left: 36,\n transform: 'translateY(50%)',\n '@media (pointer: coarse)': {\n left: 44\n }\n }\n }, {\n props: {\n markLabelActive: true\n },\n style: {\n color: (theme.vars || theme).palette.text.primary\n }\n }]\n });\n});\nconst useUtilityClasses = ownerState => {\n const {\n disabled,\n dragging,\n marked,\n orientation,\n track,\n classes,\n color,\n size\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', dragging && 'dragging', marked && 'marked', orientation === 'vertical' && 'vertical', track === 'inverted' && 'trackInverted', track === false && 'trackFalse', color && `color${capitalize(color)}`, size && `size${capitalize(size)}`],\n rail: ['rail'],\n track: ['track'],\n mark: ['mark'],\n markActive: ['markActive'],\n markLabel: ['markLabel'],\n markLabelActive: ['markLabelActive'],\n valueLabel: ['valueLabel'],\n thumb: ['thumb', disabled && 'disabled', size && `thumbSize${capitalize(size)}`, color && `thumbColor${capitalize(color)}`],\n active: ['active'],\n disabled: ['disabled'],\n focusVisible: ['focusVisible']\n };\n return composeClasses(slots, getSliderUtilityClass, classes);\n};\nconst Forward = _ref15 => {\n let {\n children\n } = _ref15;\n return children;\n};\nconst Slider = /*#__PURE__*/React.forwardRef(function Slider(inputProps, ref) {\n var _ref, _slots$root, _ref2, _slots$rail, _ref3, _slots$track, _ref4, _slots$thumb, _ref5, _slots$valueLabel, _ref6, _slots$mark, _ref7, _slots$markLabel, _ref8, _slots$input, _slotProps$root, _slotProps$rail, _slotProps$track, _slotProps$thumb, _slotProps$valueLabel, _slotProps$mark, _slotProps$markLabel, _slotProps$input;\n const props = useDefaultProps({\n props: inputProps,\n name: 'MuiSlider'\n });\n const isRtl = useRtl();\n const {\n 'aria-label': ariaLabel,\n 'aria-valuetext': ariaValuetext,\n 'aria-labelledby': ariaLabelledby,\n // eslint-disable-next-line react/prop-types\n component = 'span',\n components = {},\n componentsProps = {},\n color = 'primary',\n classes: classesProp,\n className,\n disableSwap = false,\n disabled = false,\n getAriaLabel,\n getAriaValueText,\n marks: marksProp = false,\n max = 100,\n min = 0,\n orientation = 'horizontal',\n shiftStep = 10,\n size = 'medium',\n step = 1,\n scale = Identity,\n slotProps,\n slots,\n track = 'normal',\n valueLabelDisplay = 'off',\n valueLabelFormat = Identity\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n isRtl,\n max,\n min,\n classes: classesProp,\n disabled,\n disableSwap,\n orientation,\n marks: marksProp,\n color,\n size,\n step,\n shiftStep,\n scale,\n track,\n valueLabelDisplay,\n valueLabelFormat\n });\n const {\n axisProps,\n getRootProps,\n getHiddenInputProps,\n getThumbProps,\n open,\n active,\n axis,\n focusedThumbIndex,\n range,\n dragging,\n marks,\n values,\n trackOffset,\n trackLeap,\n getThumbStyle\n } = useSlider(_extends({}, ownerState, {\n rootRef: ref\n }));\n ownerState.marked = marks.length > 0 && marks.some(mark => mark.label);\n ownerState.dragging = dragging;\n ownerState.focusedThumbIndex = focusedThumbIndex;\n const classes = useUtilityClasses(ownerState);\n\n // support both `slots` and `components` for backward compatibility\n const RootSlot = (_ref = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components.Root) != null ? _ref : SliderRoot;\n const RailSlot = (_ref2 = (_slots$rail = slots == null ? void 0 : slots.rail) != null ? _slots$rail : components.Rail) != null ? _ref2 : SliderRail;\n const TrackSlot = (_ref3 = (_slots$track = slots == null ? void 0 : slots.track) != null ? _slots$track : components.Track) != null ? _ref3 : SliderTrack;\n const ThumbSlot = (_ref4 = (_slots$thumb = slots == null ? void 0 : slots.thumb) != null ? _slots$thumb : components.Thumb) != null ? _ref4 : SliderThumb;\n const ValueLabelSlot = (_ref5 = (_slots$valueLabel = slots == null ? void 0 : slots.valueLabel) != null ? _slots$valueLabel : components.ValueLabel) != null ? _ref5 : SliderValueLabel;\n const MarkSlot = (_ref6 = (_slots$mark = slots == null ? void 0 : slots.mark) != null ? _slots$mark : components.Mark) != null ? _ref6 : SliderMark;\n const MarkLabelSlot = (_ref7 = (_slots$markLabel = slots == null ? void 0 : slots.markLabel) != null ? _slots$markLabel : components.MarkLabel) != null ? _ref7 : SliderMarkLabel;\n const InputSlot = (_ref8 = (_slots$input = slots == null ? void 0 : slots.input) != null ? _slots$input : components.Input) != null ? _ref8 : 'input';\n const rootSlotProps = (_slotProps$root = slotProps == null ? void 0 : slotProps.root) != null ? _slotProps$root : componentsProps.root;\n const railSlotProps = (_slotProps$rail = slotProps == null ? void 0 : slotProps.rail) != null ? _slotProps$rail : componentsProps.rail;\n const trackSlotProps = (_slotProps$track = slotProps == null ? void 0 : slotProps.track) != null ? _slotProps$track : componentsProps.track;\n const thumbSlotProps = (_slotProps$thumb = slotProps == null ? void 0 : slotProps.thumb) != null ? _slotProps$thumb : componentsProps.thumb;\n const valueLabelSlotProps = (_slotProps$valueLabel = slotProps == null ? void 0 : slotProps.valueLabel) != null ? _slotProps$valueLabel : componentsProps.valueLabel;\n const markSlotProps = (_slotProps$mark = slotProps == null ? void 0 : slotProps.mark) != null ? _slotProps$mark : componentsProps.mark;\n const markLabelSlotProps = (_slotProps$markLabel = slotProps == null ? void 0 : slotProps.markLabel) != null ? _slotProps$markLabel : componentsProps.markLabel;\n const inputSlotProps = (_slotProps$input = slotProps == null ? void 0 : slotProps.input) != null ? _slotProps$input : componentsProps.input;\n const rootProps = useSlotProps({\n elementType: RootSlot,\n getSlotProps: getRootProps,\n externalSlotProps: rootSlotProps,\n externalForwardedProps: other,\n additionalProps: _extends({}, shouldSpreadAdditionalProps(RootSlot) && {\n as: component\n }),\n ownerState: _extends({}, ownerState, rootSlotProps == null ? void 0 : rootSlotProps.ownerState),\n className: [classes.root, className]\n });\n const railProps = useSlotProps({\n elementType: RailSlot,\n externalSlotProps: railSlotProps,\n ownerState,\n className: classes.rail\n });\n const trackProps = useSlotProps({\n elementType: TrackSlot,\n externalSlotProps: trackSlotProps,\n additionalProps: {\n style: _extends({}, axisProps[axis].offset(trackOffset), axisProps[axis].leap(trackLeap))\n },\n ownerState: _extends({}, ownerState, trackSlotProps == null ? void 0 : trackSlotProps.ownerState),\n className: classes.track\n });\n const thumbProps = useSlotProps({\n elementType: ThumbSlot,\n getSlotProps: getThumbProps,\n externalSlotProps: thumbSlotProps,\n ownerState: _extends({}, ownerState, thumbSlotProps == null ? void 0 : thumbSlotProps.ownerState),\n className: classes.thumb\n });\n const valueLabelProps = useSlotProps({\n elementType: ValueLabelSlot,\n externalSlotProps: valueLabelSlotProps,\n ownerState: _extends({}, ownerState, valueLabelSlotProps == null ? void 0 : valueLabelSlotProps.ownerState),\n className: classes.valueLabel\n });\n const markProps = useSlotProps({\n elementType: MarkSlot,\n externalSlotProps: markSlotProps,\n ownerState,\n className: classes.mark\n });\n const markLabelProps = useSlotProps({\n elementType: MarkLabelSlot,\n externalSlotProps: markLabelSlotProps,\n ownerState,\n className: classes.markLabel\n });\n const inputSliderProps = useSlotProps({\n elementType: InputSlot,\n getSlotProps: getHiddenInputProps,\n externalSlotProps: inputSlotProps,\n ownerState\n });\n return /*#__PURE__*/_jsxs(RootSlot, _extends({}, rootProps, {\n children: [/*#__PURE__*/_jsx(RailSlot, _extends({}, railProps)), /*#__PURE__*/_jsx(TrackSlot, _extends({}, trackProps)), marks.filter(mark => mark.value >= min && mark.value <= max).map((mark, index) => {\n const percent = valueToPercent(mark.value, min, max);\n const style = axisProps[axis].offset(percent);\n let markActive;\n if (track === false) {\n markActive = values.indexOf(mark.value) !== -1;\n } else {\n markActive = track === 'normal' && (range ? mark.value >= values[0] && mark.value <= values[values.length - 1] : mark.value <= values[0]) || track === 'inverted' && (range ? mark.value <= values[0] || mark.value >= values[values.length - 1] : mark.value >= values[0]);\n }\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(MarkSlot, _extends({\n \"data-index\": index\n }, markProps, !isHostComponent(MarkSlot) && {\n markActive\n }, {\n style: _extends({}, style, markProps.style),\n className: clsx(markProps.className, markActive && classes.markActive)\n })), mark.label != null ? /*#__PURE__*/_jsx(MarkLabelSlot, _extends({\n \"aria-hidden\": true,\n \"data-index\": index\n }, markLabelProps, !isHostComponent(MarkLabelSlot) && {\n markLabelActive: markActive\n }, {\n style: _extends({}, style, markLabelProps.style),\n className: clsx(classes.markLabel, markLabelProps.className, markActive && classes.markLabelActive),\n children: mark.label\n })) : null]\n }, index);\n }), values.map((value, index) => {\n const percent = valueToPercent(value, min, max);\n const style = axisProps[axis].offset(percent);\n const ValueLabelComponent = valueLabelDisplay === 'off' ? Forward : ValueLabelSlot;\n return /*#__PURE__*/(\n /* TODO v6: Change component structure. It will help in avoiding the complicated React.cloneElement API added in SliderValueLabel component. Should be: Thumb -> Input, ValueLabel. Follow Joy UI's Slider structure. */\n _jsx(ValueLabelComponent, _extends({}, !isHostComponent(ValueLabelComponent) && {\n valueLabelFormat,\n valueLabelDisplay,\n value: typeof valueLabelFormat === 'function' ? valueLabelFormat(scale(value), index) : valueLabelFormat,\n index,\n open: open === index || active === index || valueLabelDisplay === 'on',\n disabled\n }, valueLabelProps, {\n children: /*#__PURE__*/_jsx(ThumbSlot, _extends({\n \"data-index\": index\n }, thumbProps, {\n className: clsx(classes.thumb, thumbProps.className, active === index && classes.active, focusedThumbIndex === index && classes.focusVisible),\n style: _extends({}, style, getThumbStyle(index), thumbProps.style),\n children: /*#__PURE__*/_jsx(InputSlot, _extends({\n \"data-index\": index,\n \"aria-label\": getAriaLabel ? getAriaLabel(index) : ariaLabel,\n \"aria-valuenow\": scale(value),\n \"aria-labelledby\": ariaLabelledby,\n \"aria-valuetext\": getAriaValueText ? getAriaValueText(scale(value), index) : ariaValuetext,\n value: values[index]\n }, inputSliderProps))\n }))\n }), index)\n );\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default Slider;","'use client';\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport sliderClasses from './sliderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useValueLabelClasses = props => {\n const {\n open\n } = props;\n const utilityClasses = {\n offset: clsx(open && sliderClasses.valueLabelOpen),\n circle: sliderClasses.valueLabelCircle,\n label: sliderClasses.valueLabelLabel\n };\n return utilityClasses;\n};\n\n/**\n * @ignore - internal component.\n */\nexport default function SliderValueLabel(props) {\n const {\n children,\n className,\n value\n } = props;\n const classes = useValueLabelClasses(props);\n if (!children) {\n return null;\n }\n return /*#__PURE__*/React.cloneElement(children, {\n className: clsx(children.props.className)\n }, /*#__PURE__*/_jsxs(React.Fragment, {\n children: [children.props.children, /*#__PURE__*/_jsx(\"span\", {\n className: clsx(classes.offset, className),\n \"aria-hidden\": true,\n children: /*#__PURE__*/_jsx(\"span\", {\n className: classes.circle,\n children: /*#__PURE__*/_jsx(\"span\", {\n className: classes.label,\n children: value\n })\n })\n })]\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;","import React, { useState, useEffect, useRef } from 'react';\r\nimport { withPrefix } from 'gatsby-link';\r\n\r\nimport Loadable from '@loadable/component';\r\nimport Slider from '@mui/material/Slider';\r\n\r\nimport {\r\n _dontBeAverageChartOptions,\r\n _offerChartSeries,\r\n _offerChartData\r\n} from './index';\r\n\r\nexport default function ({ inline }) {\r\n const [dontBeAverageChartOptions, setDontBeAverageChartOptions] =\r\n useState(null);\r\n\r\n const [sliderUsage, setSliderUsage] = useState(\r\n _offerChartData.filter((price) => price.usage === 1000)[0]\r\n );\r\n\r\n const autoSliderInterval = useRef();\r\n const autoSliderValue = useRef();\r\n const [sliderClicked, setSliderClicked] = useState(false);\r\n\r\n useEffect(() => {\r\n if (document.getElementById('zipCode')) {\r\n document.getElementById('zipCode').focus();\r\n }\r\n\r\n autoSliderInterval.current = setInterval(() => {\r\n if (sliderUsage) {\r\n const lastUsage = autoSliderValue.current\r\n ? autoSliderValue.current\r\n : sliderUsage.usage;\r\n let autoSlideUsage;\r\n\r\n switch (lastUsage) {\r\n case 1000:\r\n autoSlideUsage = 700;\r\n break;\r\n case 700:\r\n autoSlideUsage = 1500;\r\n break;\r\n default:\r\n autoSlideUsage = 1000;\r\n break;\r\n }\r\n\r\n autoSliderValue.current = autoSlideUsage;\r\n\r\n setSliderUsage(\r\n _offerChartData.filter((price) => price.usage === autoSlideUsage)[0]\r\n );\r\n }\r\n }, 3000);\r\n\r\n return () => {\r\n if (autoSliderInterval.current) {\r\n clearInterval(autoSliderInterval.current);\r\n }\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (sliderUsage) {\r\n setDontBeAverageChartOptions({\r\n ..._dontBeAverageChartOptions,\r\n annotations: {\r\n xaxis: [\r\n {\r\n x: sliderUsage.lowUsage,\r\n x2: sliderUsage.highUsage,\r\n borderColor: '#337eff',\r\n fillColor: '#bbd4ff'\r\n // label: {\r\n // text:\r\n // 'Low of ' +\r\n // _selectedPrice.lowUsage +\r\n // ' kWh / High of ' +\r\n // _selectedPrice.highUsage +\r\n // ' kWh'\r\n // }\r\n }\r\n ]\r\n }\r\n });\r\n }\r\n }, [sliderUsage]);\r\n\r\n function getRangePosition() {\r\n let position = (sliderUsage.usage / 2400) * 100;\r\n const maxPosition = window && window.innerWidth > 668 ? 80 : 60;\r\n const minPosition = window && window.innerWidth > 668 ? 12 : 20;\r\n\r\n if (position > maxPosition) {\r\n position = maxPosition;\r\n } else {\r\n if (position < minPosition) {\r\n position = minPosition;\r\n }\r\n }\r\n\r\n return position;\r\n }\r\n\r\n function getSliderArrowStyle() {\r\n let width = ((sliderUsage.highUsage - sliderUsage.lowUsage) / 2400) * 100;\r\n\r\n if (window && window.innerWidth < 668) {\r\n if (width < 10) {\r\n width = 10;\r\n }\r\n }\r\n\r\n let style = {\r\n left: (sliderUsage.lowUsage / 2400) * 100 + '%',\r\n width: width + '%'\r\n };\r\n\r\n return style;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

Don't Be Average

\r\n
\r\n
\r\n {dontBeAverageChartOptions ? (\r\n <>\r\n

\r\n The price schedule below is based on a plan with a fixed\r\n energy price of 24.5¢ per kilowatt hour and a $100 bill credit\r\n at 1,000 kilowatts, resulting in an{' '}\r\n advertised price of 14.5¢ at{' '}\r\n 1000 kWh.\r\n

\r\n\r\n
\r\n \r\n \r\n\r\n
\r\n Advertised price\r\n\r\n
\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n\r\n \r\n Seasonal Range \r\n
\r\n Average: {sliderUsage.usage}\r\n
\r\n Low: {sliderUsage.lowUsage}   High:{' '}\r\n {sliderUsage.highUsage}\r\n \r\n
\r\n
\r\n \r\n value + ' kWh'}\r\n valueLabelDisplay=\"auto\"\r\n step={25}\r\n marks\r\n min={100}\r\n max={2400}\r\n onChange={(event, newValue) => {\r\n setSliderClicked(true);\r\n\r\n setSliderUsage(\r\n _offerChartData.filter(\r\n (price) => price.usage === newValue\r\n )[0]\r\n );\r\n\r\n if (autoSliderInterval.current) {\r\n clearInterval(autoSliderInterval.current);\r\n }\r\n }}\r\n />\r\n\r\n
    \r\n
  • \r\n
    12-Month Average Usage
    \r\n
    {sliderUsage.usage} kWh
    \r\n
    \r\n \r\n Low: {sliderUsage.lowUsage}\r\n \r\n \r\n High: {sliderUsage.highUsage}\r\n \r\n
    \r\n
  • \r\n\r\n
  • \r\n
    Average \"True Price\"
    \r\n
    \r\n {sliderUsage.trueCost_PerKWh.toFixed(1)}¢\r\n
    \r\n
    \r\n \r\n Low:{' '}\r\n {sliderUsage.lowPrice.toFixed(1)}¢\r\n \r\n \r\n High:{' '}\r\n {sliderUsage.highPrice.toFixed(1)}¢\r\n \r\n
    \r\n
  • \r\n\r\n
  • \r\n
    Average \"True Cost\"
    \r\n
    \r\n ${sliderUsage.trueCost_Dollars.toFixed(2)}\r\n
    \r\n
    \r\n \r\n Low:{' '}\r\n ${sliderUsage.lowDollars.toFixed(2)}\r\n \r\n High:{' '}\r\n \r\n ${sliderUsage.highDollars.toFixed(2)}\r\n \r\n
    \r\n
  • \r\n
\r\n\r\n

\r\n This plan has a{' '}\r\n \r\n $100 Bill Credit{' '}\r\n \r\n if usage is {'>'} 1000 kWh\r\n \r\n \r\n

\r\n

\r\n Credit would have applied in{' '}\r\n \r\n {sliderUsage.creditCount} of the past 12 months.\r\n \r\n

\r\n\r\n

\r\n Using the Seasonal Usage Curve above, the average consumer\r\n would have received the bill credit in{' '}\r\n {sliderUsage.creditCount} of the past 12 months, resulting\r\n in an annual average price (True Price) of{' '}\r\n {sliderUsage.trueCost_PerKWh.toFixed(1)}¢ per kilowatt hour.\r\n

\r\n
\r\n \r\n ) : null}\r\n
\r\n\r\n

\r\n The average Texan overpays for electricity by about 15% because they\r\n are led to believe that the advertised price they see elsewhere is\r\n the true price of that plan.\r\n

\r\n

\r\n It’s not. In reality, those 500-1000-2000 kilowatt\r\n prices advertised on the EFL are really quite useless when it comes\r\n to finding your best deal.\r\n

\r\n

\r\n The only way to truly find your best deal is to do the necessary\r\n math and convert ALL available plan options to a common value, a\r\n “True Price” if you will, that accurately represents what each plan\r\n will likely cost you over the next 12 months based on a Seasonally\r\n Adjusted Usage Profile.\r\n

\r\n

\r\n The sliding usage bar on the chart to the right is a visual\r\n representation of the math it takes to find each plans True Cost. As\r\n you move the sliding usage bar back and forth, the True Price and\r\n True Cost change to show you what your average costs will be over a\r\n 12-month period.\r\n

\r\n

\r\n This shows you that within some usage profiles this type of plan may\r\n still a good deal, but at other lower ranges, you’ll pay\r\n significantly more than advertised. At no point does anyone pay the\r\n Advertised Price for the full year.\r\n

\r\n

\r\n Our platform automatically performs these calculations for you, on\r\n all plans at all usage levels, because all plans are like this, good\r\n for some consumers, not so good for others.\r\n

\r\n
\r\n \r\n \r\n );\r\n}\r\n\r\nconst LoadableChart = Loadable(() => import('react-apexcharts'));\r\n","import React, { useState } from 'react';\r\nimport { withPrefix } from 'gatsby-link';\r\n\r\nimport { stateUsageLastUpdated } from './index';\r\n\r\nexport default function ({}) {\r\n return (\r\n
\r\n
\r\n
\r\n

Factoring in the Rollercoaster

\r\n\r\n
\r\n \r\n

\r\n Average Monthly Usage per Residential Customer in Texas Source:{' '}\r\n \r\n EIA Electric Power Monthly\r\n {' '}\r\n (Updated {stateUsageLastUpdated})\r\n

\r\n
\r\n
\r\n

\r\n Accounting for seasonal usage fluctuations is critical to finding\r\n your best price.\r\n

\r\n

\r\n The most important, and often overlooked, factor in determining an\r\n electric plan’s “True Price” is the use of a Seasonally Adjusted\r\n Usage Profile.\r\n

\r\n

\r\n According to the Energy Information Administration (EIA), a typical\r\n residential consumer in Texas has used, on average, 1145 kilowatt\r\n hours (kWh) per month over the past 12 months.\r\n

\r\n

\r\n But choosing a plan based on just one number, whether it be the\r\n arbitrary 1000 kWh one that shopping sites typically use, the state\r\n average above or your own personal average, won’t result in you\r\n finding your best deal.\r\n

\r\n

\r\n To truly find your best deal you need to use the EIA’s Seasonally\r\n Adjusted Usage Profile for Texas, or better yet, your actual\r\n historical usage profile (click here to see how easy it is for us to\r\n get that for you) to estimate your monthly usage going forward. Then\r\n using the price schedule from each plan’s Electricity Facts Label\r\n (EFL), calculate that plan’s charges for each of the next 12-months\r\n to determine the plan’s “True Cost”. Then repeat that for all 100+\r\n plans that are available.\r\n

\r\n

\r\n Whoa, that’s a lot of math. Fortunately for you WE LOVE MATH, so let\r\n us do the nerdy part for you!\r\n

\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React, { useEffect, useState } from 'react';\r\nimport { withPrefix } from 'gatsby-link';\r\nimport Loadable from '@loadable/component';\r\nimport { _dontBeAverageChartOptions, _offerChartSeries } from './index';\r\nimport { set } from 'date-fns';\r\n\r\nexport default function ({\r\n inline,\r\n article,\r\n bottomText,\r\n noText,\r\n waitForTrap,\r\n showTrap\r\n}) {\r\n const [chartSeries, setChartSeries] = useState(\r\n waitForTrap ? [] : _offerChartSeries // Start with no series if waiting for trap\r\n );\r\n const [trapChartOptions, setTrapChartOptions] = useState({\r\n ..._dontBeAverageChartOptions,\r\n animations: {\r\n enabled: true,\r\n easing: 'easeout',\r\n speed: 800\r\n }\r\n });\r\n\r\n useEffect(() => {\r\n if (showTrap) {\r\n // Delay setting the series to create the animation effect\r\n setTimeout(() => {\r\n setChartSeries(_offerChartSeries);\r\n }, 200); // Adjust this delay if needed\r\n }\r\n }, [showTrap]);\r\n\r\n return (\r\n
\r\n
\r\n\r\n
\r\n {!article ?

The 1,000-kilowatt trap

: null}\r\n\r\n
\r\n {trapChartOptions ? (\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n Example Advertised Price at 14.5¢ - if you use exactly 1,000\r\n kWh every month\r\n \r\n Advertised price\r\n \r\n Use any more or less and your price goes up\r\n \r\n
\r\n
\r\n
\r\n ) : null}\r\n\r\n {!noText && (\r\n <>\r\n {' '}\r\n

\r\n Want to know a secret? The plans with the lowest advertised\r\n rates are not always the best overall deals.\r\n

\r\n

\r\n That’s because they get to those really low rates through\r\n pricing adjustments, usually in the form of a bill credit at\r\n exactly 1,000 kilowatts.\r\n

\r\n

\r\n That means that ‘really low price’ you saw only applies if you\r\n use exactly 1,000 kilowatts. Use 1 kilowatt less and your rate\r\n can sometimes double.\r\n

\r\n

\r\n And since no one uses exactly 1,000 kilowatts every month,\r\n everyone ends up paying more than the advertised price. That\r\n said, plans with bill credits can still be a good deal in some\r\n circumstances, but only if your usage profile falls within the\r\n plan’s sweet spot, that area just past, but not too far past,\r\n the credit threshold.\r\n

\r\n

\r\n You can avoid the 1,000-kilowatt trap by using SmarterChoice’s\r\n “True Price” column to find YOUR best deal.\r\n

\r\n

\r\n You can avoid the 1,000-kilowatt trap by looking for the plan\r\n with the Best Year Round Value here at SmarterChoice.\r\n

\r\n \r\n )}\r\n {bottomText ? bottomText : null}\r\n
\r\n
\r\n
\r\n );\r\n}\r\nconst LoadableChart = Loadable(() => import('react-apexcharts'));\r\n","import { ContactlessOutlined, ContactsOutlined } from '@mui/icons-material';\r\nimport React, { useEffect, useState, useRef } from 'react';\r\n\r\nconst providerList = [\r\n // {\r\n // logoUrl:\r\n // 'https://mi-provider-logo.s3-us-west-1.amazonaws.com/74971_logo-provider-first-choice-power.png',\r\n // providerName: 'First Choice Power'\r\n // },\r\n // {\r\n // logoUrl:\r\n // 'https://mi-provider-logo.s3-us-west-1.amazonaws.com/75593_reliant-energy-logo-600x353.png',\r\n // providerName: 'Reliant Energy'\r\n // },\r\n // {\r\n // logoUrl:\r\n // 'https://mi-provider-logo.s3-us-west-1.amazonaws.com/75597_Direct-Energy-min.jpg',\r\n // providerName: 'Direct Energy'\r\n // },\r\n {\r\n logoUrl:\r\n 'https://mi-provider-logo.s3-us-west-1.amazonaws.com/75750_logo-provider-tara-energy.png',\r\n providerName: 'Tara Energy, Inc'\r\n },\r\n {\r\n logoUrl:\r\n 'https://mi-provider-logo.s3-us-west-1.amazonaws.com/75841_txu.svg',\r\n providerName: 'TXU Energy'\r\n },\r\n {\r\n logoUrl:\r\n 'https://mi-provider-logo.s3-us-west-1.amazonaws.com/76015_logo-provider-amigo-energy.png',\r\n providerName: 'Amigo Energy'\r\n },\r\n\r\n // {\r\n // logoUrl:\r\n // 'https://mi-provider-logo.s3-us-west-1.amazonaws.com/76077_Discount-Power-Logo.jpg',\r\n // providerName: 'Discount Power'\r\n // },\r\n {\r\n logoUrl:\r\n 'https://mi-provider-logo.s3-us-west-1.amazonaws.com/76097_NextEra_Energy_logo_(1).svg',\r\n providerName: 'NextEra'\r\n },\r\n\r\n // {\r\n // logoUrl:\r\n // 'https://mi-provider-logo.s3-us-west-1.amazonaws.com/76351_cirro.jpg',\r\n // providerName: 'Cirro Corporation'\r\n // },\r\n\r\n {\r\n logoUrl:\r\n 'https://mi-provider-logo.s3-us-west-1.amazonaws.com/77690_4Change-Energy-logo (1).jpg',\r\n providerName: '4Change Energy'\r\n },\r\n\r\n {\r\n logoUrl:\r\n 'https://mi-provider-logo.s3-us-west-1.amazonaws.com/85467_express-logo.svg',\r\n providerName: 'Express Energy'\r\n },\r\n\r\n {\r\n logoUrl:\r\n 'https://mi-provider-logo.s3-us-west-1.amazonaws.com/85468_logo-payless-color.svg',\r\n providerName: 'Payless Power'\r\n },\r\n\r\n {\r\n logoUrl:\r\n 'https://mi-provider-logo.s3-us-west-1.amazonaws.com/77933_Pulse_Power_Logo.svg',\r\n providerName: 'Pulse Power'\r\n }\r\n];\r\n\r\nfunction TXProviderList({}) {\r\n const maxProvidersShown = 6;\r\n const [visibleProviderList, setVisibleProviderList] = useState(\r\n getRandom(providerList, maxProvidersShown)\r\n );\r\n const swapTimer = useRef();\r\n const classTimer = useRef();\r\n const [updatingProvider, setUpdatingProvider] = useState({});\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (swapTimer.current) {\r\n clearTimeout(swapTimer.current);\r\n }\r\n\r\n if (classTimer.current) {\r\n clearTimeout(classTimer.current);\r\n }\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (visibleProviderList) {\r\n swapTimer.current = setTimeout(() => {\r\n //Randomly select a slot to replace\r\n const randomSlotIndex = Math.round(\r\n getRandomArbitrary(0, maxProvidersShown)\r\n );\r\n\r\n //Create a list of providers not in use\r\n const _availableProviders = providerList.filter(\r\n (provider) =>\r\n visibleProviderList.filter(\r\n (visibleProvider) =>\r\n visibleProvider.providerName === provider.providerName\r\n ).length === 0\r\n );\r\n\r\n //Update the provider list\r\n const newProvider = { ...getRandom(_availableProviders, 1)[0] };\r\n setVisibleProviderList(\r\n visibleProviderList.map((provider, providerIndex) =>\r\n providerIndex === randomSlotIndex\r\n ? { ...newProvider }\r\n : { ...provider }\r\n )\r\n );\r\n\r\n setUpdatingProvider({\r\n ...updatingProvider,\r\n [newProvider.providerName]: true\r\n });\r\n\r\n classTimer.current = setTimeout(() => {\r\n removeUpdatingFlag();\r\n }, 200);\r\n }, 3000);\r\n }\r\n }, [visibleProviderList]);\r\n\r\n function removeUpdatingFlag() {\r\n let _updatingProvider = { ...updatingProvider };\r\n\r\n for (const key in _updatingProvider) {\r\n _updatingProvider[key] = false;\r\n }\r\n\r\n setUpdatingProvider({ ..._updatingProvider });\r\n }\r\n\r\n function getRandom(arr, n) {\r\n var result = new Array(n),\r\n len = arr.length,\r\n taken = new Array(len);\r\n if (n > len)\r\n throw new RangeError('getRandom: more elements taken than available');\r\n while (n--) {\r\n var x = Math.floor(Math.random() * len);\r\n result[n] = arr[x in taken ? taken[x] : x];\r\n taken[x] = --len in taken ? taken[len] : len;\r\n }\r\n return result;\r\n }\r\n\r\n function getRandomArbitrary(min, max) {\r\n return Math.random() * (max - min) + min;\r\n }\r\n\r\n return visibleProviderList ? (\r\n
\r\n {visibleProviderList.map((provider) => (\r\n \r\n {provider.providerName}\r\n
\r\n ))}\r\n \r\n ) : null;\r\n}\r\n\r\nexport default TXProviderList;\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport Loadable from '@loadable/component';\r\nimport { navigate } from 'gatsby-link';\r\nimport { withPrefix } from 'gatsby-link';\r\nimport { useQueryParam } from 'gatsby-query-params';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\n\r\nimport '../TXLandingPage/index.css';\r\nimport '../Default/index.css';\r\n\r\nimport { AppBar, TextField, Button } from '@mui/material';\r\n\r\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\r\nimport ArrowDownward from '@mui/icons-material/ArrowDownward';\r\nimport TXProviderList from '../TXLandingPage/TXProviderList';\r\n\r\nimport * as webSocketActions from '../../redux/actions/webSocketActions';\r\nimport * as serviceAddressActions from '../../redux/actions/serviceAddressActions';\r\nimport * as dataApi from '../../api/dataApi';\r\nimport * as offerCalc from '../../api/offerCalc';\r\n\r\nimport ThousandKWhTrap from './ThousandKWhTrap';\r\nimport Rollercoaster from './Rollercoaster';\r\nimport DontBeAverage from './DontBeAverage';\r\nimport SCLandingWrapper from '../SCLandingWrapper';\r\n\r\nconst $ = typeof window !== 'undefined' ? window.$ : {};\r\n\r\nconst offer = {\r\n ProviderName: '4Change Energy',\r\n OfferID: 1636480,\r\n ProviderID: 77690,\r\n OfferName: 'Maxx Saver Select 12',\r\n PriceDollars: null,\r\n TermLength: 12,\r\n OfferDetailText: '',\r\n InternetDownloadSpeedMb: null,\r\n TVChannelCount: null,\r\n PhoneText: null,\r\n ProviderServiceList: 'Electric',\r\n HomeSecurityText: null,\r\n FeatureBadge1: '',\r\n LogoFile: '77690_4change_energy_logoV2-01.svg',\r\n PUCNumber: '10041',\r\n ProviderStatusID: 1,\r\n ProductKey: '4Change Energy-Oncor-Maxx Saver Select 12',\r\n OfferStatusID: 2,\r\n OfferStatusName: 'Active',\r\n ProviderOfferCode1: '1319161',\r\n ProviderOfferCode2: '',\r\n ProviderOfferCode3: '',\r\n ProviderOfferCode4: '',\r\n ProviderOfferCode5: '',\r\n ProviderOfferCode6: '',\r\n ProviderOfferCode7: '',\r\n ProviderOfferCode8: '',\r\n ProviderOfferCode9: '',\r\n OfferValidStartDate: '2021-07-21T00:00:00',\r\n OfferValidEndDate: null,\r\n TerminationFeeTypeID: 2,\r\n TerminationFeeTypeName: 'PMR',\r\n TerminationFeeAmount: 20,\r\n IsPrepaid: false,\r\n NewCustomersOnly: false,\r\n ExistingCustomersOnly: false,\r\n EBillOnly: false,\r\n FeatureBadge2: '',\r\n FeatureBadge3: '',\r\n FeatureBadge4: '',\r\n FeatureBadge5: '',\r\n OffsiteSignUpUrl: 'https://www.4changeenergy.com/',\r\n UtilityID: 5,\r\n EFLUrl:\r\n 'https://www.4changeenergy.com/viewpdf.aspx/Docs/efl_mxsela12lbt_o.pdf',\r\n TOSUrl: 'https://www.4changeenergy.com/Docs/TOSA_4ChangeEnergy.pdf',\r\n YRAACUrl: 'https://www.4changeenergy.com/Docs/YRAC_4ChangeEnergy.pdf',\r\n PriceAt500: 0.209,\r\n PriceAt1000: 0.105,\r\n PriceAt2000: 0.153,\r\n UtilityBaseCharge: 4.23,\r\n UtilityUsageCharge: 0.051893,\r\n ProviderBaseCharge_Tier1_Amount: 0,\r\n ProviderBaseCharge_Tier1_Start: null,\r\n ProviderBaseCharge_Tier1_End: null,\r\n ProviderBaseCharge_Tier2_Amount: null,\r\n ProviderBaseCharge_Tier2_Start: null,\r\n ProviderBaseCharge_Tier2_End: null,\r\n ProviderBaseCharge_Tier3_Amount: null,\r\n ProviderBaseCharge_Tier3_Start: null,\r\n ProviderBaseCharge_Tier3_End: null,\r\n ProviderBaseCharge_Tier4_Amount: null,\r\n ProviderBaseCharge_Tier4_Start: null,\r\n ProviderBaseCharge_Tier4_End: null,\r\n ProviderBaseCharge_Tier5_Amount: null,\r\n ProviderBaseCharge_Tier5_Start: null,\r\n ProviderBaseCharge_Tier5_End: null,\r\n ProviderBaseCharge_PerDay_Amount: null,\r\n ProviderBaseCharge_PerDay_UsageCredit: null,\r\n ProviderUsageCharge_Tier1_Amount: 0.148967,\r\n ProviderUsageCharge_Tier1_Start: 0,\r\n ProviderUsageCharge_Tier1_End: null,\r\n ProviderUsageCharge_Tier2_Amount: null,\r\n ProviderUsageCharge_Tier2_Start: null,\r\n ProviderUsageCharge_Tier2_End: null,\r\n ProviderUsageCharge_Tier3_Amount: null,\r\n ProviderUsageCharge_Tier3_Start: null,\r\n ProviderUsageCharge_Tier3_End: null,\r\n ProviderUsageCharge_Tier4_Amount: null,\r\n ProviderUsageCharge_Tier4_Start: null,\r\n ProviderUsageCharge_Tier4_End: null,\r\n ProviderUsageCharge_Tier5_Amount: null,\r\n ProviderUsageCharge_Tier5_Start: null,\r\n ProviderUsageCharge_Tier5_End: null,\r\n ProviderFlatCharge_Tier1_Amount: null,\r\n ProviderFlatCharge_Tier1_Start: null,\r\n ProviderFlatCharge_Tier1_End: null,\r\n ProviderFlatCharge_Tier2_Amount: null,\r\n ProviderFlatCharge_Tier2_Start: null,\r\n ProviderFlatCharge_Tier2_End: null,\r\n ProviderFlatCharge_Tier3_Amount: null,\r\n ProviderFlatCharge_Tier3_Start: null,\r\n ProviderFlatCharge_Tier3_End: null,\r\n ProviderFlatCharge_Tier4_Amount: null,\r\n ProviderFlatCharge_Tier4_Start: null,\r\n ProviderFlatCharge_Tier4_End: null,\r\n ProviderFlatCharge_Tier5_Amount: null,\r\n ProviderFlatCharge_Tier5_Start: null,\r\n ProviderFlatCharge_Tier5_End: null,\r\n ProviderCredit_Tier1_Amount: 100,\r\n ProviderCredit_Tier1_Start: 1000,\r\n ProviderCredit_Tier1_End: null,\r\n ProviderCredit_Tier2_Amount: 0,\r\n ProviderCredit_Tier2_Start: 0,\r\n ProviderCredit_Tier2_End: 0,\r\n ProviderCredit_Tier3_Amount: 0,\r\n ProviderCredit_Tier3_Start: 0,\r\n ProviderCredit_Tier3_End: 0,\r\n ProviderCredit_Tier4_Amount: null,\r\n ProviderCredit_Tier4_Start: null,\r\n ProviderCredit_Tier4_End: null,\r\n ProviderCredit_Tier5_Amount: null,\r\n ProviderCredit_Tier5_Start: null,\r\n ProviderCredit_Tier5_End: null,\r\n BaseChargeAdjustment_All: null,\r\n BaseChargeAdjustment_Provider: null,\r\n BaseChargeAdjustment_Utility: null,\r\n UsageChargeAdjustment_All: null,\r\n UsageChargeAdjustment_Provider: null,\r\n UsageChargeAdjustment_Utility: null,\r\n EBillProviderDiscount_All: null,\r\n EBillProviderDiscount_ProviderBaseCharge: null,\r\n EBillProviderDiscount_ProviderUsageCharge: null,\r\n UtilityName: 'Oncor',\r\n RenewableContent: 6,\r\n ProductTypeID: 6,\r\n CompareStateAverage_Start: 1000,\r\n CompareStateAverage_End: 1760,\r\n OrderPhone: '833-564-1391',\r\n CompareStateAverage_Count: 1,\r\n DisplayName: 'Maxx Saver Select 12',\r\n OfferTypeID: 1,\r\n OfferTypeName: 'Plan',\r\n AutoPayRequired: false,\r\n AutoPayDiscount: null,\r\n AutoPayDiscountTerm: null,\r\n TermTypeID: null,\r\n TermTypeName: null,\r\n Term_Rate1_Amount: null,\r\n Term_Rate1_Start: null,\r\n Term_Rate1_End: null,\r\n Term_Rate2_Amount: null,\r\n Term_Rate2_Start: null,\r\n Term_Rate2_End: null,\r\n Term_Rate3_Amount: null,\r\n Term_Rate3_Start: null,\r\n Term_Rate3_End: null,\r\n Term_Rate4_Amount: null,\r\n Term_Rate4_Start: null,\r\n Term_Rate4_End: null,\r\n Term_Rate5_Amount: null,\r\n Term_Rate5_Start: null,\r\n Term_Rate5_End: null,\r\n TermDiscount: null,\r\n Bundle1_OfferID: null,\r\n Bundle2_OfferID: null,\r\n Bundle3_OfferID: null,\r\n Bundle4_OfferID: null,\r\n Bundle5_OfferID: null,\r\n PhoneIsUnlimitedCalling: null,\r\n InternetRequired: null,\r\n TVRequired: null,\r\n PhoneRequired: null,\r\n HomeSecurityRequired: null,\r\n IsFiber: null,\r\n DataMaxGb: null,\r\n DataOverageFee: null,\r\n MinimumUpfrontPayment: null,\r\n Charge1_Group: null,\r\n Charge1_Name: null,\r\n Charge1_MonthlyAmount: null,\r\n Charge1_PurchaseAmount: null,\r\n Charge1_Term: null,\r\n Charge1_Term_Start: null,\r\n Charge1_Term_End: null,\r\n Charge1_IsRequired: null,\r\n Charge2_Group: null,\r\n Charge2_Name: null,\r\n Charge2_MonthlyAmount: null,\r\n Charge2_PurchaseAmount: null,\r\n Charge2_Term: null,\r\n Charge2_Term_Start: null,\r\n Charge2_Term_End: null,\r\n Charge2_IsRequired: null,\r\n Charge3_Group: null,\r\n Charge3_Name: null,\r\n Charge3_MonthlyAmount: null,\r\n Charge3_PurchaseAmount: null,\r\n Charge3_Term: null,\r\n Charge3_Term_Start: null,\r\n Charge3_Term_End: null,\r\n Charge3_IsRequired: null,\r\n Charge4_Group: null,\r\n Charge4_Name: null,\r\n Charge4_MonthlyAmount: null,\r\n Charge4_PurchaseAmount: null,\r\n Charge4_Term: null,\r\n Charge4_Term_Start: null,\r\n Charge4_Term_End: null,\r\n Charge4_IsRequired: null,\r\n Charge5_Group: null,\r\n Charge5_Name: null,\r\n Charge5_MonthlyAmount: null,\r\n Charge5_PurchaseAmount: null,\r\n Charge5_Term: null,\r\n Charge5_Term_Start: null,\r\n Charge5_Term_End: null,\r\n Charge5_IsRequired: null,\r\n Charge6_Group: null,\r\n Charge6_Name: null,\r\n Charge6_MonthlyAmount: null,\r\n Charge6_PurchaseAmount: null,\r\n Charge6_Term: null,\r\n Charge6_Term_Start: null,\r\n Charge6_Term_End: null,\r\n Charge6_IsRequired: null,\r\n Charge7_Group: null,\r\n Charge7_Name: null,\r\n Charge7_MonthlyAmount: null,\r\n Charge7_PurchaseAmount: null,\r\n Charge7_Term: null,\r\n Charge7_Term_Start: null,\r\n Charge7_Term_End: null,\r\n Charge7_IsRequired: null,\r\n Charge8_Group: null,\r\n Charge8_Name: null,\r\n Charge8_MonthlyAmount: null,\r\n Charge8_PurchaseAmount: null,\r\n Charge8_Term: null,\r\n Charge8_Term_Start: null,\r\n Charge8_Term_End: null,\r\n Charge8_IsRequired: null,\r\n Charge9_Group: null,\r\n Charge9_Name: null,\r\n Charge9_MonthlyAmount: null,\r\n Charge9_PurchaseAmount: null,\r\n Charge9_Term: null,\r\n Charge9_Term_Start: null,\r\n Charge9_Term_End: null,\r\n Charge9_IsRequired: null,\r\n Charge10_Group: null,\r\n Charge10_Name: null,\r\n Charge10_MonthlyAmount: null,\r\n Charge10_PurchaseAmount: null,\r\n Charge10_Term: null,\r\n Charge10_Term_Start: null,\r\n Charge10_Term_End: null,\r\n Charge10_IsRequired: null,\r\n Charge11_Group: null,\r\n Charge11_Name: null,\r\n Charge11_MonthlyAmount: null,\r\n Charge11_PurchaseAmount: null,\r\n Charge11_Term: null,\r\n Charge11_Term_Start: null,\r\n Charge11_Term_End: null,\r\n Charge11_IsRequired: null,\r\n Charge12_Group: null,\r\n Charge12_Name: null,\r\n Charge12_MonthlyAmount: null,\r\n Charge12_PurchaseAmount: null,\r\n Charge12_Term: null,\r\n Charge12_Term_Start: null,\r\n Charge12_Term_End: null,\r\n Charge12_IsRequired: null,\r\n Charge13_Group: null,\r\n Charge13_Name: null,\r\n Charge13_MonthlyAmount: null,\r\n Charge13_PurchaseAmount: null,\r\n Charge13_Term: null,\r\n Charge13_Term_Start: null,\r\n Charge13_Term_End: null,\r\n Charge13_IsRequired: null,\r\n Charge14_Group: null,\r\n Charge14_Name: null,\r\n Charge14_MonthlyAmount: null,\r\n Charge14_PurchaseAmount: null,\r\n Charge14_Term: null,\r\n Charge14_Term_Start: null,\r\n Charge14_Term_End: null,\r\n Charge14_IsRequired: null,\r\n Charge15_Group: null,\r\n Charge15_Name: null,\r\n Charge15_MonthlyAmount: null,\r\n Charge15_PurchaseAmount: null,\r\n Charge15_Term: null,\r\n Charge15_Term_Start: null,\r\n Charge15_Term_End: null,\r\n Charge15_IsRequired: null,\r\n Charge16_Group: null,\r\n Charge16_Name: null,\r\n Charge16_MonthlyAmount: null,\r\n Charge16_PurchaseAmount: null,\r\n Charge16_Term: null,\r\n Charge16_Term_Start: null,\r\n Charge16_Term_End: null,\r\n Charge16_IsRequired: null,\r\n Charge17_Group: null,\r\n Charge17_Name: null,\r\n Charge17_MonthlyAmount: null,\r\n Charge17_PurchaseAmount: null,\r\n Charge17_Term: null,\r\n Charge17_Term_Start: null,\r\n Charge17_Term_End: null,\r\n Charge17_IsRequired: null,\r\n Charge18_Group: null,\r\n Charge18_Name: null,\r\n Charge18_MonthlyAmount: null,\r\n Charge18_PurchaseAmount: null,\r\n Charge18_Term: null,\r\n Charge18_Term_Start: null,\r\n Charge18_Term_End: null,\r\n Charge18_IsRequired: null,\r\n Charge19_Group: null,\r\n Charge19_Name: null,\r\n Charge19_MonthlyAmount: null,\r\n Charge19_PurchaseAmount: null,\r\n Charge19_Term: null,\r\n Charge19_Term_Start: null,\r\n Charge19_Term_End: null,\r\n Charge19_IsRequired: null,\r\n Charge20_Group: null,\r\n Charge20_Name: null,\r\n Charge20_MonthlyAmount: null,\r\n Charge20_PurchaseAmount: null,\r\n Charge20_Term: null,\r\n Charge20_Term_Start: null,\r\n Charge20_Term_End: null,\r\n Charge20_IsRequired: null,\r\n Charge1_MaxCount: null,\r\n Charge2_MaxCount: null,\r\n Charge3_MaxCount: null,\r\n Charge4_MaxCount: null,\r\n Charge5_MaxCount: null,\r\n Charge6_MaxCount: null,\r\n Charge7_MaxCount: null,\r\n Charge8_MaxCount: null,\r\n Charge9_MaxCount: null,\r\n Charge10_MaxCount: null,\r\n Charge11_MaxCount: null,\r\n Charge12_MaxCount: null,\r\n Charge13_MaxCount: null,\r\n Charge14_MaxCount: null,\r\n Charge15_MaxCount: null,\r\n Charge16_MaxCount: null,\r\n Charge17_MaxCount: null,\r\n Charge18_MaxCount: null,\r\n Charge19_MaxCount: null,\r\n Charge20_MaxCount: null,\r\n Charge1_IncludedInPrice: null,\r\n Charge2_IncludedInPrice: null,\r\n Charge3_IncludedInPrice: null,\r\n Charge4_IncludedInPrice: null,\r\n Charge5_IncludedInPrice: null,\r\n Charge6_IncludedInPrice: null,\r\n Charge7_IncludedInPrice: null,\r\n Charge8_IncludedInPrice: null,\r\n Charge9_IncludedInPrice: null,\r\n Charge10_IncludedInPrice: null,\r\n Charge11_IncludedInPrice: null,\r\n Charge12_IncludedInPrice: null,\r\n Charge13_IncludedInPrice: null,\r\n Charge14_IncludedInPrice: null,\r\n Charge15_IncludedInPrice: null,\r\n Charge16_IncludedInPrice: null,\r\n Charge17_IncludedInPrice: null,\r\n Charge18_IncludedInPrice: null,\r\n Charge19_IncludedInPrice: null,\r\n Charge20_IncludedInPrice: null,\r\n Bundle6_OfferID: null,\r\n Bundle7_OfferID: null,\r\n Bundle8_OfferID: null,\r\n Bundle9_OfferID: null,\r\n Bundle10_OfferID: null,\r\n Charge21_Group: null,\r\n Charge21_Name: null,\r\n Charge21_MonthlyAmount: null,\r\n Charge21_PurchaseAmount: null,\r\n Charge21_Term: null,\r\n Charge21_Term_Start: null,\r\n Charge21_Term_End: null,\r\n Charge21_IsRequired: null,\r\n Charge21_MaxCount: null,\r\n Charge21_IncludedInPrice: null,\r\n Charge22_Group: null,\r\n Charge22_Name: null,\r\n Charge22_MonthlyAmount: null,\r\n Charge22_PurchaseAmount: null,\r\n Charge22_Term: null,\r\n Charge22_Term_Start: null,\r\n Charge22_Term_End: null,\r\n Charge22_IsRequired: null,\r\n Charge22_MaxCount: null,\r\n Charge22_IncludedInPrice: null,\r\n Charge23_Group: null,\r\n Charge23_Name: null,\r\n Charge23_MonthlyAmount: null,\r\n Charge23_PurchaseAmount: null,\r\n Charge23_Term: null,\r\n Charge23_Term_Start: null,\r\n Charge23_Term_End: null,\r\n Charge23_IsRequired: null,\r\n Charge23_MaxCount: null,\r\n Charge23_IncludedInPrice: null,\r\n Charge24_Group: null,\r\n Charge24_Name: null,\r\n Charge24_MonthlyAmount: null,\r\n Charge24_PurchaseAmount: null,\r\n Charge24_Term: null,\r\n Charge24_Term_Start: null,\r\n Charge24_Term_End: null,\r\n Charge24_IsRequired: null,\r\n Charge24_MaxCount: null,\r\n Charge24_IncludedInPrice: null,\r\n Charge25_Group: null,\r\n Charge25_Name: null,\r\n Charge25_MonthlyAmount: null,\r\n Charge25_PurchaseAmount: null,\r\n Charge25_Term: null,\r\n Charge25_Term_Start: null,\r\n Charge25_Term_End: null,\r\n Charge25_IsRequired: null,\r\n Charge25_MaxCount: null,\r\n Charge25_IncludedInPrice: null,\r\n Charge26_Group: null,\r\n Charge26_Name: null,\r\n Charge26_MonthlyAmount: null,\r\n Charge26_PurchaseAmount: null,\r\n Charge26_Term: null,\r\n Charge26_Term_Start: null,\r\n Charge26_Term_End: null,\r\n Charge26_IsRequired: null,\r\n Charge26_MaxCount: null,\r\n Charge26_IncludedInPrice: null,\r\n Charge27_Group: null,\r\n Charge27_Name: null,\r\n Charge27_MonthlyAmount: null,\r\n Charge27_PurchaseAmount: null,\r\n Charge27_Term: null,\r\n Charge27_Term_Start: null,\r\n Charge27_Term_End: null,\r\n Charge27_IsRequired: null,\r\n Charge27_MaxCount: null,\r\n Charge27_IncludedInPrice: null,\r\n Charge28_Group: null,\r\n Charge28_Name: null,\r\n Charge28_MonthlyAmount: null,\r\n Charge28_PurchaseAmount: null,\r\n Charge28_Term: null,\r\n Charge28_Term_Start: null,\r\n Charge28_Term_End: null,\r\n Charge28_IsRequired: null,\r\n Charge28_MaxCount: null,\r\n Charge28_IncludedInPrice: null,\r\n Charge29_Group: null,\r\n Charge29_Name: null,\r\n Charge29_MonthlyAmount: null,\r\n Charge29_PurchaseAmount: null,\r\n Charge29_Term: null,\r\n Charge29_Term_Start: null,\r\n Charge29_Term_End: null,\r\n Charge29_IsRequired: null,\r\n Charge29_MaxCount: null,\r\n Charge29_IncludedInPrice: null,\r\n Charge30_Group: null,\r\n Charge30_Name: null,\r\n Charge30_MonthlyAmount: null,\r\n Charge30_PurchaseAmount: null,\r\n Charge30_Term: null,\r\n Charge30_Term_Start: null,\r\n Charge30_Term_End: null,\r\n Charge30_IsRequired: null,\r\n Charge30_MaxCount: null,\r\n Charge30_IncludedInPrice: null,\r\n FeaturesLabel: null,\r\n FeaturesText: null,\r\n DisclosuresLabel: null,\r\n DisclosuresText: null,\r\n SummaryText: null,\r\n ApiID: 601,\r\n LocalitySourceProviderID: null,\r\n ChannelsLabel: null,\r\n ChannelsText: null,\r\n ChannelsLinkLabel: null,\r\n ChannelsLinkUrl: null,\r\n PriceContract: null,\r\n CSPhone: '855-784-2426',\r\n BundleOptionID: 1,\r\n LogoFileEmail: '77690_Email_4change_energy_logo.png',\r\n OrderPriority: 3,\r\n SeparateOrderForEachOffer: false,\r\n ContactInfoFooter:\r\n '

Value Based Brands LLC d/b/a 4Change Energy, All rights reserved REP #10041
www.4ChangeEnergy.com | Service@4ChangeEnergy.com | (833) 564-1391
4Change Energy PO Box 660361 Dallas, TX 75266-0361

',\r\n ApiName: 'Maxx Saver Select 12',\r\n AdvertisedPrice: 0,\r\n SatisfactionGuaranteeText: null\r\n};\r\n\r\nconst _seasonalUsage = {\r\n July: {\r\n SourceGroup: 'State',\r\n UsageHistorySourceName: 'Statewide Average for TX',\r\n Month: 'July',\r\n Usage: 1466.79,\r\n UsageVariable: 1.303026,\r\n AveragePricePerCustomer_12Month: 11.92,\r\n AverageUsagePerCustomer_12Month: 1125.68,\r\n LastUpdated: '02/28/2023'\r\n },\r\n June: {\r\n SourceGroup: 'State',\r\n UsageHistorySourceName: 'Statewide Average for TX',\r\n Month: 'June',\r\n Usage: 1221.22,\r\n UsageVariable: 1.04851,\r\n AveragePricePerCustomer_12Month: 11.92,\r\n AverageUsagePerCustomer_12Month: 1125.68,\r\n LastUpdated: '02/28/2023'\r\n },\r\n May: {\r\n SourceGroup: 'State',\r\n UsageHistorySourceName: 'Statewide Average for TX',\r\n Month: 'May',\r\n Usage: 897.24,\r\n UsageVariable: 0.762279,\r\n AveragePricePerCustomer_12Month: 11.92,\r\n AverageUsagePerCustomer_12Month: 1125.68,\r\n LastUpdated: '02/28/2023'\r\n },\r\n April: {\r\n SourceGroup: 'State',\r\n UsageHistorySourceName: 'Statewide Average for TX',\r\n Month: 'April',\r\n Usage: 790.4,\r\n UsageVariable: 0.677205,\r\n AveragePricePerCustomer_12Month: 11.92,\r\n AverageUsagePerCustomer_12Month: 1125.68,\r\n LastUpdated: '02/28/2023'\r\n },\r\n March: {\r\n SourceGroup: 'State',\r\n UsageHistorySourceName: 'Statewide Average for TX',\r\n Month: 'March',\r\n Usage: 1035.21,\r\n UsageVariable: 0.901767,\r\n AveragePricePerCustomer_12Month: 11.92,\r\n AverageUsagePerCustomer_12Month: 1125.68,\r\n LastUpdated: '02/28/2023'\r\n },\r\n February: {\r\n SourceGroup: 'State',\r\n UsageHistorySourceName: 'Statewide Average for TX',\r\n Month: 'February',\r\n Usage: 1049.47,\r\n UsageVariable: 0.926774,\r\n AveragePricePerCustomer_12Month: 11.92,\r\n AverageUsagePerCustomer_12Month: 1125.68,\r\n LastUpdated: '02/28/2023'\r\n },\r\n January: {\r\n SourceGroup: 'State',\r\n UsageHistorySourceName: 'Statewide Average for TX',\r\n Month: 'January',\r\n Usage: 1160.58,\r\n UsageVariable: 1.033666,\r\n AveragePricePerCustomer_12Month: 11.92,\r\n AverageUsagePerCustomer_12Month: 1125.68,\r\n LastUpdated: '02/28/2023'\r\n },\r\n December: {\r\n SourceGroup: 'State',\r\n UsageHistorySourceName: 'Statewide Average for TX',\r\n Month: 'December',\r\n Usage: 1013.54,\r\n UsageVariable: 0.907101,\r\n AveragePricePerCustomer_12Month: 11.92,\r\n AverageUsagePerCustomer_12Month: 1125.68,\r\n LastUpdated: '02/28/2023'\r\n },\r\n November: {\r\n SourceGroup: 'State',\r\n UsageHistorySourceName: 'Statewide Average for TX',\r\n Month: 'November',\r\n Usage: 834.96,\r\n UsageVariable: 0.752155,\r\n AveragePricePerCustomer_12Month: 11.92,\r\n AverageUsagePerCustomer_12Month: 1125.68,\r\n LastUpdated: '02/28/2023'\r\n },\r\n October: {\r\n SourceGroup: 'State',\r\n UsageHistorySourceName: 'Statewide Average for TX',\r\n Month: 'October',\r\n Usage: 1023.84,\r\n UsageVariable: 0.931475,\r\n AveragePricePerCustomer_12Month: 11.92,\r\n AverageUsagePerCustomer_12Month: 1125.68,\r\n LastUpdated: '02/28/2023'\r\n },\r\n September: {\r\n SourceGroup: 'State',\r\n UsageHistorySourceName: 'Statewide Average for TX',\r\n Month: 'September',\r\n Usage: 1381.75,\r\n UsageVariable: 1.250419,\r\n AveragePricePerCustomer_12Month: 11.92,\r\n AverageUsagePerCustomer_12Month: 1125.68,\r\n LastUpdated: '02/28/2023'\r\n },\r\n August: {\r\n SourceGroup: 'State',\r\n UsageHistorySourceName: 'Statewide Average for TX',\r\n Month: 'August',\r\n Usage: 1633.13,\r\n UsageVariable: 1.453726,\r\n AveragePricePerCustomer_12Month: 11.92,\r\n AverageUsagePerCustomer_12Month: 1125.68,\r\n LastUpdated: '02/28/2023'\r\n }\r\n};\r\n\r\nconst state12MonthAvg_PerKWh =\r\n _seasonalUsage.January.AveragePricePerCustomer_12Month;\r\nconst state12MonthAvg_PerKWh_Rounded = offerCalc.round(\r\n _seasonalUsage.January.AveragePricePerCustomer_12Month,\r\n 0\r\n);\r\nconst state12MonthAvg_Usage =\r\n _seasonalUsage.January.AverageUsagePerCustomer_12Month;\r\nexport const stateUsageLastUpdated = _seasonalUsage.January.LastUpdated;\r\n\r\nexport let _offerChartData = [];\r\n\r\nfor (let i = 25; i <= 2400; i += 25) {\r\n const costDetail = offerCalc.getFullCostDetail(\r\n offer,\r\n i,\r\n {\r\n ElectricUsageHistory: { State: _seasonalUsage }\r\n },\r\n {},\r\n 'estimated',\r\n null\r\n );\r\n\r\n let lowUsage = null;\r\n let highUsage = null;\r\n let lowDollars = null;\r\n let highDollars = null;\r\n let lowPrice = null;\r\n let highPrice = null;\r\n let creditCount = 0;\r\n\r\n Object.keys(costDetail.trueCost.estimated.table).map((month) => {\r\n const calcMonth = costDetail.trueCost.estimated.table[month];\r\n const usage = calcMonth.usage;\r\n const dollars = calcMonth.dollars;\r\n const price = calcMonth.perKWh;\r\n\r\n if (lowUsage === null || usage < lowUsage) {\r\n lowUsage = usage;\r\n }\r\n\r\n if (highUsage === null || usage > highUsage) {\r\n highUsage = usage;\r\n }\r\n\r\n if (lowDollars === null || dollars < lowDollars) {\r\n lowDollars = dollars;\r\n }\r\n\r\n if (highDollars === null || dollars > highDollars) {\r\n highDollars = dollars;\r\n }\r\n\r\n if (lowPrice === null || price < lowPrice) {\r\n lowPrice = price;\r\n }\r\n\r\n if (highPrice === null || price > highPrice) {\r\n highPrice = price;\r\n }\r\n\r\n if (calcMonth.creditApplies) {\r\n creditCount++;\r\n }\r\n });\r\n\r\n _offerChartData.push({\r\n usage: i,\r\n PriceAt1000: offer.PriceAt1000,\r\n perKWh: offerCalc.round(costDetail.SingleMonthPriceKWh, 1),\r\n trueCost_Dollars: offerCalc.round(costDetail.TrueCost_Dollars, 2),\r\n trueCost_PerKWh: offerCalc.round(costDetail.TrueCost_PerKWh, 1),\r\n trueCost_Usage: costDetail.TrueCost_Usage,\r\n lowUsage,\r\n highUsage,\r\n lowDollars,\r\n highDollars,\r\n lowPrice,\r\n highPrice,\r\n creditCount\r\n });\r\n}\r\n\r\nexport const _dontBeAverageChartOptions = {\r\n chart: {\r\n toolbar: {\r\n show: false\r\n },\r\n zoom: {\r\n enabled: false\r\n }\r\n },\r\n\r\n stroke: {\r\n width: [2, 3],\r\n curve: 'smooth',\r\n dashArray: [5, 0]\r\n },\r\n colors: ['#ff3366', '#337eff'],\r\n\r\n xaxis: {\r\n categories: _offerChartData.map((_price) => _price.usage),\r\n tickAmount: 24,\r\n type: 'numeric',\r\n min: 0,\r\n max: 2400,\r\n labels: {\r\n formatter: (value) => {\r\n return offerCalc.round(value, 1).toFixed(0) + ' kWh';\r\n }\r\n }\r\n },\r\n\r\n yaxis: {\r\n tickAmount: 9,\r\n min: 0,\r\n max: 35,\r\n\r\n labels: {\r\n formatter: (value) => {\r\n return offerCalc.round(value, 1).toFixed(1) + '¢';\r\n },\r\n show: true\r\n }\r\n }\r\n};\r\n\r\nexport const _offerChartSeries = [\r\n {\r\n name: 'Avertised Price',\r\n data: _offerChartData.map((_price) =>\r\n (_price.PriceAt1000 * 100).toFixed(1)\r\n ),\r\n type: 'line'\r\n },\r\n {\r\n name: 'Price per kWh',\r\n data: _offerChartData.map((_price) => _price.perKWh),\r\n type: 'line'\r\n }\r\n];\r\n\r\nconst _monthsOfYear = dataApi.getMonthsOfYear();\r\n\r\nconst _seasonalCurveChartSeries = {\r\n name: 'Usage',\r\n data: _monthsOfYear\r\n .map((month) => _seasonalUsage[month].Usage)\r\n .concat([_seasonalUsage['January'].Usage]),\r\n type: 'line'\r\n};\r\n\r\nconst _seasonalCurveChartOptions = {\r\n chart: {\r\n height: '1000px',\r\n toolbar: {\r\n show: false\r\n },\r\n zoom: {\r\n enabled: false\r\n },\r\n animations: {\r\n enabled: true,\r\n\r\n // speed: 2000\r\n // animateGradually: {\r\n // enabled: true,\r\n // delay: 150\r\n // },\r\n dynamicAnimation: {\r\n enabled: true,\r\n speed: 5000\r\n }\r\n }\r\n },\r\n\r\n stroke: {\r\n width: [10, 0],\r\n curve: 'smooth',\r\n dashArray: 5\r\n },\r\n // colors: ['#337eff'],\r\n\r\n xaxis: {\r\n categories: _monthsOfYear.map((month) => month),\r\n\r\n labels: {\r\n show: true\r\n // formatter: value => {\r\n // return offerCalc.round(value, 1).toFixed(0) + ' kWh';\r\n // }\r\n }\r\n },\r\n\r\n yaxis: {\r\n tickAmount: 5,\r\n min: 0,\r\n max: 2000,\r\n labels: {\r\n show: true,\r\n formatter: (value) => {\r\n return offerCalc.round(value, 1).toFixed(0) + ' kWh';\r\n }\r\n }\r\n }\r\n};\r\n\r\nfunction LandingSmarterChoice({\r\n actions,\r\n serviceAddress,\r\n siteConfig,\r\n webSocket\r\n}) {\r\n const zipFromCookie = dataApi.getCookie('sc-zip-code');\r\n const _city = useQueryParam('city', null);\r\n\r\n const [zipCode, setZipCode] = useState(zipFromCookie ? zipFromCookie : '');\r\n\r\n const [city, setCity] = useState(_city);\r\n\r\n console.log('zipFromCookie', zipFromCookie);\r\n\r\n const [billAmount, setBillAmount] = useState(\r\n dataApi.getCookie('sc-last-bill')\r\n );\r\n\r\n const [billUsage, setBillUsage] = useState(\r\n dataApi.getCookie('sc-last-usage')\r\n );\r\n\r\n useEffect(() => {\r\n setCity(_city);\r\n }, [_city]);\r\n\r\n function tabOnEnter(event, nextField) {\r\n if (event.keyCode === 13) {\r\n if (zipCode !== null && billAmount !== null && billUsage !== null) {\r\n submitForm();\r\n } else if (document.getElementById(nextField)) {\r\n document.getElementById(nextField).focus();\r\n }\r\n }\r\n }\r\n\r\n function submitForm() {\r\n console.log('zipCode.length', zipCode.length);\r\n if (zipCode && String(zipCode).length === 5) {\r\n dataApi.setCookie('sc-last-bill', billAmount);\r\n dataApi.setCookie('sc-last-usage', billUsage);\r\n dataApi.setCookie('sc-zip-code', zipCode);\r\n dataApi.setCookie('sc-smart-meter-prompted', '1', 24);\r\n\r\n dataApi.setCookie(\r\n 'sc-usage-setting',\r\n billAmount && billUsage ? 'lastBill' : 'estimated'\r\n );\r\n\r\n if (\r\n !serviceAddress ||\r\n !serviceAddress.Address ||\r\n serviceAddress.Address.Zip !== zipCode\r\n ) {\r\n actions.pageLoading(true, 'Searching plans...');\r\n\r\n dataApi\r\n .saveServiceAddress('', '', '', '', zipCode, 6)\r\n .then((result) => {\r\n if (result && result.Address) {\r\n actions.serviceAddressUpdated(result);\r\n }\r\n\r\n navigate('/electric-rates/');\r\n });\r\n } else {\r\n navigate('/electric-rates/');\r\n }\r\n } else {\r\n document.getElementById('zipCode').focus();\r\n }\r\n }\r\n\r\n return ;\r\n\r\n // return city ? (\r\n // \r\n // ) : (\r\n //
\r\n //
\r\n //
\r\n //
\r\n //
\r\n //

\r\n // The average Texan overpays by about 15% for electricity…\r\n //
\r\n // Don’t be average!\r\n //

\r\n //
\r\n //
\r\n //
\r\n //

\r\n // Find YOUR lowest electric rate\r\n // {/* with{' '}\r\n // */}\r\n //

\r\n //
\r\n //
\r\n\r\n // \r\n //
\r\n //
\r\n // {/*

View electric plans in your area

\r\n //

\r\n // Enter your zip code to view electric plans in your area\r\n //

*/}\r\n // \r\n // Enter your zip code\r\n // \r\n // }\r\n // onChange={(event) => {\r\n // if (event.target.value) {\r\n // setZipCode(parseInt(event.target.value.substring(0, 5)));\r\n\r\n // if (\r\n // event.target.value.length >= 5 &&\r\n // document.getElementById('lastBillAmount')\r\n // ) {\r\n // document.getElementById('lastBillAmount').focus();\r\n // }\r\n // } else {\r\n // setZipCode(null);\r\n // }\r\n // }}\r\n // onKeyDown={(event) => {\r\n // //tabOnEnter(event, 'lastBillAmount');\r\n // if (event.keyCode === 13) {\r\n // console.log('sbimt');\r\n // submitForm();\r\n // }\r\n // }}\r\n // onFocus={(event) => event.target.select()}\r\n // type=\"number\"\r\n // inputProps={{ inputMode: 'numeric', maxLength: 5 }}\r\n // />\r\n // {/* + */}\r\n //
\r\n // {/*
\r\n //

\r\n // For more personalized results add your last bill amount and usage\r\n //

\r\n // {\r\n // if (event.target.value) {\r\n // setBillAmount(parseFloat(event.target.value));\r\n // } else {\r\n // setBillAmount(null);\r\n // }\r\n // }}\r\n // onKeyDown={(event) => {\r\n // tabOnEnter(event, 'lastBillUsage');\r\n // }}\r\n // onFocus={(event) => event.target.select()}\r\n // type=\"number\"\r\n // inputProps={{ inputMode: 'numeric' }}\r\n // />\r\n // {\r\n // if (event.target.value) {\r\n // setBillUsage(parseInt(event.target.value));\r\n // } else {\r\n // setBillUsage(null);\r\n // }\r\n // }}\r\n // onKeyDown={(event) => {\r\n // tabOnEnter(event, 'zipCode');\r\n // }}\r\n // onFocus={(event) => event.target.select()}\r\n // type=\"number\"\r\n // inputProps={{ inputMode: 'numeric' }}\r\n // />\r\n //
*/}\r\n //
\r\n // {/* = */}\r\n // submitForm()}\r\n // disabled={!webSocket.connected}\r\n // data-buttonid={'find-your-lowest-rate'}>\r\n // Compare Rates \r\n // \r\n //
\r\n //
\r\n // \r\n\r\n //
\r\n //
    \r\n //
  • \r\n //
    \r\n //

    The 1,000-kWh Trap

    \r\n //

    \r\n // The plans with the lowest advertised prices are not always the\r\n // best overall deals.\r\n //

    \r\n // {\r\n // document\r\n // .getElementById('article1')\r\n // .scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n // }}\r\n // data-buttonid={'article-jump_1000-kwh-trap'}>\r\n // Read more
    \r\n // \r\n // \r\n //
    \r\n //
  • \r\n //
  • \r\n //
    \r\n //

    Remember the Rollercoaster

    \r\n //

    \r\n // Why accounting for seasonal usage fluctuations is critical to\r\n // finding your best price.\r\n //

    \r\n // {\r\n // document\r\n // .getElementById('article2')\r\n // .scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n // }}\r\n // data-buttonid={'article-jump_remember-the-rollercoaster'}>\r\n // Read more
    \r\n // \r\n // \r\n //
    \r\n //
  • \r\n //
  • \r\n //
    \r\n //

    Don't Be Average

    \r\n //

    \r\n // We may not be able to reduce what you use, but we can reduce\r\n // what you pay.\r\n //

    \r\n // {\r\n // document\r\n // .getElementById('article3')\r\n // .scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n // }}\r\n // data-buttonid={'article-jump_dont-be-average'}>\r\n // Read more
    \r\n // \r\n // \r\n //
    \r\n //
  • \r\n //
\r\n //
\r\n\r\n // \r\n\r\n // \r\n\r\n // \r\n\r\n //
\r\n //
\r\n //
\r\n\r\n // \r\n //
\r\n // );\r\n}\r\nfunction mapStateToProps(state) {\r\n return {\r\n webSocket: state.webSocket,\r\n serviceAddress: state.serviceAddress,\r\n siteConfig: state.commonData.siteConfig\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: {\r\n pageLoading: bindActionCreators(webSocketActions.pageLoading, dispatch),\r\n serviceAddressUpdated: bindActionCreators(\r\n serviceAddressActions.serviceAddressUpdated,\r\n dispatch\r\n )\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(LandingSmarterChoice);\r\n\r\nconst LoadableChart = Loadable(() => import('react-apexcharts'));\r\n","import React, { useState, useEffect } from 'react';\r\nimport {\r\n Box,\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n IconButton,\r\n TextField\r\n} from '@mui/material';\r\n\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport { withPrefix } from 'gatsby-link';\r\n\r\nimport { getRateType } from '../../api/offerCalc';\r\n\r\nimport OfferRow from './OfferRow';\r\nimport OfferRowElectric from './OfferRowElectric';\r\nimport './index.css';\r\n\r\nfunction OfferDetailsPopup({\r\n offer,\r\n closeFunc,\r\n selectedUsage,\r\n usageSetting,\r\n fromFeatured\r\n}) {\r\n const [rowOffer, setRowOffer] = useState(null);\r\n\r\n useEffect(() => {\r\n let _offer = { ...offer };\r\n\r\n _offer.RateType = getRateType(offer);\r\n\r\n setRowOffer(_offer);\r\n }, []);\r\n\r\n return rowOffer ? (\r\n \r\n \r\n {\r\n closeFunc();\r\n }}>\r\n \r\n \r\n \r\n {rowOffer.DisplayName}\r\n \r\n \r\n
\r\n
\r\n {rowOffer.ProductTypeID === 6 ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n \r\n ) : null;\r\n}\r\n\r\nexport default OfferDetailsPopup;\r\n","import React, { useState } from 'react';\r\n\r\nimport * as offerCalc from '../../api/offerCalc';\r\n\r\nimport { Button } from '@mui/material';\r\n\r\nimport ProviderLogo from './ProviderLogo';\r\nimport OrderButton from './OrderButton';\r\nimport OfferDetailsPopup from './OfferDetailsPopup';\r\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\r\nimport './FeaturedOffer.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport OfferRowElectric from './OfferRowElectric';\r\n\r\nfunction FeaturedOffer({ offer, priceColumn, usage, usageSetting }) {\r\n const [showOfferDetails, setShowOfferDetails] = useState(null);\r\n\r\n return offer.SingleMonthPriceKWh ? (\r\n
  • \r\n
    \r\n {offer.label && (\r\n

    {offer.label}

    \r\n )}\r\n
    \r\n {offer.RenewableContent === 100 && (\r\n \r\n )}\r\n\r\n {offer.DisplayName}\r\n
    \r\n\r\n
    \r\n {priceColumn === 'TrueCost_Dollars' ? (\r\n
    \r\n {offer.TrueCost_PerKWh.toFixed(1)}\r\n ¢\r\n
    \r\n ) : (\r\n
    \r\n {offer.SingleMonthPriceKWh.toFixed(1)}\r\n ¢\r\n
    \r\n )}\r\n\r\n
    \r\n per kWh {priceColumn === 'TrueCost_Dollars' ? ' a ' : ''}\r\n {priceColumn === 'TrueCost_Dollars'\r\n ? ' seasonal average of ' + usage + ' kWh'\r\n : ' at ' + usage + ' kWh'}\r\n
    \r\n {offer.TermLength > 1\r\n ? offer.TermLength + ' months'\r\n : 'Monthly'}{' '}\r\n {' / ' + offerCalc.getRateType(offer)}\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n {offer.calcs &&\r\n offer.calcs.creditList &&\r\n offer.calcs.creditList.length &&\r\n offer.calcs.creditList[0].amount &&\r\n offer.calcs.creditList[0].isTiered\r\n ? '$' +\r\n Math.abs(offer.calcs.creditList[0].amount).toFixed(2) +\r\n ' Bill Credit - '\r\n : ''}\r\n \r\n
    \r\n\r\n {showOfferDetails && (\r\n
    \r\n setShowOfferDetails(null)}\r\n />\r\n
    \r\n )}\r\n
    \r\n\r\n {showOfferDetails && offer.label && (\r\n
    \r\n setShowOfferDetails(null)}\r\n selectedUsage={usage}\r\n usageSetting={usageSetting}\r\n />\r\n
    \r\n )}\r\n
  • \r\n ) : null;\r\n}\r\n\r\nexport default FeaturedOffer;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport ConnectElectric from '../ConnectElectric';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { withPrefix } from 'gatsby';\r\nimport { navigate } from 'gatsby-link';\r\nimport { useQueryParam } from 'gatsby-query-params';\r\nimport {\r\n Parallax,\r\n ParallaxBanner,\r\n ParallaxProvider\r\n} from 'react-scroll-parallax';\r\nimport { ChevronRight } from '@mui/icons-material';\r\n\r\nimport {\r\n saveServiceAddress,\r\n getCurrentRoute,\r\n getCookie,\r\n scrollToElementInPage\r\n} from '../../api/dataApi';\r\n\r\nimport * as webSocketActions from '../../redux/actions/webSocketActions';\r\nimport * as serviceAddressActions from '../../redux/actions/serviceAddressActions';\r\n\r\nimport { electricData } from '../../mock/electric';\r\n\r\nimport AddressSearch from '../AddressSearch';\r\nimport AddressSearchPopup from '../AddressSearch/AddressSearchPopup';\r\nimport Electric6MonthAvgCompare from '../Electric6MonthAvgCompare';\r\nimport TermTypePopup from '../ConnectElectric/TermTypePopup';\r\n\r\nimport './index.css';\r\n\r\nfunction SCLandingWrapper({\r\n actions,\r\n city,\r\n webSocket,\r\n serviceAddress,\r\n siteConfig,\r\n noHeader,\r\n preFilter,\r\n preFilterLabel,\r\n headerIfName\r\n}) {\r\n const checking = useRef();\r\n const initted = useRef();\r\n const [showAddressSearch, setShowAddressSearch] = useState(null);\r\n const [hasZipStored, setHasZipStored] = useState(getCookie('sc-zip-code'));\r\n const [hideHeader, setHideHeader] = useState(null);\r\n const uc = useQueryParam('uc');\r\n const [show6MonthAvg, setShow6MonthAvg] = useState(null);\r\n const [showSummer, setShowSummer] = useState(null);\r\n const [showTermTypePopup, setShowTermTypePopup] = useState(null);\r\n\r\n const simple = useQueryParam('simple') === '1';\r\n const zipEntered = useQueryParam('zipEntered') === '1';\r\n const scrollTimeout = useRef();\r\n\r\n useEffect(() => {\r\n actions.setLandingPage({ route: getCurrentRoute(), city });\r\n if (hasZipStored) {\r\n actions.pageLoading(true, 'Checking rates...');\r\n }\r\n //actions.serviceAddressUpdated({ ...electricData[city], mock: true });\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (zipEntered) {\r\n setHideHeader(true);\r\n } else {\r\n setHideHeader(false);\r\n }\r\n console.log('zip entered', zipEntered);\r\n }, [zipEntered]);\r\n\r\n useEffect(() => {\r\n if (\r\n uc &&\r\n uc === 'IG-Aff' &&\r\n webSocket &&\r\n webSocket.initted &&\r\n webSocket.ajaxConnected &&\r\n !show6MonthAvg\r\n ) {\r\n setShow6MonthAvg(true);\r\n }\r\n }, [uc, webSocket]);\r\n\r\n useEffect(() => {\r\n if (\r\n uc &&\r\n uc === 'IG-Summer' &&\r\n webSocket &&\r\n webSocket.initted &&\r\n webSocket.ajaxConnected &&\r\n !showSummer\r\n ) {\r\n setShowSummer(true);\r\n }\r\n }, [uc, webSocket]);\r\n\r\n useEffect(() => {\r\n if (\r\n webSocket &&\r\n webSocket.initted &&\r\n webSocket.ajaxConnected &&\r\n !webSocket.hasServiceAddress &&\r\n !checking.current &&\r\n (!serviceAddress || serviceAddress.mock) &&\r\n city\r\n ) {\r\n checking.current = true;\r\n\r\n actions.pageLoading(true, 'Checking rates...');\r\n\r\n saveServiceAddress('', '', city, 'TX', '', 11).then((result) => {\r\n actions.serviceAddressUpdated({ ...result, force: true });\r\n actions.pageLoading(false);\r\n });\r\n }\r\n }, [webSocket]);\r\n\r\n useEffect(() => {\r\n if (\r\n serviceAddress &&\r\n serviceAddress.Address &&\r\n serviceAddress.Address.Zip\r\n ) {\r\n if (!hasZipStored && (getCookie('sc-zip-code') || city)) {\r\n scrollTimeout.current = setTimeout(() => {\r\n setHasZipStored(true);\r\n scrollToPlans(false);\r\n }, 500);\r\n }\r\n\r\n actions.pageLoading(false);\r\n }\r\n }, [serviceAddress]);\r\n\r\n function scrollToPlans(instant, offset) {\r\n const bestHeader = document.getElementsByClassName('best-header')[0];\r\n const offerRow = document.getElementsByClassName('offer-row')[0];\r\n if (bestHeader && offerRow) {\r\n scrollToElementInPage(bestHeader, offset ? offset : -280, instant);\r\n }\r\n }\r\n\r\n if (typeof window === 'undefined') {\r\n actions.serviceAddressUpdated({ ...electricData[city], mock: true });\r\n }\r\n\r\n return (\r\n \r\n {show6MonthAvg &&\r\n (!serviceAddress ||\r\n !serviceAddress.Address ||\r\n !serviceAddress.Address.Zip) ? (\r\n \r\n ) : null}\r\n {(!noHeader && !hideHeader && !headerIfName) ||\r\n (headerIfName &&\r\n serviceAddress &&\r\n serviceAddress.Address &&\r\n serviceAddress.Address.FirstName) ? (\r\n
    \r\n
    \r\n {!showSummer ? (\r\n \r\n \r\n \r\n ) : null}\r\n
    \r\n\r\n {showSummer ? (\r\n
    \r\n \r\n
    \r\n ) : null}\r\n\r\n {headerIfName &&\r\n serviceAddress.Address &&\r\n serviceAddress.Address.FirstName &&\r\n serviceAddress.Address.Address ? (\r\n
    \r\n

    Hello, {serviceAddress.Address.FirstName}!

    \r\n {serviceAddress.Address.PropertyName ? (\r\n <>\r\n

    Welcome to {serviceAddress.Address.PropertyName}

    \r\n

    \r\n Your community has partnered with {siteConfig.brand} to help\r\n you find a great electricity plan for your new home. Plus,\r\n if you set up electric service through {siteConfig.brand},\r\n we will automatically send the Proof of Service\r\n documentation required by your lease to the property so you\r\n don't have to.\r\n

    \r\n

    Showing electric plans for:  

    \r\n \r\n ) : null}\r\n\r\n
    \r\n {serviceAddress.Address.Address}{' '}\r\n {serviceAddress.Address.Secondary}\r\n
    \r\n {serviceAddress.Address.City}, {serviceAddress.Address.State}{' '}\r\n {serviceAddress.Address.Zip}\r\n
    \r\n
    \r\n ) : (\r\n <>\r\n

    \r\n The Safe, Simple, Hassle-free Way \r\n
    \r\n to{' '}\r\n \r\n save{' '}\r\n \r\n {' '}\r\n {showSummer\r\n ? 'before it heats up!'\r\n : 'on your next electric bill.'}\r\n

    \r\n\r\n
    \r\n {\r\n // actions.pageLoading(true, 'Loading rates...');\r\n // navigate('/electric-rates');\r\n // }}\r\n hideAddressSearchButton\r\n afterAddressSelected={() => {\r\n scrollTimeout.current = setTimeout(() => {\r\n scrollToPlans(false, -90);\r\n }, 500);\r\n }}\r\n />\r\n
    \r\n \r\n )}\r\n
    \r\n ) : null}\r\n\r\n {!preFilter ? (\r\n <>\r\n {serviceAddress &&\r\n serviceAddress.Address &&\r\n serviceAddress.Address.City ? (\r\n
    \r\n {serviceAddress &&\r\n serviceAddress.Address &&\r\n serviceAddress.Address.City &&\r\n city &&\r\n serviceAddress.Address.City.toLowerCase() ===\r\n city.toLowerCase() ? (\r\n

    \r\n \r\n Best \r\n \r\n {serviceAddress &&\r\n serviceAddress.Address &&\r\n serviceAddress.Address.City\r\n ? serviceAddress.Address.City\r\n : electricData[city].Address.City}\r\n {' '}\r\n area electric plans\r\n \r\n

    \r\n ) : serviceAddress.Address.ResidentID ? null : (\r\n

    \r\n {serviceAddress.OfferDictionary &&\r\n serviceAddress.OfferDictionary.Electric ? (\r\n \r\n \r\n Best electric plans for{' '}\r\n \r\n {serviceAddress.Address.Address ? (\r\n <>\r\n {serviceAddress.Address.Address}{' '}\r\n {serviceAddress.Address.Secondary\r\n ? serviceAddress.Address.Secondary\r\n : ''}\r\n \r\n ) : (\r\n serviceAddress.Address.Zip\r\n )}\r\n \r\n \r\n \r\n ) : (\r\n No results found\r\n )}\r\n

    \r\n )}\r\n {/* {noHeader || hideHeader ? (\r\n

    \r\n setShowAddressSearch(true)}>\r\n Click here\r\n {' '}\r\n if you need to change locations.\r\n

    \r\n ) : serviceAddress &&\r\n serviceAddress.Address &&\r\n serviceAddress.Address.PropertyName ? null : (\r\n //

    \r\n // Did you know... If you're moving to a new address,\r\n // you can cancel your existing electric service contract without\r\n // penalty or early termination fees?{' '}\r\n // setShowTermTypePopup(true)}\r\n // className=\"link\">\r\n // Click here\r\n // {' '}\r\n // for more information.\r\n //

    \r\n

    \r\n You can change locations by entering a new zip code above.\r\n

    \r\n )} */}\r\n
    \r\n ) : !hasZipStored ? (\r\n <>\r\n
    \r\n

    \r\n \r\n \r\n Finding YOUR best deal on electricity has never been\r\n easier.\r\n \r\n \r\n

    \r\n\r\n {/*

    \r\n In a contract? \r\n navigate('/switch')}>\r\n Check if you can switch early \r\n \r\n

    */}\r\n
    \r\n\r\n
    \r\n
    \r\n
      \r\n
    • \r\n \r\n Step\r\n 1\r\n \r\n

      Enter your zip code

      \r\n

      \r\n Enter your zip code above to find energy providers and\r\n plans in your area.\r\n

      \r\n
    • \r\n
    • \r\n \r\n Step\r\n 2\r\n \r\n

      Compare rates

      \r\n

      \r\n Quickly compare rates to find the plan that is best for\r\n you.\r\n

      \r\n
    • \r\n
    • \r\n \r\n Step\r\n 3\r\n \r\n

      Sign up and SAVE.

      \r\n

      Sign up online or over the phone and start saving.

      \r\n
    • \r\n
    \r\n\r\n \r\n\r\n

    \r\n The safe, simple, hassle-free way to SAVE on Electricity.\r\n

    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n ) : null}\r\n \r\n ) : null}\r\n\r\n {serviceAddress &&\r\n serviceAddress.Address &&\r\n serviceAddress.Address.Zip ? (\r\n <>\r\n \r\n \r\n ) : null}\r\n\r\n {/*
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    */}\r\n\r\n {showAddressSearch ? (\r\n setShowAddressSearch(null)}\r\n afterAddressSelected={() => {\r\n //do nothing, stay here\r\n setShowAddressSearch(null);\r\n }}\r\n />\r\n ) : null}\r\n\r\n {showTermTypePopup && showTermTypePopup.show ? (\r\n {\r\n setShowTermTypePopup({ show: false });\r\n }}\r\n title={'Contract Cancellation'}\r\n />\r\n ) : null}\r\n \r\n );\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n webSocket: state.webSocket,\r\n serviceAddress: state.serviceAddress,\r\n siteConfig: state.commonData.siteConfig\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: {\r\n pageLoading: bindActionCreators(webSocketActions.pageLoading, dispatch),\r\n setLandingPage: bindActionCreators(\r\n webSocketActions.setLandingPage,\r\n dispatch\r\n ),\r\n serviceAddressUpdated: bindActionCreators(\r\n serviceAddressActions.serviceAddressUpdated,\r\n dispatch\r\n )\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SCLandingWrapper);\r\n","import React from 'react';\r\n\r\nimport './index.css';\r\n\r\nfunction WifiAnimation({}) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default WifiAnimation;\r\n"],"names":["_interopRequireDefault","exports","_createSvgIcon","_jsxRuntime","default","jsx","d","createSvgIcon","getCheckboxUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","CheckboxRoot","styled","SwitchBase","shouldForwardProp","prop","rootShouldForwardProp","name","overridesResolver","props","styles","ownerState","root","indeterminate","capitalize","size","color","_ref","theme","vars","palette","text","secondary","disableRipple","backgroundColor","action","activeChannel","mainChannel","hoverOpacity","active","main","checked","disabled","defaultCheckedIcon","CheckBox","defaultIcon","CheckBoxOutlineBlank","defaultIndeterminateIcon","IndeterminateCheckBox","inProps","ref","_icon$props$fontSize","_indeterminateIcon$pr","checkedIcon","icon","iconProp","indeterminateIcon","indeterminateIconProp","inputProps","className","other","classes","slots","composedClasses","composeClasses","useUtilityClasses","type","fontSize","clsx","getMenuItemUtilityClass","MenuItemRoot","ButtonBase","dense","divider","disableGutters","gutters","typography","body1","display","justifyContent","alignItems","position","textDecoration","minHeight","paddingTop","paddingBottom","boxSizing","whiteSpace","paddingLeft","paddingRight","borderBottom","backgroundClip","hover","selected","primary","selectedOpacity","focusVisible","focusOpacity","focus","opacity","disabledOpacity","marginTop","spacing","marginBottom","inset","marginLeft","minWidth","breakpoints","up","body2","autoFocus","component","focusVisibleClassName","role","tabIndex","tabIndexProp","context","ListContext","childContext","menuItemRef","useEnhancedEffect","current","handleRef","useForkRef","undefined","Provider","value","children","kSampleStepSize","float32ArraySupported","Float32Array","A","aA1","aA2","B","C","calcBezier","aT","getSlope","LinearEasing","x","module","mX1","mY1","mX2","mY2","Error","sampleValues","Array","i","getTForX","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","Math","abs","binarySubdivide","ValidCSSEffects","Units","RotationUnits","ScaleUnits","ScrollAxis","EasingPreset","Limits","properties","this","startX","startY","endX","endY","totalX","totalY","startMultiplierX","endMultiplierX","startMultiplierY","endMultiplierY","_extends","Object","assign","target","arguments","length","source","key","prototype","hasOwnProperty","call","apply","id","Rect","options","rect","el","getBoundingClientRect","view","scrollContainer","scrollRect","top","right","left","bottom","height","offsetHeight","width","offsetWidth","rootMargin","_setRectWithRootMargin","totalRootY","totalRootX","VALID_UNITS","px","deg","turn","rad","parseValueAndUnit","str","defaultUnit","out","unit","String","parseFloat","match","includes","easingPresets","ease","easeIn","easeOut","easeInOut","easeInQuad","easeInCubic","easeInQuart","easeInQuint","easeInSine","easeInExpo","easeInCirc","easeOutQuad","easeOutCubic","easeOutQuart","easeOutQuint","easeOutSine","easeOutExpo","easeOutCirc","easeInOutQuad","easeInOutCubic","easeInOutQuart","easeInOutQuint","easeInOutSine","easeInOutExpo","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","createEasingFunction","easing","isArray","params","PARALLAX_EFFECTS","values","MAP_EFFECT_TO_DEFAULT_UNIT","speed","translateX","translateY","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","parseElementTransitionEffects","scrollAxis","parsedEffects","forEach","defaultValue","endSpeed","startParsed","endParsed","speedConfig","start","end","vertical","horizontal","_value","_startParsed","_endParsed","getProgressAmount","totalDist","currentScroll","amount","scaleEffectByProgress","effect","progress","newMin","newMax","oldMin","oldMax","scaleBetween","TRANSFORM_EFFECTS","filter","v","setElementStyles","effects","transform","reduce","acc","scaledEffect","getTransformStyles","scaledOpacity","getOpacityStyles","style","resetStyles","element","getTranslateScalar","startTranslatePx","endTranslatePx","slow","totalDistTrue","max","getStartEndValueInPx","translate","elementSize","startScale","endScale","window","innerWidth","_startScale","_endScale","innerHeight","DEFAULT_VALUE","clamp","num","min","Element","willChange","disabledParallaxController","isInView","_setElementEasing","keys","_proto","updateProps","nextProps","setCachedAttributes","scroll","targetElement","shouldScaleTranslateEffects","shouldDisableScalingTranslations","startScroll","endScroll","limits","_setElementStyles","shouldAlwaysCompleteAnimation","_getStartEndValueInPx","startTranslateXPx","endTranslateXPx","_getStartEndValueInPx2","startTranslateYPx","endTranslateYPx","y","topBeginsInView","leftBeginsInView","bottomEndsInView","scrollHeight","rightEndsInView","scrollWidth","createLimitsWithTranslationsForRelativeElements","scaledEffects","effectsCopy","scaleTranslateEffectsForSlowerScroll","createLimitsForRelativeElements","_updateElementIsInView","nextIsInView","isFirstChange","onEnter","_setFinalProgress","onExit","finalProgress","round","_updateElementProgress","nextProgress","onProgressChange","onChange","updateElementOptions","updatePosition","isVertical","total","s","isElementInView","View","config","hasChanged","setSize","Scroll","dx","dy","setScroll","ParallaxController","_ref$scrollAxis","_ref$disabled","elements","_hasScrollContainer","viewEl","_this$_getScrollPosit","_getScrollPosition","_ticking","_supportsPassive","supportsPassiveOption","opts","defineProperty","get","addEventListener","removeEventListener","e","testForPassiveScroll","_bindAllMethods","_addListeners","_addResizeObserver","_setViewSize","init","_this","method","bind","_handleScroll","passive","_handleUpdateCache","_removeListeners","_this$_resizeObserver","_resizeObserver","disconnect","_this2","observedEl","document","documentElement","ResizeObserver","update","observe","console","warn","scrollLeft","pageXOffset","scrollTop","pageYOffset","_this$elements","_this$_getScrollPosit2","nx","ny","requestAnimationFrame","_updateAllElements","updateCache","_temp","_this3","_updateElementPosition","_getViewParams","_width","_height","_scrollHeight","_scrollWidth","html","clientWidth","clientHeight","_checkIfViewHasChanged","getElements","createElement","newElement","concat","removeElementById","updateElementPropsById","map","resetElementStyles","_this$_getScrollPosit3","updateScrollContainer","disableParallaxController","enableParallaxController","_this4","disableAllElements","enableAllElements","destroy","_objectWithoutPropertiesLoose","excluded","sourceKeys","indexOf","getIsolatedParallaxProps","obj","rest","parallaxProps","ParallaxContext","useParallax","controller","parallaxController","useContext","useParallaxController","useRef","useEffect","useVerifyController","_useState","useState","setElement","HTMLElement","Parallax","_getIsolatedParallaxP","FALLBACK_RECT","_excluded$1","absoluteStyle","ParallaxBannerLayer","layer","_rest$expanded","expanded","testId","divProps","imageStyle","image","backgroundImage","backgroundPosition","backgroundSize","expandedStyle","translateYStart","translateYEnd","_layer$targetElement$","_layer$targetElement","clientRect","absSpeed","getExpandedStyle","parallax","_excluded$2","containerStyle","overflow","ParallaxBanner","setTargetElement","containerRef","rootStyle","_props$layers","layers","rootRest","child","item","createController","ParallaxProvider","isDisabled","showAddressSearch","setShowAddressSearch","addressSearched","setAddressSearched","React","Dialog","open","hideSearchBy","DialogTitle","src","withPrefix","title","mode","IconButton","float","onClick","closeFunc","CloseIcon","DialogContent","AddressSearch","connect","state","webSocket","serviceAddress","siteConfig","commonData","dispatch","actions","includeAddressSearch","showZipPopup","setShowZipPopup","ElectricProviderList","Address","State","Zip","Button","Alert","severity","City","provider","ProviderLogo","offer","WebsiteUrl","variant","href","DisplayName","LaunchIcon","AddressSearchPopup","afterAddressSelected","fullWidth","textAlign","sortColumn","column","ArrowDropDownIcon","getAlertTitleUtilityClass","AlertTitleRoot","Typography","fontWeight","fontWeightMedium","gutterBottom","monthList","usageHistory","setUsageHistory","onUsageChanged","month","monthIndex","TextField","label","substring","placeholder","event","onKeyDown","keyCode","nextInput","getElementById","_chartOptions","chart","toolbar","show","plotOptions","bar","columnWidth","endingShape","stroke","xaxis","categories","markers","strokeWidth","fillOpacity","strokeOpacity","yaxis","tickAmount","texasREPList","showUsageHistoryPrompt","setShowUsageHistoryPrompt","saving","setSaving","saveError","setSaveError","chartOptions","setChartOptions","chartData","setChartData","usageEditTimeout","setTimeout","minUsage","maxUsage","_chartData","data","isNaN","push","log","clearTimeout","SmartMeter","AlertTitle","UsageHistoryForm","LoadableChart","series","DialogActions","Loadable","trackAs","mobileText","onVisibleChange","cookie","visible","setVisible","interpolatedValues","setInterpolatedValues","interpolate","split","join","PropertyName","toUpperCase","brand","cookieValue","dataApi","dangerouslySetInnerHTML","__html","UsageSelection","usageSetting","setUsageSetting","estimatedUsage","setEstimatedUsage","selectedUsage","setSelectedUsage","setShowUsageHistoryRequest","lastBillUsage","setLastBillUsage","lastBillAmount","setLastBillAmount","usageHistoryMode","setUsageHistoryMode","setLastSelectedUsage","setFiltersExpanded","tooltips","quickFilter","setQuickFilter","showUsageHistoryForm","setShowUsageHistoryForm","showCustom","setShowCustom","ResidentID","onFocus","select","inputMode","maxLength","InputProps","endAdornment","InputAdornment","startAdornment","InfoIcon","getContentHeight","body","FiltersElectric","_ref2","filtersExpanded","allOptionSelected","selectedRateType","selectedTermLength","filterCounts","selectedProviderList","setSelectedRateType","setSelectedTermLength","setSelectedProviderList","setAllOptionSelected","setFiltersClicked","quickFilterList","mobile","offerList","showQuickFiltersMenu","setShowQuickFiltersMenu","currentTarget","_quickFilter","ExpandMoreIcon","Menu","anchorEl","keepMounted","Boolean","onClose","hideInQuickFilters","requiredRateType","MenuItem","FontAwesomeIcon","FormControl","FormLabel","FormGroup","FormControlLabel","control","Checkbox","termLength","termLengthList","sort","a","b","valueA","parseInt","valueB","getTermLengthKeys","func","providerList","getProviderKeys","providerName","providerLogoBaseUrl","ProviderName","LogoFile","alt","scrollbarHeight","setScrollbarHeight","timeoutId","resizeListener","Scrollbars","autoHide","renderTrackHorizontal","_ref3","visibility","renderTrackVertical","renderTrackVerticalDefault","pageLoading","bindActionCreators","webSocketActions","truePrice","activeSection","setActiveSection","KeyboardArrowDownIcon","ThousandKWhTrap","inline","Rollercoaster","DontBeAverage","featuredOfferList","setFeaturedOfferList","priceColumn","setPriceColumn","usage","setUsage","OfferDictionary","Electric","_offerList","TermLength","getFullCostDetail","offerA","offerB","bestAdvertisedPriceList","bestAdvertisedPrice","floor","random","mostPopular","_offer","ProviderID","bestPrepaid","IsPrepaid","TrueCost_Dollars","bestTruePrice","RenewableContent","bestPercentRenewable","isTrueCost","FeaturedOfferElectric","AdvertisedPrice","TruePrice","TrueCost","TermType","getTermLengthLabel","isGimmickOffer","ProviderUsageCharge_Tier2_Amount","ProviderUsageCharge_Tier3_Amount","ProviderUsageCharge_Tier4_Amount","ProviderUsageCharge_Tier5_Amount","ProviderBaseCharge_PerDay_Amount","ProviderCredit_Tier1_Amount","ProviderCredit_Tier2_Amount","ProviderCredit_Tier3_Amount","ProviderCredit_Tier4_Amount","ProviderCredit_Tier5_Amount","BaseChargeAdjustment_Provider","BaseChargeAdjustment_Utility","UsageChargeAdjustment_All","RateType","isLanding","preFilter","preFilterLabel","headerRef","observer","headerIsSticky","setHeaderIsSticky","setSortColumn","estimated","lastBill","actual","setOfferList","filteredOfferList","setFilteredOfferList","offerDictionary","setOfferDictionary","offerCalc","visibleOfferCount","setVisibleOfferCount","lastSelectedUsage","CookieChecked","offerCalculationTimeout","offersUpdating","setOffersUpdating","estimatedUsageTimeout","lastBillUsageTimeout","showUsageHistoryRequest","rateType","setFilterCounts","usageHistoryExists","setUsageHistoryExists","bestOffer","setBestOffer","showTrueCostExplanation","setShowTrueCostExplanation","noOffers","setNoOffers","selectedSection","setSelectedSection","highlightPriceColumn","setHighlighPriceColumn","showTermTypePopup","setShowTermTypePopup","hasIntroText","setHasIntroText","filtersClicked","preFilterRemoved","setPrefilterRemoved","truePriceClicked","setTruePriceClicked","updateFilterCounts","dictProvider","dictTermLength","dictRateType","passesRateType","passesTermLength","passesProvider","termLengthLabel","sortOffers","_sortColumn","addFullCostDetail","doOfferSort","desc","sortedList","_toConsumableArray","result","getQuickFilterRateType","_selectedRateType","getQuickFilterTermLength","_selectedTermLength","Checklist","_section","section","ServiceSectionID","providerFilter","termLengthFilter","rateTypeFilter","someRateTypeSelected","someRateTypeChanged","someTermLengthChanged","_selectedProviderList","someProviderChanged","someTermLengthSelected","_allOptionsSelected","someProviderSelected","passesFilters","detailList","then","_detailList","detail","Key","Value","_usageHistory","_usageHistoryExists","field","clearFilters","IntersectionObserver","intersectionRatio","threshold","unobserve","NoDeregulatedElectric","FeaturedOffersElectric","Secondary","ChevronRightIcon","ArrowRightAltIcon","SortIcon","Tooltip","toFixed","SCLandingInline","OfferRowElectric","OfferID","isFeatured","offerIndex","FeaturedOffer","CircularProgress","UsageHistoryEntry","TermTypePopup","compareElectric6Month","PriceKWh","TableContainer","Table","TableHead","TableRow","TableCell","TableBody","PriceDollars","border","clip","margin","padding","array1","array2","itemComparer","every","index","asc","findClosest","currentValue","_values$reduce","closestIndex","distance","trackFinger","touchId","changedTouches","touchEvent","touch","identifier","clientX","clientY","valueToPercent","roundValueToStep","step","nearest","Number","parts","toExponential","matissaDecimalPart","decimalPart","toString","getDecimalPrecision","setValueIndex","newValue","output","slice","focusThumb","sliderRef","activeIndex","setActive","_sliderRef$current","_doc$activeElement","doc","ownerDocument","_sliderRef$current2","contains","activeElement","getAttribute","querySelector","areValuesEqual","oldValue","axisProps","offset","percent","leap","Identity","cachedSupportsTouchActionNone","doesSupportTouchActionNone","CSS","supports","useSlider","parameters","ariaLabelledby","disableSwap","isRtl","marks","marksProp","onChangeCommitted","orientation","rootRef","shiftStep","valueProp","setOpen","dragging","setDragging","moveCount","valueDerived","setValueState","useControlled","controlled","handleChange","thumbIndex","nativeEvent","clonedEvent","constructor","writable","range","_","marksValues","mark","isFocusVisibleRef","onBlur","handleBlurVisible","handleFocusVisible","focusVisibleRef","useIsFocusVisible","focusedThumbIndex","setFocusedThumbIndex","handleFocusRef","createHandleHiddenInputFocus","otherHandlers","_otherHandlers$onFocu","createHandleHiddenInputBlur","_otherHandlers$onBlur","changeValue","valueInput","marksIndex","maxMarksValue","Infinity","previousValue","createHandleHiddenInputKeyDown","_otherHandlers$onKeyD","shiftKey","preventDefault","_document$activeEleme","blur","previousIndex","axis","getFingerNewValue","finger","move","slider","percentToValue","handleTouchMove","useEventCallback","buttons","handleTouchEnd","stopListening","handleTouchStart","trackOffset","trackLeap","createHandleMouseLeave","_otherHandlers$onMous3","onMouseLeave","getHiddenInputProps","externalProps","_parameters$step","externalHandlers","extractEventHandlers","ownEventHandlers","_otherHandlers$onChan","valueAsNumber","mergedEventHandlers","direction","getRootProps","onMouseDown","_otherHandlers$onMous","defaultPrevented","button","getThumbProps","onMouseOver","_otherHandlers$onMous2","getThumbStyle","pointerEvents","Slot","isHostComponent","getSliderUtilityClass","SliderRoot","marked","track","trackInverted","trackFalse","_ref9","_theme$vars","borderRadius","cursor","touchAction","WebkitTapHighlightColor","colorAdjust","grey","thumb","transition","variants","_theme$vars2","marginRight","SliderRail","rail","SliderTrack","_ref10","_theme$vars3","transitions","create","duration","shortest","_theme$vars4","Slider","borderColor","applyStyles","SliderThumb","_ref11","_theme$vars5","outline","content","boxShadow","shadows","_theme$vars6","valueLabelOpen","circle","valueLabelCircle","valueLabelLabel","useValueLabelClasses","valueLabel","_ref12","zIndex","common","white","transformOrigin","pxToRem","SliderMark","slotShouldForwardProp","markActive","_ref13","background","paper","SliderMarkLabel","markLabel","_ref14","markLabelActive","Forward","_ref15","_slots$root","_slots$rail","_slots$track","_ref4","_slots$thumb","_ref5","_slots$valueLabel","_ref6","_slots$mark","_ref7","_slots$markLabel","_ref8","_slots$input","_slotProps$root","_slotProps$rail","_slotProps$track","_slotProps$thumb","_slotProps$valueLabel","_slotProps$mark","_slotProps$markLabel","_slotProps$input","ariaLabel","ariaValuetext","components","componentsProps","classesProp","getAriaLabel","getAriaValueText","slotProps","valueLabelDisplay","valueLabelFormat","some","RootSlot","Root","RailSlot","Rail","TrackSlot","Track","ThumbSlot","Thumb","ValueLabelSlot","ValueLabel","MarkSlot","Mark","MarkLabelSlot","MarkLabel","InputSlot","input","Input","rootSlotProps","railSlotProps","trackSlotProps","thumbSlotProps","valueLabelSlotProps","markSlotProps","markLabelSlotProps","inputSlotProps","rootProps","useSlotProps","elementType","getSlotProps","externalSlotProps","externalForwardedProps","additionalProps","as","railProps","trackProps","thumbProps","valueLabelProps","markProps","markLabelProps","inputSliderProps","ValueLabelComponent","dontBeAverageChartOptions","setDontBeAverageChartOptions","sliderUsage","setSliderUsage","_offerChartData","price","autoSliderInterval","autoSliderValue","sliderClicked","setSliderClicked","setInterval","autoSlideUsage","clearInterval","_dontBeAverageChartOptions","annotations","lowUsage","x2","highUsage","fillColor","_offerChartSeries","getSliderArrowStyle","maxPosition","minPosition","getRangePosition","trueCost_PerKWh","lowPrice","highPrice","trueCost_Dollars","lowDollars","highDollars","creditCount","stateUsageLastUpdated","article","bottomText","noText","waitForTrap","showTrap","chartSeries","setChartSeries","trapChartOptions","setTrapChartOptions","animations","enabled","$","OfferName","OfferDetailText","InternetDownloadSpeedMb","TVChannelCount","PhoneText","ProviderServiceList","HomeSecurityText","FeatureBadge1","PUCNumber","ProviderStatusID","ProductKey","OfferStatusID","OfferStatusName","ProviderOfferCode1","ProviderOfferCode2","ProviderOfferCode3","ProviderOfferCode4","ProviderOfferCode5","ProviderOfferCode6","ProviderOfferCode7","ProviderOfferCode8","ProviderOfferCode9","OfferValidStartDate","OfferValidEndDate","TerminationFeeTypeID","TerminationFeeTypeName","TerminationFeeAmount","NewCustomersOnly","ExistingCustomersOnly","EBillOnly","FeatureBadge2","FeatureBadge3","FeatureBadge4","FeatureBadge5","OffsiteSignUpUrl","UtilityID","EFLUrl","TOSUrl","YRAACUrl","PriceAt500","PriceAt1000","PriceAt2000","UtilityBaseCharge","UtilityUsageCharge","ProviderBaseCharge_Tier1_Amount","ProviderBaseCharge_Tier1_Start","ProviderBaseCharge_Tier1_End","ProviderBaseCharge_Tier2_Amount","ProviderBaseCharge_Tier2_Start","ProviderBaseCharge_Tier2_End","ProviderBaseCharge_Tier3_Amount","ProviderBaseCharge_Tier3_Start","ProviderBaseCharge_Tier3_End","ProviderBaseCharge_Tier4_Amount","ProviderBaseCharge_Tier4_Start","ProviderBaseCharge_Tier4_End","ProviderBaseCharge_Tier5_Amount","ProviderBaseCharge_Tier5_Start","ProviderBaseCharge_Tier5_End","ProviderBaseCharge_PerDay_UsageCredit","ProviderUsageCharge_Tier1_Amount","ProviderUsageCharge_Tier1_Start","ProviderUsageCharge_Tier1_End","ProviderUsageCharge_Tier2_Start","ProviderUsageCharge_Tier2_End","ProviderUsageCharge_Tier3_Start","ProviderUsageCharge_Tier3_End","ProviderUsageCharge_Tier4_Start","ProviderUsageCharge_Tier4_End","ProviderUsageCharge_Tier5_Start","ProviderUsageCharge_Tier5_End","ProviderFlatCharge_Tier1_Amount","ProviderFlatCharge_Tier1_Start","ProviderFlatCharge_Tier1_End","ProviderFlatCharge_Tier2_Amount","ProviderFlatCharge_Tier2_Start","ProviderFlatCharge_Tier2_End","ProviderFlatCharge_Tier3_Amount","ProviderFlatCharge_Tier3_Start","ProviderFlatCharge_Tier3_End","ProviderFlatCharge_Tier4_Amount","ProviderFlatCharge_Tier4_Start","ProviderFlatCharge_Tier4_End","ProviderFlatCharge_Tier5_Amount","ProviderFlatCharge_Tier5_Start","ProviderFlatCharge_Tier5_End","ProviderCredit_Tier1_Start","ProviderCredit_Tier1_End","ProviderCredit_Tier2_Start","ProviderCredit_Tier2_End","ProviderCredit_Tier3_Start","ProviderCredit_Tier3_End","ProviderCredit_Tier4_Start","ProviderCredit_Tier4_End","ProviderCredit_Tier5_Start","ProviderCredit_Tier5_End","BaseChargeAdjustment_All","UsageChargeAdjustment_Provider","UsageChargeAdjustment_Utility","EBillProviderDiscount_All","EBillProviderDiscount_ProviderBaseCharge","EBillProviderDiscount_ProviderUsageCharge","UtilityName","ProductTypeID","CompareStateAverage_Start","CompareStateAverage_End","OrderPhone","CompareStateAverage_Count","OfferTypeID","OfferTypeName","AutoPayRequired","AutoPayDiscount","AutoPayDiscountTerm","TermTypeID","TermTypeName","Term_Rate1_Amount","Term_Rate1_Start","Term_Rate1_End","Term_Rate2_Amount","Term_Rate2_Start","Term_Rate2_End","Term_Rate3_Amount","Term_Rate3_Start","Term_Rate3_End","Term_Rate4_Amount","Term_Rate4_Start","Term_Rate4_End","Term_Rate5_Amount","Term_Rate5_Start","Term_Rate5_End","TermDiscount","Bundle1_OfferID","Bundle2_OfferID","Bundle3_OfferID","Bundle4_OfferID","Bundle5_OfferID","PhoneIsUnlimitedCalling","InternetRequired","TVRequired","PhoneRequired","HomeSecurityRequired","IsFiber","DataMaxGb","DataOverageFee","MinimumUpfrontPayment","Charge1_Group","Charge1_Name","Charge1_MonthlyAmount","Charge1_PurchaseAmount","Charge1_Term","Charge1_Term_Start","Charge1_Term_End","Charge1_IsRequired","Charge2_Group","Charge2_Name","Charge2_MonthlyAmount","Charge2_PurchaseAmount","Charge2_Term","Charge2_Term_Start","Charge2_Term_End","Charge2_IsRequired","Charge3_Group","Charge3_Name","Charge3_MonthlyAmount","Charge3_PurchaseAmount","Charge3_Term","Charge3_Term_Start","Charge3_Term_End","Charge3_IsRequired","Charge4_Group","Charge4_Name","Charge4_MonthlyAmount","Charge4_PurchaseAmount","Charge4_Term","Charge4_Term_Start","Charge4_Term_End","Charge4_IsRequired","Charge5_Group","Charge5_Name","Charge5_MonthlyAmount","Charge5_PurchaseAmount","Charge5_Term","Charge5_Term_Start","Charge5_Term_End","Charge5_IsRequired","Charge6_Group","Charge6_Name","Charge6_MonthlyAmount","Charge6_PurchaseAmount","Charge6_Term","Charge6_Term_Start","Charge6_Term_End","Charge6_IsRequired","Charge7_Group","Charge7_Name","Charge7_MonthlyAmount","Charge7_PurchaseAmount","Charge7_Term","Charge7_Term_Start","Charge7_Term_End","Charge7_IsRequired","Charge8_Group","Charge8_Name","Charge8_MonthlyAmount","Charge8_PurchaseAmount","Charge8_Term","Charge8_Term_Start","Charge8_Term_End","Charge8_IsRequired","Charge9_Group","Charge9_Name","Charge9_MonthlyAmount","Charge9_PurchaseAmount","Charge9_Term","Charge9_Term_Start","Charge9_Term_End","Charge9_IsRequired","Charge10_Group","Charge10_Name","Charge10_MonthlyAmount","Charge10_PurchaseAmount","Charge10_Term","Charge10_Term_Start","Charge10_Term_End","Charge10_IsRequired","Charge11_Group","Charge11_Name","Charge11_MonthlyAmount","Charge11_PurchaseAmount","Charge11_Term","Charge11_Term_Start","Charge11_Term_End","Charge11_IsRequired","Charge12_Group","Charge12_Name","Charge12_MonthlyAmount","Charge12_PurchaseAmount","Charge12_Term","Charge12_Term_Start","Charge12_Term_End","Charge12_IsRequired","Charge13_Group","Charge13_Name","Charge13_MonthlyAmount","Charge13_PurchaseAmount","Charge13_Term","Charge13_Term_Start","Charge13_Term_End","Charge13_IsRequired","Charge14_Group","Charge14_Name","Charge14_MonthlyAmount","Charge14_PurchaseAmount","Charge14_Term","Charge14_Term_Start","Charge14_Term_End","Charge14_IsRequired","Charge15_Group","Charge15_Name","Charge15_MonthlyAmount","Charge15_PurchaseAmount","Charge15_Term","Charge15_Term_Start","Charge15_Term_End","Charge15_IsRequired","Charge16_Group","Charge16_Name","Charge16_MonthlyAmount","Charge16_PurchaseAmount","Charge16_Term","Charge16_Term_Start","Charge16_Term_End","Charge16_IsRequired","Charge17_Group","Charge17_Name","Charge17_MonthlyAmount","Charge17_PurchaseAmount","Charge17_Term","Charge17_Term_Start","Charge17_Term_End","Charge17_IsRequired","Charge18_Group","Charge18_Name","Charge18_MonthlyAmount","Charge18_PurchaseAmount","Charge18_Term","Charge18_Term_Start","Charge18_Term_End","Charge18_IsRequired","Charge19_Group","Charge19_Name","Charge19_MonthlyAmount","Charge19_PurchaseAmount","Charge19_Term","Charge19_Term_Start","Charge19_Term_End","Charge19_IsRequired","Charge20_Group","Charge20_Name","Charge20_MonthlyAmount","Charge20_PurchaseAmount","Charge20_Term","Charge20_Term_Start","Charge20_Term_End","Charge20_IsRequired","Charge1_MaxCount","Charge2_MaxCount","Charge3_MaxCount","Charge4_MaxCount","Charge5_MaxCount","Charge6_MaxCount","Charge7_MaxCount","Charge8_MaxCount","Charge9_MaxCount","Charge10_MaxCount","Charge11_MaxCount","Charge12_MaxCount","Charge13_MaxCount","Charge14_MaxCount","Charge15_MaxCount","Charge16_MaxCount","Charge17_MaxCount","Charge18_MaxCount","Charge19_MaxCount","Charge20_MaxCount","Charge1_IncludedInPrice","Charge2_IncludedInPrice","Charge3_IncludedInPrice","Charge4_IncludedInPrice","Charge5_IncludedInPrice","Charge6_IncludedInPrice","Charge7_IncludedInPrice","Charge8_IncludedInPrice","Charge9_IncludedInPrice","Charge10_IncludedInPrice","Charge11_IncludedInPrice","Charge12_IncludedInPrice","Charge13_IncludedInPrice","Charge14_IncludedInPrice","Charge15_IncludedInPrice","Charge16_IncludedInPrice","Charge17_IncludedInPrice","Charge18_IncludedInPrice","Charge19_IncludedInPrice","Charge20_IncludedInPrice","Bundle6_OfferID","Bundle7_OfferID","Bundle8_OfferID","Bundle9_OfferID","Bundle10_OfferID","Charge21_Group","Charge21_Name","Charge21_MonthlyAmount","Charge21_PurchaseAmount","Charge21_Term","Charge21_Term_Start","Charge21_Term_End","Charge21_IsRequired","Charge21_MaxCount","Charge21_IncludedInPrice","Charge22_Group","Charge22_Name","Charge22_MonthlyAmount","Charge22_PurchaseAmount","Charge22_Term","Charge22_Term_Start","Charge22_Term_End","Charge22_IsRequired","Charge22_MaxCount","Charge22_IncludedInPrice","Charge23_Group","Charge23_Name","Charge23_MonthlyAmount","Charge23_PurchaseAmount","Charge23_Term","Charge23_Term_Start","Charge23_Term_End","Charge23_IsRequired","Charge23_MaxCount","Charge23_IncludedInPrice","Charge24_Group","Charge24_Name","Charge24_MonthlyAmount","Charge24_PurchaseAmount","Charge24_Term","Charge24_Term_Start","Charge24_Term_End","Charge24_IsRequired","Charge24_MaxCount","Charge24_IncludedInPrice","Charge25_Group","Charge25_Name","Charge25_MonthlyAmount","Charge25_PurchaseAmount","Charge25_Term","Charge25_Term_Start","Charge25_Term_End","Charge25_IsRequired","Charge25_MaxCount","Charge25_IncludedInPrice","Charge26_Group","Charge26_Name","Charge26_MonthlyAmount","Charge26_PurchaseAmount","Charge26_Term","Charge26_Term_Start","Charge26_Term_End","Charge26_IsRequired","Charge26_MaxCount","Charge26_IncludedInPrice","Charge27_Group","Charge27_Name","Charge27_MonthlyAmount","Charge27_PurchaseAmount","Charge27_Term","Charge27_Term_Start","Charge27_Term_End","Charge27_IsRequired","Charge27_MaxCount","Charge27_IncludedInPrice","Charge28_Group","Charge28_Name","Charge28_MonthlyAmount","Charge28_PurchaseAmount","Charge28_Term","Charge28_Term_Start","Charge28_Term_End","Charge28_IsRequired","Charge28_MaxCount","Charge28_IncludedInPrice","Charge29_Group","Charge29_Name","Charge29_MonthlyAmount","Charge29_PurchaseAmount","Charge29_Term","Charge29_Term_Start","Charge29_Term_End","Charge29_IsRequired","Charge29_MaxCount","Charge29_IncludedInPrice","Charge30_Group","Charge30_Name","Charge30_MonthlyAmount","Charge30_PurchaseAmount","Charge30_Term","Charge30_Term_Start","Charge30_Term_End","Charge30_IsRequired","Charge30_MaxCount","Charge30_IncludedInPrice","FeaturesLabel","FeaturesText","DisclosuresLabel","DisclosuresText","SummaryText","ApiID","LocalitySourceProviderID","ChannelsLabel","ChannelsText","ChannelsLinkLabel","ChannelsLinkUrl","PriceContract","CSPhone","BundleOptionID","LogoFileEmail","OrderPriority","SeparateOrderForEachOffer","ContactInfoFooter","ApiName","SatisfactionGuaranteeText","_seasonalUsage","July","SourceGroup","UsageHistorySourceName","Month","Usage","UsageVariable","AveragePricePerCustomer_12Month","AverageUsagePerCustomer_12Month","LastUpdated","June","May","April","March","February","January","December","November","October","September","August","costDetail","ElectricUsageHistory","trueCost","table","calcMonth","dollars","perKWh","creditApplies","SingleMonthPriceKWh","TrueCost_PerKWh","trueCost_Usage","TrueCost_Usage","zoom","curve","dashArray","colors","_price","labels","formatter","_monthsOfYear","serviceAddressUpdated","serviceAddressActions","zipFromCookie","_city","useQueryParam","zipCode","setZipCode","city","setCity","billAmount","setBillAmount","billUsage","setBillUsage","SCLandingWrapper","fromFeatured","rowOffer","setRowOffer","getRateType","showDetails","OfferRow","showOfferDetails","setShowOfferDetails","OrderButton","calcs","creditList","isTiered","OfferDetailsPopup","setLandingPage","noHeader","headerIfName","checking","hasZipStored","setHasZipStored","getCookie","hideHeader","setHideHeader","uc","show6MonthAvg","setShow6MonthAvg","showSummer","setShowSummer","simple","zipEntered","scrollTimeout","scrollToPlans","instant","bestHeader","getElementsByClassName","offerRow","scrollToElementInPage","route","getCurrentRoute","initted","ajaxConnected","hasServiceAddress","mock","saveServiceAddress","force","electricData","Electric6MonthAvgCompare","FirstName","hideAddressSearchButton","toLowerCase","logo","ConnectElectric"],"sourceRoot":""}