{"version":3,"file":"rctBB-d982aaeb5458f5f46114.js","mappings":"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","sources":["webpack://@whistleout/webui/./Areas/Shared/React/js/utils/Hooks.ts","webpack://@whistleout/webui/./Areas/Shared/React/js/components/ResponsiveLayout.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/utils/BroadbandQueryString.js","webpack://@whistleout/webui/./Areas/Broadband/React/js/actions/BroadbandHomeActions.js","webpack://@whistleout/webui/./Areas/Broadband/React/js/adaptors/BroadbandResultsAdaptor.js","webpack://@whistleout/webui/./Areas/Shared/React/js/components/Spinner.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/home/SearchButton.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/home/SpeedDataSelect.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/home/FiltersLg.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/home/FiltersSm.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/home/FiltersXs.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/home/Filters.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/home/Home.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/location/HeaderMapWithStatistics.jsx","webpack://@whistleout/webui/./Areas/Shared/React/js/components/Modal.tsx","webpack://@whistleout/webui/./Areas/Shared/React/js/components/StatusLayout.tsx","webpack://@whistleout/webui/./Areas/Shared/React/js/components/LinkHandler.tsx","webpack://@whistleout/webui/./Areas/Shared/React/js/components/TransactLinkHandler.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/product/availabilityCheck/IncompleteAddressWarning.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/product/availabilityCheck/AddressSearchPanel.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/product/availabilityCheck/ErrorPanel.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/product/availabilityCheck/PopupBlockerMessage.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/product/availabilityCheck/SearchPlanUnavailablePanel.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/product/availabilityCheck/AvailabilityCheckPanel.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/product/ProductPage.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/hooks/location.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/product/SmartMoveVerifyPage.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/actions/BroadbandAddressSearchActions.js","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/shared/BroadbandAddressSearch.jsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/actions/BroadbandActions.ts","webpack://@whistleout/webui/./Areas/Shared/React/js/components/sliders/SliderWithLabel.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/main/DataFilter.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/main/ErrorPanel.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/main/ShowFiltersButton.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/main/SpeedFilter.tsx","webpack://@whistleout/webui/./Areas/Shared/React/js/components/optionButtons/OptionButton.tsx","webpack://@whistleout/webui/./Areas/Shared/React/js/components/optionButtons/OptionTextButton.tsx","webpack://@whistleout/webui/./Areas/Shared/React/js/components/optionButtons/OptionGroup.tsx","webpack://@whistleout/webui/./Areas/Shared/React/js/components/optionButtons/OptionImageButton.tsx","webpack://@whistleout/webui/./Areas/Shared/React/js/components/optionButtons/SuppliersOptionGroup.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/main/SuppliersFilter.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/SearchFilterContext.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/modal/BundleSelect.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/modal/AdvancedTab.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/modal/connection/ConnectionType.jsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/modal/connection/ConnectionTab.jsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/modal/ModalDataSlider.jsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/modal/DataTab.jsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/modal/FaqTab.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/modal/ModalSpeedSlider.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/modal/SpeedTab.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/modal/ModalSpendSlider.jsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/modal/ModalUpfrontSlider.jsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/modal/SpendTab.jsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/modal/SuppliersTab.jsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/modal/TabContent.jsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/modal/TabMenuItem.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/modal/FilterModal.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/filters/Filters.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/components/search/Search.tsx","webpack://@whistleout/webui/./Areas/Broadband/React/js/broadband.js","webpack://@whistleout/webui/./Areas/Shared/React/js/components/AppComponent.jsx","webpack://@whistleout/webui/./Areas/Shared/React/js/components/Select.jsx","webpack://@whistleout/webui/./Areas/Shared/React/js/components/maps/AddressMap.jsx","webpack://@whistleout/webui/./Areas/Shared/React/js/components/maps/HeaderMap.jsx","webpack://@whistleout/webui/./Areas/Shared/React/js/components/sliders/RangeSlider.jsx","webpack://@whistleout/webui/./Areas/Shared/React/js/components/suppliers/SupplierListItem.jsx","webpack://@whistleout/webui/./Areas/Shared/React/js/components/suppliers/SuppliersList.jsx","webpack://@whistleout/webui/./Areas/Shared/React/js/utils/CommonQueryString.js","webpack://@whistleout/webui/./Areas/Shared/React/js/components/addressSearch/AddressChangeTracker.tsx","webpack://@whistleout/webui/./Areas/Shared/React/js/components/sliders/Slider.tsx","webpack://@whistleout/webui/./Areas/Shared/React/js/components/sliders/SliderHandle.tsx","webpack://@whistleout/webui/./Areas/Shared/js/vendor/react.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { useMediaQuery } from 'react-responsive';\nexport function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}\nexport var ScreenSize;\n(function (ScreenSize) {\n ScreenSize[\"Desktop\"] = \"desktop\";\n ScreenSize[\"Mobile\"] = \"mobile\";\n ScreenSize[\"Tablet\"] = \"tablet\";\n})(ScreenSize || (ScreenSize = {}));\nexport function useScreenSize() {\n const isMobile = useMediaQuery({ maxWidth: 767 });\n const isTablet = useMediaQuery({ minWidth: 768, maxWidth: 991 });\n return {\n isMobile,\n isTablet,\n type: isTablet ? ScreenSize.Tablet : isMobile ? ScreenSize.Mobile : ScreenSize.Desktop\n };\n}\nexport function useIsVisible(ref) {\n const [isIntersecting, setIntersecting] = useState(false);\n useEffect(() => {\n const observer = new IntersectionObserver(([entry]) => setIntersecting(entry.isIntersecting));\n observer.observe(ref.current);\n // Unmount\n return () => {\n observer.disconnect();\n };\n }, [ref]);\n return isIntersecting;\n}\n// Source: https://medium.com/the-non-traditional-developer/how-to-use-the-forwarded-ref-in-react-1fb108f4e6afs\nexport const useForwardedRef = (ref) => {\n const innerRef = useRef(null);\n useEffect(() => {\n if (!ref) {\n return;\n }\n if (typeof ref === 'function') {\n ref(innerRef.current);\n }\n else {\n ref.current = innerRef.current;\n }\n });\n return innerRef;\n};\n","import { Fragment as _Fragment, jsx as _jsx } from \"react/jsx-runtime\";\nimport React, { useEffect } from 'react';\nimport { useScreenSize } from '../utils/Hooks';\nconst ResponsiveLayout = (props) => {\n const screenSize = useScreenSize();\n useEffect(() => {\n if (props.onScreenSizeChange) {\n props.onScreenSizeChange(screenSize.type);\n }\n }, [props, screenSize.type]);\n return (_jsx(_Fragment, { children: screenSize.isMobile\n ? props.children.mobile\n : screenSize.isTablet\n ? props.children.tablet\n : props.children.desktop }));\n};\nexport default ResponsiveLayout;\n","import { generateCommonQueryString } from '../../../../Shared/React/js/utils/CommonQueryString';\n\n// TODO: Try reducing cyclomatic complexity and enable the eslint rule\n// eslint-disable-next-line complexity\nexport function generateQueryString(\n /**@type {{common: import('../../../../Shared/js/@types/SearchCriteriaCommon').SearchCriteriaCommon;}} */ data,\n allAvailableConnectionsSelected,\n /** @type {boolean} */ isEmbed\n) {\n const appendQueryParam = WhistleOut.appendQueryParam;\n let queryString = '';\n\n if (data.location) {\n queryString = appendQueryParam(queryString, 'location=' + data.location);\n }\n\n if (data.data) {\n queryString = appendQueryParam(queryString, 'data=' + data.data);\n }\n\n if (data.speed) {\n queryString = appendQueryParam(queryString, 'speed=' + data.speed);\n }\n\n if (data.maxSpeed) {\n queryString = appendQueryParam(queryString, 'maxspeed=' + data.maxSpeed);\n }\n\n if (data.maxUploadSpeed) {\n queryString = appendQueryParam(queryString, 'maxuploadspeed=' + data.maxUploadSpeed);\n }\n\n if (data.customer && data.customer.length > 0) {\n queryString = appendQueryParam(queryString, 'customer=' + data.customer);\n }\n\n if (parseInt(data.maxUpfront) > -1) {\n queryString = appendQueryParam(queryString, 'maxupfront=' + data.maxUpfront);\n }\n\n if (data.planType) {\n queryString = appendQueryParam(queryString, 'type=' + data.planType);\n }\n\n if (data.modemShortUrl && data.modemShortUrl.length > 0) {\n queryString = appendQueryParam(queryString, 'modem=' + data.modemShortUrl);\n }\n\n if (data.simOnly === true) {\n queryString = appendQueryParam(queryString, 'simonly=true');\n }\n\n if (\n !allAvailableConnectionsSelected &&\n data.connectionTypes &&\n data.connectionTypes.values &&\n data.connectionTypes.values.length > 0\n ) {\n queryString = appendQueryParam(\n queryString,\n 'connection=' + data.connectionTypes.values.slice().sort().join(',')\n );\n }\n\n if (data.excludeBundles) {\n queryString = appendQueryParam(queryString, 'excludebundles=true');\n }\n\n if (data.reseller) {\n queryString = appendQueryParam(queryString, 'reseller=' + data.reseller);\n }\n\n if (data.hideEmptyTabs === true) {\n queryString = appendQueryParam(queryString, 'hideemptytabs=true');\n }\n\n if (data.hideSingleResultTab === true) {\n queryString = appendQueryParam(queryString, 'hidesingleresulttab=true');\n }\n\n if (data.peakDataOnly === true) {\n queryString = appendQueryParam(queryString, 'peakdata=true');\n }\n\n if (data.showFewerResults === false) {\n queryString = appendQueryParam(queryString, 'showlessresults=false');\n }\n\n if (data.uploadNotCounted === true) {\n queryString = appendQueryParam(queryString, 'uploadnotcounted=true');\n }\n\n if (data.staticIp === true) {\n queryString = appendQueryParam(queryString, 'staticip=true');\n }\n\n if (data.prepaidExpiry && data.prepaidExpiry !== 0 && data.prepaidExpiry !== '0') {\n queryString = appendQueryParam(queryString, 'prepaidexpiry=' + data.prepaidExpiry);\n }\n\n if (data.network && data.network.length > 0) {\n queryString = appendQueryParam(queryString, 'network=' + data.network);\n }\n\n if (data.includeFiveG === true) {\n queryString = appendQueryParam(queryString, '5g=true');\n }\n\n // TODO: Fix the violation and enable the rule\n // eslint-disable-next-line eqeqeq\n if (data.state != undefined) {\n queryString = appendQueryParam(queryString, 'state=' + data.state);\n }\n\n if (data.bundles) {\n if (data.bundles.homePhone !== undefined && data.bundles.homePhone !== null) {\n queryString = appendQueryParam(queryString, 'homephone=' + data.bundles.homePhone);\n }\n\n if (data.bundles.tv !== undefined && data.bundles.tv !== null) {\n queryString = appendQueryParam(queryString, 'tv=' + data.bundles.tv);\n }\n\n if (data.bundles.lineRental !== undefined && data.bundles.lineRental !== null) {\n queryString = appendQueryParam(queryString, 'linerental=' + data.bundles.lineRental);\n }\n\n if (data.bundles.homePhone && data.bundles.homePhoneCalls && data.bundles.homePhoneCalls.length > 0) {\n queryString = appendQueryParam(queryString, 'homephonecalls=' + data.bundles.homePhoneCalls.join(','));\n }\n\n if (data.bundles.tv && data.bundles.tvChannels && data.bundles.tvChannels.length > 0) {\n queryString = appendQueryParam(queryString, 'channels=' + data.bundles.tvChannels.join(','));\n }\n\n if (data.bundles.mobilePhone !== undefined && data.bundles.mobilePhone !== null) {\n queryString = appendQueryParam(queryString, 'mobilephone=' + data.bundles.mobilePhone);\n }\n }\n\n if (data.common) {\n const commonQueryString = generateCommonQueryString(data.common, isEmbed);\n if (commonQueryString.length > 0) {\n queryString = appendQueryParam(queryString, commonQueryString);\n }\n }\n\n return queryString;\n}\n","import { produce } from 'immer';\n\nimport { generateQueryString } from '../utils/BroadbandQueryString';\n\nexport const search = (searchUrl, criteria, coveragePromise) => {\n if (!coveragePromise) {\n goToSearchPage(searchUrl, criteria);\n return;\n }\n\n coveragePromise.then(result => {\n const newCriteria = produce(criteria, draft => {\n if (result) {\n return criteria;\n }\n\n draft.criteria.connectionTypes.values = result.connectionTypes.map(t => t.shortUrl);\n\n if (!result.useDefaultSuppliers) {\n draft.criteria.common.suppliers = {};\n }\n });\n goToSearchPage(searchUrl, newCriteria);\n });\n};\n\nexport const goToSearchPage = (searchUrl, criteria) => {\n const url = searchUrl;\n const queryString = generateQueryString(criteria);\n const fullUrl = queryString.length ? `${url}?${queryString}` : url;\n location.href = fullUrl;\n};\n\nexport default class BroadbandHomeActions {\n search;\n goToSearchPage;\n}\n","import '../../../../Shared/js/SpeedTest';\n\nimport toNumber from 'lodash/toNumber';\n\nimport { waitFor } from '../../../../Shared/js/utils/timer';\nimport { generateQueryString } from '../utils/BroadbandQueryString';\n\nexport default class BroadbandResultsAdaptor {\n unbindAll() {\n const searchResultsPage = wo$('#search-results-partial');\n if (!searchResultsPage.length) return;\n searchResultsPage.off('click');\n this.bindPreviewActions();\n }\n\n async bindCoverageMap() {\n const searchResultsPage = wo$('#results-container');\n if (!searchResultsPage.length) return;\n\n const mapContainer = searchResultsPage.find('[data-coverage-maps]');\n if (!mapContainer.length) {\n return;\n }\n\n await waitFor(() => !!WhistleOut.CoverageMap);\n if (WhistleOut.CoverageMap) {\n WhistleOut.CoverageMap.init(searchResultsPage);\n }\n\n var instanceId = mapContainer.data('instance-id');\n\n const nbnMapElement = searchResultsPage.find('#nbn-map-' + instanceId);\n const adslMapElement = searchResultsPage.find('#adsl-map-' + instanceId);\n const mobileMapElement = searchResultsPage.find('#mobile-map-' + instanceId);\n\n const coverageMapsButton = wo$('#coverage-maps-button');\n if (coverageMapsButton.length) {\n if (nbnMapElement.length || adslMapElement.length || mobileMapElement.length) {\n coverageMapsButton.removeClass('hidden');\n } else {\n coverageMapsButton.addClass('hidden');\n }\n\n coverageMapsButton.find('[data-goto-coverage-map]').click(function () {\n WhistleOut.scrollTo('[data-coverage-maps]');\n });\n }\n }\n\n bindFastProviders() {\n const fastProviders = wo$('#fast-providers');\n if (!fastProviders) return;\n var close = fastProviders.find('#fast-providers-close');\n close.off('click').on('click', function () {\n var expires = new Date();\n expires.setTime(expires.getTime() + 60 * 60 * 1000);\n Cookies.set('HideFastProviders', '1', { path: '/', expires: expires });\n fastProviders.slideUp();\n });\n }\n\n hideCoverageMapButton() {\n const coverageMapsButton = wo$('#coverage-maps-button');\n if (coverageMapsButton.length) {\n coverageMapsButton.addClass('hidden');\n }\n }\n\n bindContractDropdown(changeContractTypeHandler, showModalHandler) {\n const searchResultsPage = wo$('#search-results-partial');\n if (!searchResultsPage.length) return;\n\n searchResultsPage\n .off('click', '[data-show-only-contract]')\n .on('click', '[data-show-only-contract]', function () {\n const contract = wo$(this).data('show-only-contract');\n changeContractTypeHandler(contract);\n });\n\n searchResultsPage //\n .off('click', '[data-hide-all-contract]')\n .on('click', '[data-hide-all-contract]', function () {\n const contract = wo$(this).data('hide-all-contract');\n changeContractTypeHandler(contract, true);\n });\n\n searchResultsPage //\n .off('click', '[data-copy-transact-url]')\n .on('click', '[data-copy-transact-url]', function () {\n WhistleOut.copyToClipboard(wo$(this).data('copy-transact-url'));\n });\n\n wo$('body')\n .off('click', '[data-show-filter-modal]')\n .on('click', '[data-show-filter-modal]', function () {\n const tabName = wo$(this).data('show-filter-modal');\n showModalHandler(tabName);\n });\n\n if (wo$('body').find('#filters-original').length === 0) {\n wo$('[data-show-filter-modal]').hide();\n if (wo$('[data-show-filter-modal]').parent().prev().hasClass('divider')) {\n wo$('[data-show-filter-modal]').parent().prev().hide();\n }\n } else {\n wo$('[data-show-filter-modal]').show();\n if (wo$('[data-show-filter-modal]').parent().prev().hasClass('divider')) {\n wo$('[data-show-filter-modal]').parent().prev().show();\n }\n }\n }\n\n bindHideFeatureResults(hideFeaturedResultsHandler) {\n const searchResultsPage = wo$('#search-results-partial');\n if (!searchResultsPage.length) return;\n\n searchResultsPage\n .off('click', '[data-results-action=HideAllFeaturedResults]')\n .on('click', '[data-results-action=HideAllFeaturedResults]', function () {\n hideFeaturedResultsHandler();\n });\n }\n\n bindDisableMaximumResultLimits(disableMaximumResultLimitsHandler) {\n const searchResultsPage = wo$('#search-results-partial');\n if (!searchResultsPage.length) return;\n\n searchResultsPage\n .off('click', '[data-results-action=DisableMaximumResultLimits]')\n .on('click', '[data-results-action=DisableMaximumResultLimits]', function () {\n disableMaximumResultLimitsHandler();\n });\n }\n\n bindPreviewActions() {\n const searchResultsPage = wo$('#search-results-partial');\n if (!searchResultsPage.length) return;\n\n searchResultsPage\n .off('click', 'a[data-results-action = \"HideAllPreviewItems\"]')\n .on('click', 'a[data-results-action = \"HideAllPreviewItems\"]', function () {\n searchResultsPage.find('.results-list div[data-result].bg-pink').hide();\n });\n\n searchResultsPage\n .off('click', 'a[data-results-action = \"ShowPreviewItemsOnly\"]')\n .on('click', 'a[data-results-action = \"ShowPreviewItemsOnly\"]', function () {\n searchResultsPage.find('.results-list div[data-result].bg-pink').show();\n searchResultsPage.find('.results-list div[data-result]:not(.bg-pink)').hide();\n });\n\n searchResultsPage\n .off('click', 'a[data-results-action = \"RemovePreviewHighlighting\"]')\n .on('click', 'a[data-results-action = \"RemovePreviewHighlighting\"]', function () {\n searchResultsPage.find('.results-list div[data-result].bg-pink').removeClass('bg-pink');\n });\n }\n\n bindSort(changeSortHandler) {\n const searchResultsPage = wo$('#search-results-partial');\n if (!searchResultsPage.length) return;\n\n searchResultsPage //\n .off('click', '[data-sort-expression]')\n .on('click', '[data-sort-expression]', function () {\n const sortExpression = wo$(this).data('sort-expression');\n let sortAscending = true;\n const isAscending = wo$(this).data('sort-ascending');\n if (isAscending === false || isAscending === 'False') sortAscending = false;\n changeSortHandler(sortExpression, sortAscending);\n });\n }\n\n bindCoverageStrip(resetConnectionsHandler) {\n const searchResultsPage = wo$('#search-results-partial');\n if (!searchResultsPage.length) return;\n\n searchResultsPage\n .off('click', '[data-nbn-strip] [data-nbn-reset]')\n .on('click', '[data-nbn-strip] [data-nbn-reset]', function (args) {\n args.preventDefault();\n resetConnectionsHandler();\n });\n }\n\n bindCoverageErrorStrip(retrySearchHandler) {\n const searchResultsPage = wo$('#search-results-partial');\n if (!searchResultsPage.length) return;\n\n searchResultsPage\n .off('click', '[data-nbn-strip] [data-nbn-retry]')\n .on('click', '[data-nbn-strip] [data-nbn-retry]', function (args) {\n args.preventDefault();\n retrySearchHandler();\n });\n }\n\n bindModemCarouselLandingPage(changeModem) {\n const landingPage = wo$('.layout-landing');\n if (!landingPage.length) return;\n\n landingPage\n .find('[data-modem]')\n .off('click')\n .on('click', function (args) {\n args.preventDefault();\n const modemShortUrl = wo$(this).data('modem');\n changeModem(modemShortUrl);\n WhistleOut.scrollTo('#results-container');\n });\n }\n\n bindLandingPageCriteria(attribute, callback) {\n const landingPage = wo$('.layout-landing');\n if (!landingPage.length) {\n return;\n }\n\n landingPage\n .find('[data-' + attribute + ']')\n .off('click')\n .on('click', function (e) {\n e.preventDefault();\n const value = wo$(this).data(attribute);\n callback(value);\n WhistleOut.scrollTo('#results-container');\n });\n }\n\n bindCriteriaFilters(criteria, callback) {\n var trueOrNull = WhistleOut.trueOrNull;\n var falseOrNull = WhistleOut.falseOrNull;\n\n const setBundles = (criteria, key, val) => {\n if (!criteria.bundles) {\n criteria.bundles = {};\n }\n\n criteria.bundles[key] = val;\n };\n\n // See: ../utils/BroadbandQueryString.js\n const mappings = {\n channels: (e, val) => {\n setBundles(e, 'tvChannels', (val || '').split(','));\n },\n connection: (e, val) => {\n e.connectionTypes.values = (val || '').split(',');\n },\n data: (e, val) => {\n e.data = toNumber(val);\n },\n homephone: (e, val) => {\n setBundles(e, 'homePhone', val);\n },\n homephonecalls: (e, val) => {\n setBundles(e, 'homePhoneCalls', (val || '').split(','));\n },\n linerental: (e, val) => {\n setBundles(e, 'lineRental', val);\n },\n mobilephone: (e, val) => {\n setBundles(e, 'mobilePhone', val);\n },\n modem: (e, val) => {\n e.modemShortUrl = val;\n },\n peakdata: (e, val) => {\n e.peakDataOnly = trueOrNull(val);\n },\n showlessresults: (e, val) => {\n e.showFewerResults = falseOrNull(val);\n },\n simonly: (e, val) => {\n e.simOnly = trueOrNull(val);\n },\n speed: (e, val) => {\n e.speed = toNumber(val);\n },\n tv: (e, val) => {\n setBundles(e, 'tv', val);\n },\n type: (e, val) => {\n e.planType = val;\n }\n };\n\n WhistleOut.bindCriteriaFilters(\n wo$('body'),\n function (el, c) {\n callback(c);\n WhistleOut.scrollTo('#results-container');\n var modal = el.closest('.modal.in');\n if (modal) {\n modal.removeClass('fade');\n modal.modal('hide');\n }\n },\n criteria,\n mappings\n );\n }\n\n getCoveragePromise(criteria, coverageUrl) {\n const promise = new Promise(resolve =>\n window.setTimeout(() => {\n const queryString = generateQueryString(criteria);\n wo$.ajax({\n url: `${coverageUrl}?${queryString}`,\n type: 'GET',\n success: result => {\n if (result) {\n console.log('coverageResult', result);\n WhistleOut.setCoverageCookie(result.coverage);\n if (result.allAvailableConnectionsSelected)\n resolve({\n connectionTypes: [],\n hasFixed: result.hasFixed,\n useDefaultSuppliers: result.useDefaultSuppliers\n });\n else\n resolve({\n connectionTypes: result.defaultConnectionTypes,\n hasFixed: result.hasFixed,\n useDefaultSuppliers: result.useDefaultSuppliers\n });\n } else {\n resolve({\n connectionTypes: [],\n hasFixed: false\n // useDefaultSuppliers: result.useDefaultSuppliers\n });\n }\n }\n });\n })\n );\n return promise;\n }\n\n bindWidenResults(widenResultsHandler) {\n const searchResultsPage = wo$('#search-results-partial');\n if (!searchResultsPage.length) return;\n const options = {};\n\n // TODO: Try reducing cyclomatic complexity and enable the eslint rule\n // eslint-disable-next-line complexity\n searchResultsPage\n .find('[data-widen-result]')\n .off('click')\n // eslint-disable-next-line complexity\n .click(function (e) {\n e.preventDefault();\n const id = wo$(this).data('widen-result');\n const removeAll = id === 'remove-all';\n if (id === 'suppliers' || removeAll) {\n options.includeAllSuppliers = true;\n }\n if (id === 'data' || removeAll) {\n options.reduceData = true;\n }\n if (id === 'speed' || removeAll) {\n options.reduceSpeed = true;\n }\n if (id === 'deals' || removeAll) {\n options.noDealsOnly = true;\n }\n if (id === 'peakData' || removeAll) {\n options.noPeakData = true;\n }\n if (id === 'uploadCounted' || removeAll) {\n options.noUploadCounted = true;\n }\n if (id === 'staticIp' || removeAll) {\n options.noStaticIp = true;\n }\n if (id === 'connectionTypes' || removeAll) {\n options.includeMoreConnectionTypes = true;\n }\n if (id === 'bundles' || removeAll) {\n options.noBundling = true;\n }\n if (id === 'modem' || removeAll) {\n options.removeSelectedModem = true;\n }\n if (id === 'location' || removeAll) {\n options.includeAllLocations = true;\n }\n if (id === 'contractLengths' || removeAll) {\n options.includeAllContractLengths = true;\n }\n if (id === 'prepaidExpiry' || removeAll) {\n options.includeAllPrepaidExpiry = true;\n }\n if (id === 'priceRange' || removeAll) {\n options.increasePriceRange = true;\n }\n if (id === 'sort' || removeAll) {\n options.sortBy = true;\n }\n\n widenResultsHandler(options);\n WhistleOut.scrollTo(0);\n\n if (removeAll) {\n WhistleOut.trackEvent('BroadbandSearchResults', 'FilterChanged', 'Remove All');\n }\n });\n }\n\n bindLoadMore(loadMoreResultsHandler) {\n const searchResultsPage = wo$('#search-results-partial');\n if (!searchResultsPage.length) return;\n\n searchResultsPage //\n .off('click', '[data-load-tab]')\n .on('click', '[data-load-tab]', function () {\n const tab = wo$(this).data('load-tab');\n const current = wo$(this).data('current');\n wo$(this).find('span').show();\n loadMoreResultsHandler(tab, current);\n });\n }\n\n appendLoadMoreResults(tab, results) {\n const searchResultsPage = wo$('#search-results-partial');\n if (!searchResultsPage.length) return;\n const pageSize = searchResultsPage.data('page-size');\n const $results = searchResultsPage.find('div#' + tab + ' div.results-list');\n const button = searchResultsPage.find('button[data-load-tab=' + tab + ']');\n const current = button.data('current');\n const total = button.data('total');\n const loadedRecords = current + pageSize;\n $results.append(results);\n WhistleOut.applyPopover($results);\n this.bindCta($results);\n button.data('current', loadedRecords);\n button.find('span').hide();\n if (total <= loadedRecords) {\n button.hide();\n }\n WhistleOut.notifications.fire('PagedResultsLoaded');\n }\n\n bindTab(changeTabHandler) {\n const searchResultsPage = wo$('#search-results-partial');\n if (!searchResultsPage.length) return;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n const selectConnectionType = searchResultsPage.find('#selectConnectionType');\n WhistleOut.applySelectPicker(selectConnectionType);\n\n selectConnectionType.on('changed.bs.select', function() {\n const tab =$('option:selected', this).attr('data-tab-link');\n that.switchTabs(tab, searchResultsPage, changeTabHandler);\n });\n\n searchResultsPage.find('button[data-tab-button], button[data-tab-buttongroup], button[data-popover-button]').each(function () {\n const tab = wo$(this);\n const content = tab.data('tooltip-text');\n tab.popover({\n container: 'body',\n trigger: 'hover',\n placement: 'top',\n content: content,\n html: true\n });\n });\n\n searchResultsPage //\n .off('click', '[data-goto-tab]')\n .on('click', '[data-goto-tab]', function () {\n const tab = wo$(this).data('goto-tab');\n that.switchTabs(tab, searchResultsPage, changeTabHandler);\n });\n\n searchResultsPage //\n .off('click', '[data-tab-link]')\n .on('click', '[data-tab-link]', function () {\n const tab = wo$(this).data('tab-link');\n that.switchTabs(tab, searchResultsPage, changeTabHandler);\n });\n\n searchResultsPage //\n .off('click', '[data-tab-linkbutton]')\n .on('click', '[data-tab-linkbutton]', function () {\n const tab = wo$(this).data('tab-linkbutton');\n that.switchTabs(tab, searchResultsPage, changeTabHandler);\n });\n\n searchResultsPage //\n .off('click', '[data-tab-button]')\n .on('click', '[data-tab-button]', function () {\n const tab = wo$(this).data('tab-button');\n that.switchTabs(tab, searchResultsPage, changeTabHandler);\n });\n }\n\n switchTabs(tab, searchResultsPage, changeTabHandler) {\n this.changeCurrentActiveTab(tab, searchResultsPage);\n changeTabHandler(tab);\n }\n\n changeCurrentActiveTab(tab, searchResultsPage) {\n if (!searchResultsPage) {\n searchResultsPage = wo$('#search-results-partial');\n if (!searchResultsPage.length) return;\n }\n const selectedTabLink = searchResultsPage.find('a[data-tab-link=' + tab + ']');\n searchResultsPage.find('a[data-tab-link] > i').addClass('hidden');\n selectedTabLink.find('i').removeClass('hidden');\n selectedTabLink.closest('div').find('button span.dropdownText').text(selectedTabLink.data('text'));\n selectedTabLink.closest('div').find('button span.resultCount').text(selectedTabLink.data('count'));\n selectedTabLink.closest('div').find('button span.subtext').text(selectedTabLink.data('subtext'));\n\n const selectedTabLinkButton = searchResultsPage.find('a[data-tab-linkbutton=' + tab + ']');\n searchResultsPage.find('a[data-tab-linkbutton] > i').addClass('hidden');\n searchResultsPage.find('a[data-tab-linkbutton]').closest('div.btn-group').find('button').removeClass('active');\n if (selectedTabLinkButton.length > 0) {\n selectedTabLinkButton.find('i').removeClass('hidden');\n const button = selectedTabLinkButton.closest('div.btn-group').find('button');\n const image = selectedTabLinkButton.data('image');\n if (image.length > 0) {\n button.find('span[data-tab-image]').removeClass('hidden');\n button.addClass('display-flex justify-content-flex-start');\n button.find('span[data-tab-image]>img').src = image;\n } else {\n button.find('span[data-tab-image]').addClass('hidden');\n button.removeClass('display-flex justify-content-flex-start');\n button.find('span[data-tab-image]>img').src = null;\n }\n button.find('span.dropdownText').text(selectedTabLinkButton.data('text'));\n button.find('span.resultCount').text(selectedTabLinkButton.data('count'));\n button.find('span.subtext').text(selectedTabLinkButton.data('subtext'));\n button.addClass('active');\n const content = selectedTabLinkButton.data('tooltip-text');\n const popover = button.data('bs.popover');\n popover.options.content = content;\n popover.tip().find('.popover-content').html(content);\n }\n searchResultsPage.find('button[data-tab-button]').removeClass('active');\n searchResultsPage.find('button[data-tab-button=' + tab + ']').addClass('active');\n searchResultsPage\n .find('div[data-results-container] div#' + tab)\n .addClass('active')\n .siblings()\n .removeClass('active');\n }\n\n bindPlanSummary(callback) {\n wo$('table[data-plan-summary] tr[data-supplier], table[data-plan-summary] a')\n .off('click')\n .on('click', function () {\n const supplierShortUrl = wo$(this).data('supplier');\n const maxResults = wo$(this).data('max-results');\n callback(supplierShortUrl, maxResults);\n WhistleOut.scrollTo('#landing-results');\n });\n }\n\n bindCta(results) {\n if (!results) results = wo$('#search-results-partial');\n WhistleOut.bindCta(results);\n }\n\n showDownloadSpeed(speedTestResult) {\n if (speedTestResult && speedTestResult.downloadSpeed && speedTestResult.isCompleted) {\n wo$('[data-show-when-no-speed-test]').hide();\n wo$('[data-show-when-speed-test]').show();\n } else {\n wo$('[data-show-when-no-speed-test]').show();\n wo$('[data-show-when-speed-test]').hide();\n }\n\n if (speedTestResult && speedTestResult.downloadSpeed) {\n wo$('[data-speed-test-result]').text(speedTestResult.downloadSpeed);\n wo$('[data-show-when-speed-test-result]').show();\n } else {\n wo$('[data-show-when-speed-test-result]').hide();\n }\n\n if (speedTestResult && speedTestResult.lastResultDate) {\n var dateOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n wo$('[data-speed-test-date]').text(\n new Date(speedTestResult.lastResultDate).toLocaleDateString('en-AU', dateOptions)\n );\n wo$('[data-show-when-test-date]').show();\n } else {\n wo$('[data-show-when-test-date]').hide();\n }\n }\n\n speedTestInProgress(isInProgress) {\n if (isInProgress) {\n wo$('[data-run-speed-test]').prop('disabled', true);\n wo$('[data-run-speed-test]').find('.fa-spinner').show();\n wo$('[data-speed-test-result]').addClass('c-gray-light');\n } else {\n wo$('[data-run-speed-test]').prop('disabled', false);\n wo$('[data-run-speed-test]').find('.fa-spinner').hide();\n wo$('[data-speed-test-result]').removeClass('c-gray-light');\n }\n }\n\n bindSpeedTestResult(ignorePopup) {\n var speedTestResult = Cookies.get('woSpeedTestResult');\n if (speedTestResult && speedTestResult.length) {\n speedTestResult = JSON.parse(speedTestResult);\n }\n\n this.showDownloadSpeed(speedTestResult);\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var that = this;\n\n wo$('[data-run-speed-test]')\n .off()\n .click(function () {\n wo$('[data-show-when-error]').hide();\n that.speedTestInProgress(true);\n\n WhistleOut.SpeedTest.getSpeedTestParameters(\n function (resp) {\n try {\n if (resp.protocol === 'ndt7') {\n const results = resp.results[0];\n wo$('[data-show-when-no-speed-test]').show();\n wo$('[data-show-when-speed-test]').hide();\n wo$('[data-show-when-speed-test-result]').show();\n wo$('[data-speed-test-result]').show();\n\n WhistleOut.SpeedTest.runNdt7Test(\n results.urls['wss:///ndt/v7/download'],\n 'download',\n wo$('[data-speed-test-result]'),\n () => {\n that.speedTestInProgress(false);\n wo$('[data-show-when-no-speed-test]').hide();\n wo$('[data-show-when-speed-test]').show();\n }\n );\n } else {\n WhistleOut.SpeedTest.testSpeed(resp.fqdn, true, false, function (result) {\n if (result.downloadSpeed) {\n that.showDownloadSpeed(result);\n }\n if (result.hasErrors && !result.downloadSpeed) {\n that.speedTestInProgress(false);\n wo$('[data-show-when-error]').show();\n } else if (result.isCompleted || result.hasErrors) {\n that.speedTestInProgress(false);\n } else {\n that.speedTestInProgress(true);\n }\n });\n }\n } catch (e) {\n that.speedTestInProgress(false);\n wo$('[data-show-when-error]').show();\n }\n },\n function () {\n that.speedTestInProgress(false);\n wo$('[data-show-when-error]').show();\n }\n );\n });\n\n if (!ignorePopup) {\n wo$('[data-toggle=\"popover\"]')\n .off('shown.bs.popover')\n .on('shown.bs.popover', function () {\n that.bindSpeedTestResult(true);\n });\n }\n }\n\n bindNbnAlertModal() {\n const modal = wo$('#modal-nbn-alert');\n if (!modal.length) return;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n\n modal.off('shown.bs.modal').on('shown.bs.modal', function () {\n modal.find('#nbnName').focus();\n });\n\n modal\n .find('#nbnSubmit')\n .off('click')\n .on('click', function () {\n that.clearNbnAlertModalErrort(modal);\n if (!that.validateNbnAlertModal(modal)) return;\n\n const $this = wo$(this);\n $this.find('.fa-spinner').show();\n $this.prop('disabled', true);\n wo$.ajax({\n url: '/Ajax/Broadband/NbnAlert',\n data: {\n name: modal.find('#nbnName').val(),\n email: modal.find('#nbnEmail').val(),\n generalOptIn: modal.find('#nbnOptInYes').is(':checked')\n },\n type: 'POST',\n success: function () {\n modal.find('#nbnForm, #nbnFooter').hide();\n modal.find('#nbnSuccess').show();\n },\n error: function () {\n modal.find('#nbnError').show();\n },\n complete: function () {\n $this.find('.fa-spinner').hide();\n $this.prop('disabled', false);\n }\n });\n });\n }\n\n validateNbnAlertModal(modal) {\n let valid = true;\n const name = modal.find('#nbnName');\n if (name.val().trim() === '') {\n valid = false;\n this.showNbnAlertModalError(name, '[data-validation-error]');\n }\n const email = modal.find('#nbnEmail');\n const config = WhistleOut.getSiteConfiguration();\n const regex = new RegExp(config.regex.email);\n if (email.val().trim() === '') {\n valid = false;\n this.showNbnAlertModalError(email, '[data-validation-error]');\n } else if (!regex.test(email.val().trim())) {\n valid = false;\n this.showNbnAlertModalError(email, '[data-validation-error-invalid]');\n }\n const optInYes = modal.find('#nbnOptInYes');\n const optInNo = modal.find('#nbnOptInNo');\n if (!optInYes.is(':checked') && !optInNo.is(':checked')) {\n valid = false;\n this.showNbnAlertModalError(wo$('#nbnOptInRow'), '[data-validation-error]');\n }\n\n return valid;\n }\n\n showNbnAlertModalError(field, messageSelector) {\n field.parent().addClass('has-error');\n field.siblings(messageSelector).show();\n }\n\n clearNbnAlertModalErrort(modal) {\n modal.find('.form-group').removeClass('has-error');\n modal.find('[data-validation-error]').hide();\n modal.find('[data-validation-error-invalid]').hide();\n modal.find('#nbnError').hide();\n }\n}\n\n// TODO: Extract a component for the queue\nBroadbandResultsAdaptor.coverageRequestsQueue = [];\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nconst Spinner = () => {\n return _jsx(\"span\", { className: \"fa fa-spinner fa-fw fa-spin mar-r-1\" });\n};\nexport default Spinner;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport Spinner from '../../../../../Shared/React/js/components/Spinner';\nconst SearchButton = (props) => {\n return (_jsxs(\"button\", { type: \"button\", onClick: props.onClick, className: props.className || 'btn btn-primary', children: [props.isLoading ? _jsx(Spinner, {}) : null, _jsx(\"b\", { className: \"display-inline-block pad-x-6\", children: props.text })] }));\n};\nexport default SearchButton;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport Select from '../../../../../Shared/React/js/components/Select';\nimport { ScreenSize } from '../../../../../Shared/React/js/utils/Hooks';\nconst SpeedDataSelect = (props) => {\n const dataWidth = props.screenSize === ScreenSize.Mobile ? '100%' : 'fit';\n let type;\n let descirption;\n let selectArgs;\n if (props.primaryFilterAsSpeed) {\n type = 'speed';\n descirption = props.speedDescription;\n selectArgs = {\n selectedValue: props.speed,\n values: props.speedValues,\n onValueChanged: props.onSpeedChange\n };\n }\n else {\n type = 'data';\n descirption = props.dataDescription;\n selectArgs = {\n selectedValue: props.data,\n values: props.dataValues,\n onValueChanged: props.onDataChange\n };\n }\n return (_jsx(Select, { selectClassName: props.className, optionGroups: [{ label: descirption, values: selectArgs.values }], dataWidth: dataWidth, onChange: selectArgs.onValueChanged, selectedValues: selectArgs.selectedValue }, `${type}Select-${props.screenSize}`));\n};\nexport default SpeedDataSelect;\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React, { useCallback } from 'react';\nimport AddressSearch from '../../../../../Shared/React/js/components/addressSearch/AddressSearch';\nimport { ScreenSize } from '../../../../../Shared/React/js/utils/Hooks';\nimport SearchButton from './SearchButton';\nimport SpeedDataSelect from './SpeedDataSelect';\nconst screenSize = ScreenSize.Desktop;\nconst FiltersLg = (props) => {\n const onSearchClick = useCallback(() => props.onSearchClick(screenSize), [props]);\n return (_jsx(_Fragment, { children: _jsx(\"div\", { className: \"pad-t-5 pad-b-3-xs pad-b-5-sm\", children: _jsx(\"div\", { className: \"row\", children: _jsx(\"div\", { className: \"col-sm-14 col-sm-offset-1\", children: _jsx(\"div\", { className: \"visible-md visible-lg\", children: _jsx(AddressSearch, Object.assign({}, props.addressSearchProps, { ref: props.addressSearchProps.ref, className: `input-group input-group-lg ${props.marginCss}`, inputClassName: \"font-5\", hideLabel: true, children: _jsxs(\"div\", { className: \"input-group-btn\", children: [_jsx(SpeedDataSelect, Object.assign({}, props.speedDataSelectProps, { screenSize: screenSize })), _jsx(SearchButton, { text: props.searchButtonText, isLoading: props.isLoading, onClick: onSearchClick })] }) })) }) }) }) }) }));\n};\nexport default FiltersLg;\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React, { useCallback } from 'react';\nimport AddressSearch from '../../../../../Shared/React/js/components/addressSearch/AddressSearch';\nimport { ScreenSize } from '../../../../../Shared/React/js/utils/Hooks';\nimport SearchButton from './SearchButton';\nimport SpeedDataSelect from './SpeedDataSelect';\nconst screenSize = ScreenSize.Tablet;\nconst FiltersSm = (props) => {\n const onSearchClick = useCallback(() => props.onSearchClick(screenSize), [props]);\n return (_jsx(_Fragment, { children: _jsx(\"div\", { className: \"pad-t-5 pad-b-3-xs pad-b-5-sm\", children: _jsx(\"div\", { className: \"row\", children: _jsx(\"div\", { className: \"col-sm-14 col-sm-offset-1\", children: _jsxs(\"div\", { className: \"visible-sm\", children: [_jsx(AddressSearch, Object.assign({}, props.addressSearchProps, { ref: props.addressSearchProps.ref, className: `form-group ${props.marginCss}`, inputClassName: \"font-5 input-lg\" })), _jsxs(\"div\", { className: \"input-group input-group-lg\", children: [_jsx(SpeedDataSelect, Object.assign({}, props.speedDataSelectProps, { screenSize: screenSize })), _jsx(\"div\", { className: \"input-group-btn\", children: _jsx(SearchButton, { text: props.searchButtonText, isLoading: props.isLoading, onClick: onSearchClick }) })] })] }) }) }) }) }));\n};\nexport default FiltersSm;\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React, { useCallback } from 'react';\nimport AddressSearch from '../../../../../Shared/React/js/components/addressSearch/AddressSearch';\nimport { ScreenSize } from '../../../../../Shared/React/js/utils/Hooks';\nimport SearchButton from './SearchButton';\nimport SpeedDataSelect from './SpeedDataSelect';\nconst screenSize = ScreenSize.Mobile;\nconst FiltersXs = (props) => {\n const onSearchClick = useCallback(() => props.onSearchClick(screenSize), [props]);\n const renderSplashImage = () => {\n if (props.splashImageUrl && props.splashImageUrl.length > 0) {\n return _jsx(\"img\", { className: \"img-responsive center-block mar-t-7 pad-t-4\", src: props.splashImageUrl, alt: \"Supplier logos\" });\n }\n };\n return (_jsxs(_Fragment, { children: [_jsx(\"div\", { className: \"pad-t-5 pad-b-3-xs pad-b-5-sm\", children: _jsx(\"div\", { className: \"row\", children: _jsx(\"div\", { className: \"col-sm-14 col-sm-offset-1\", children: _jsxs(\"div\", { className: \"visible-xs\", children: [_jsx(AddressSearch, Object.assign({}, props.addressSearchProps, { ref: props.addressSearchProps.ref, className: `form-group ${props.marginCss}`, inputClassName: \"font-5 input-lg\" })), _jsx(\"div\", { className: \"form-group\", children: _jsx(SpeedDataSelect, Object.assign({}, props.speedDataSelectProps, { screenSize: screenSize })) })] }) }) }) }), _jsx(\"div\", { className: \"row pad-b-6\", children: _jsxs(\"div\", { className: \"col-xs-24\", children: [_jsx(SearchButton, { className: \"btn btn-lg btn-primary btn-block\", text: props.searchButtonText, isLoading: props.isLoading, onClick: onSearchClick }), renderSplashImage()] }) })] }));\n};\nexport default FiltersXs;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { produce } from 'immer';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport SearchAddressActions from '../../../../../Shared/React/js/actions/SearchAddressActions';\nimport ResponsiveLayout from '../../../../../Shared/React/js/components/ResponsiveLayout';\nimport * as Actions from '../../actions/BroadbandHomeActions';\nimport ResultsAdaptor from '../../adaptors/BroadbandResultsAdaptor';\nimport FiltersLg from './FiltersLg';\nimport FiltersSm from './FiltersSm';\nimport FiltersXs from './FiltersXs';\nconst Filters = (props) => {\n var _a;\n const [inputValue, setInputValue] = useState(((_a = props.address) === null || _a === void 0 ? void 0 : _a.label) || '');\n const [addressSearchResult, setAddressSearchResult] = useState({\n address: null,\n isNotFound: null,\n isError: null\n });\n const [data, setData] = useState(props.data);\n const [speed, setSpeed] = useState(props.speed);\n const [isSearchInitiated, setIsSearchInitiated] = useState(false);\n const addressSearchDesktopRef = useRef(null);\n const addressSearchMobileRef = useRef(null);\n const addressSearchTabletRef = useRef(null);\n const resultsAdaptor = useRef(new ResultsAdaptor());\n const getCurrentLocation = () => {\n window.setTimeout(() => {\n WhistleOut.getCurrentLocationViaHtml5(e => {\n const address = e.label;\n if (address.length > 1) {\n setInputValue(address);\n setAddressSearchResult({\n address: {\n label: e.label\n },\n isNotFound: false,\n isError: false\n });\n }\n });\n }, 500);\n };\n const handleMount = useCallback(() => {\n SearchAddressActions.invalidateAddressCookie();\n getCurrentLocation();\n }, []);\n const getAddressSearch = () => (addressSearchDesktopRef === null || addressSearchDesktopRef === void 0 ? void 0 : addressSearchDesktopRef.current) || (addressSearchMobileRef === null || addressSearchMobileRef === void 0 ? void 0 : addressSearchMobileRef.current) || (addressSearchTabletRef === null || addressSearchTabletRef === void 0 ? void 0 : addressSearchTabletRef.current);\n const handleOnInput = useCallback((value) => {\n setInputValue(value);\n setAddressSearchResult({\n address: null,\n isNotFound: false,\n isError: false\n });\n }, []);\n const handleOnAddressChange = useCallback((address) => {\n setInputValue(address === null || address === void 0 ? void 0 : address.label);\n setAddressSearchResult({\n address: address,\n isNotFound: false,\n isError: false\n });\n }, []);\n const handleOnAddressEmptyResults = useCallback(() => {\n setIsSearchInitiated(false);\n setAddressSearchResult({\n address: null,\n isNotFound: true,\n isError: false\n });\n }, []);\n const handleOnAddressResponseError = useCallback(() => {\n setIsSearchInitiated(false);\n setAddressSearchResult({\n address: null,\n isNotFound: false,\n isError: true\n });\n }, []);\n const doSearch = useCallback(() => {\n if (inputValue) {\n SearchAddressActions.invalidateAddressCookie(inputValue);\n }\n const address = addressSearchResult.address;\n const coveragePromise = address\n ? resultsAdaptor.current.getCoveragePromise({ common: { address: address } }, props.coverageCheckUrl)\n : null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const criteria = produce(props.criteria, (draft) => {\n draft.speed = speed;\n draft.data = data;\n draft.common.address = address;\n });\n Actions.search(props.searchUrl, criteria, coveragePromise);\n }, [addressSearchResult.address, data, inputValue, props.coverageCheckUrl, props.criteria, props.searchUrl, speed]);\n const searchLocation = useCallback(config => {\n WhistleOut.getCurrentLocation(address => {\n const siteCountry = (config.countryCode || '').toLowerCase();\n const clientCountry = (address.countryCode || '').toLowerCase();\n if (address.label.length > 1 && siteCountry === clientCountry) {\n setAddressSearchResult({\n address: {\n label: address.label\n },\n isError: false,\n isNotFound: false\n });\n }\n else {\n doSearch();\n }\n }, doSearch);\n }, [doSearch]);\n const isEmptyAddress = useCallback(inputValue => {\n return (!inputValue ||\n inputValue.trim().length === 0 ||\n // HACK: In IE9 the input value has the placeholder text by default\n // Also use 'props' explicitly, because 'addressSearch' is undefined in IE9 for some reason\n inputValue === props.addressSearchProps.placeholder);\n }, [props.addressSearchProps.placeholder]);\n const lookupAddress = useCallback(() => {\n const addressSearch = getAddressSearch();\n addressSearch.selectFirstSuggest();\n }, []);\n const search = useCallback((screenSize) => {\n console.log({ screenSize });\n setIsSearchInitiated(true);\n if (isEmptyAddress(inputValue)) {\n const config = WhistleOut.getSiteConfiguration();\n if (config.autoDetectLocation) {\n searchLocation(config);\n return;\n }\n doSearch();\n return;\n }\n if (addressSearchResult.address) {\n doSearch();\n }\n else {\n lookupAddress();\n }\n }, [addressSearchResult.address, doSearch, inputValue, isEmptyAddress, lookupAddress, searchLocation]);\n const onAddressInputInit = useCallback((input) => {\n if (!input) {\n return;\n }\n input.value = inputValue || '';\n }, [inputValue]);\n useEffect(() => handleMount(), [handleMount]);\n useEffect(() => SearchAddressActions.setAddressCookie(addressSearchResult.address), [addressSearchResult.address]);\n useEffect(() => {\n if (isSearchInitiated && addressSearchResult.address) {\n doSearch();\n }\n }, [doSearch, isSearchInitiated, addressSearchResult.address]);\n const addressCommonProps = Object.assign(Object.assign({}, props.addressSearchProps), { current: addressSearchResult.address, onInput: handleOnInput, onChange: handleOnAddressChange, onInitialized: onAddressInputInit, onEmptyResults: handleOnAddressEmptyResults, onResponseError: handleOnAddressResponseError });\n const toolTipText = props.addressSearchProps.tooltipLink;\n const commonProps = Object.assign(Object.assign({}, props), { isLoading: isSearchInitiated, marginCss: (typeof toolTipText === 'string' && toolTipText.length === 0) ? 'mar-b-7' : 'mar-b-0', onSearchClick: search, speedDataSelectProps: Object.assign(Object.assign({}, props.speedDataSelectProps), { speed: speed, data: data, onSpeedChange: setSpeed, onDataChange: setData }) });\n return (_jsx(ResponsiveLayout, { children: {\n desktop: (_jsx(FiltersLg, Object.assign({}, commonProps, { addressSearchProps: Object.assign(Object.assign({}, addressCommonProps), { ref: addressSearchDesktopRef }) }))),\n mobile: (_jsx(FiltersXs, Object.assign({}, commonProps, { addressSearchProps: Object.assign(Object.assign({}, addressCommonProps), { ref: addressSearchMobileRef }) }))),\n tablet: (_jsx(FiltersSm, Object.assign({}, commonProps, { addressSearchProps: Object.assign(Object.assign({}, addressCommonProps), { ref: addressSearchTabletRef }) })))\n } }));\n};\nexport default Filters;\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport Filters from './Filters';\nconst Home = (_a) => {\n var { addressSearch } = _a, props = __rest(_a, [\"addressSearch\"]);\n const criteria = props.state.criteria;\n return (_jsx(React.StrictMode, { children: _jsx(React.Fragment, { children: _jsx(Filters, { address: criteria.common.address, speed: criteria.speed, data: criteria.data, criteria: criteria, addressSearchProps: {\n countryCode: addressSearch.countryCode,\n placeholder: addressSearch.text.addressSearchPlaceHolder,\n tooltipLink: addressSearch.text.tooltipLink,\n tooltipDescription: addressSearch.text.tooltipDescription,\n addressNotFoundMessage: addressSearch.text.addressNotFound,\n commonErrorMessage: addressSearch.text.unableToVerifyAddress,\n types: addressSearch.types,\n queryDelay: addressSearch.queryDelay,\n apiKey: addressSearch.apiKey,\n showProgress: false\n }, speedDataSelectProps: {\n primaryFilterAsSpeed: props.primaryFilterAsSpeed,\n speedDescription: props.speed.description,\n speedFormat: props.speed.format,\n speedValues: props.speed.values,\n dataDescription: props.data.description,\n dataFormat: props.data.format,\n dataValues: props.data.values\n }, error: addressSearch.text.unableToVerifyAddress, warning: addressSearch.text.addressNotFound, searchButtonText: props.searchText, coverageCheckUrl: props.coverageUrl, searchUrl: props.searchUrl, splashImageUrl: props.splashImageUrl, marginCss: props.marginCss }) }) }));\n};\nexport default Home;\n","import React, { Component } from 'react';\n\nimport HeaderMap from '../../../../../Shared/React/js/components/maps/HeaderMap';\n\nexport default class HeaderMapWithStatistics extends Component {\n\n constructor(props) {\n super(props);\n\n this.getCenterBoundaries = this.getCenterBoundaries.bind(this);\n }\n\n getCenterBoundaries() {\n const locationHeaderRect = wo$('#location-header')[0].getBoundingClientRect();\n const statisticsRect = wo$('#header-statistics')[0].getBoundingClientRect();\n\n return {\n left: locationHeaderRect.right,\n right: statisticsRect.left\n };\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useCallback, useEffect, useRef } from 'react';\nconst Modal = (props) => {\n const containerRef = useRef();\n const onModalAction = useCallback((ref, isOpen) => {\n const action = isOpen ? 'show' : 'hide';\n wo$(ref).modal(action);\n }, []);\n const onClose = useCallback(() => {\n onModalAction(containerRef.current, false);\n if (props.onClose) {\n props.onClose();\n }\n }, [onModalAction, props]);\n useEffect(() => {\n const ref = containerRef.current;\n onModalAction(ref, props.isOpen);\n return () => {\n onModalAction(ref, false);\n };\n }, [onModalAction, props.isOpen]);\n useEffect(() => {\n const container = wo$(containerRef.current);\n container.on('hidden.bs.modal', onClose);\n return () => {\n container.off('hidden.bs.modal', onClose);\n };\n }, [onClose]);\n return (_jsx(\"div\", { ref: containerRef, className: \"modal fade in\", tabIndex: -1, role: \"dialog\", \"aria-hidden\": \"true\", children: _jsx(\"div\", { className: \"modal-dialog\", children: _jsx(\"div\", { className: \"modal-content\", children: _jsxs(\"div\", { className: \"modal-body pad-x-6 pad-y-6\", children: [_jsx(\"div\", { className: \"row\", children: _jsx(\"div\", { className: \"col-xs-24\", children: _jsx(\"button\", { \"data-toggle\": \"modal\", \"data-dismiss\": \"modal\", className: \"btn btn-info float-right\", type: \"button\", onClick: onClose, children: _jsx(\"span\", { className: \"fa fa-times font-5\" }) }) }) }), props.children] }) }) }) }));\n};\nexport default Modal;\n","function StatusLayout(props) {\n return props.items[props.status] || props.items.default;\n}\nexport default StatusLayout;\n","import { Fragment as _Fragment, jsx as _jsx } from \"react/jsx-runtime\";\nimport React, { useCallback, useEffect } from 'react';\nconst LinkHandler = (props) => {\n const onTransactLinkClick = useCallback((e) => {\n if (props.onClick) {\n props.onClick(e);\n }\n }, [props]);\n const getElements = useCallback(() => {\n return document.querySelectorAll(props.querySelector);\n }, [props.querySelector]);\n useEffect(() => {\n getElements().forEach(a => a.addEventListener('click', onTransactLinkClick));\n return () => {\n getElements().forEach(a => a.removeEventListener('click', onTransactLinkClick));\n };\n }, [getElements, onTransactLinkClick, props.querySelector]);\n return _jsx(_Fragment, {});\n};\nexport default LinkHandler;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React, { useCallback } from 'react';\nimport LinkHandler from './LinkHandler';\nfunction getLink(element) {\n return element.closest('a') || element.closest('[data-transact-link]').querySelector('a');\n}\nfunction showPrivateDataModal() {\n wo$(`#${WhistleOut.privateDataModalId}`).modal('show');\n}\nfunction getLinkData(link) {\n var _a;\n const dataset = (_a = (link.closest('[data-result]') || link.closest('[data-transact-link]'))) === null || _a === void 0 ? void 0 : _a.dataset;\n return {\n productShortUrl: (dataset === null || dataset === void 0 ? void 0 : dataset.productShortUrl) || null,\n supplierShortUrl: (dataset === null || dataset === void 0 ? void 0 : dataset.supplierShortUrl) || null\n };\n}\nconst TransactLinkHandler = (props) => {\n const onClick = useCallback((e) => {\n const link = getLink(e.currentTarget);\n if (!link) {\n throw new Error('Link element not found');\n }\n if (props.onClick) {\n props.onClick(link.href);\n }\n if (props.isDynamicLink && !props.isDynamicLink(link.href)) {\n return;\n }\n e.preventDefault();\n if (WhistleOut.getPrivateDataCookieValue()) {\n showPrivateDataModal();\n return;\n }\n if (props.onDynamicLinkClick) {\n const data = getLinkData(link);\n props.onDynamicLinkClick(data);\n }\n }, [props]);\n return _jsx(LinkHandler, { querySelector: \"[data-transact-link] a, [data-transact-link]\", onClick: onClick });\n};\nexport default TransactLinkHandler;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nfunction Exclamation() {\n return _jsx(\"span\", { className: \"fa fa-exclamation-circle font-6 c-brand-warning-dark align-middle\" });\n}\nexport default function IncompleteAddressWarning() {\n return (_jsx(\"div\", { className: \"bg-brand-warning-light rounded-3 pad-y-3 pad-x-3 text-left\", children: _jsxs(\"div\", { className: \"display-flex flex-wrap-nowrap\", children: [_jsx(\"div\", { children: _jsx(Exclamation, {}) }), _jsx(\"div\", { className: \"flex-1-1-0 mar-l-3\", children: _jsxs(\"span\", { className: \"display-inline-block c-brand-warning-dark font-4\", children: [_jsx(\"strong\", { children: \"A complete street address is required to confirm plan availability.\" }), \" To view all plans available at this general location, select 'Continue'.\"] }) })] }) }));\n}\n","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport omit from 'lodash/omit';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { nameof } from '../../../../../../Shared/js/utils/typescript';\nimport AddressSearch from '../../../../../../Shared/React/js/components/addressSearch/AddressSearch';\nimport Spinner from '../../../../../../Shared/React/js/components/Spinner';\nimport IncompleteAddressWarning from './IncompleteAddressWarning';\nconst Header = (props) => {\n return props.isModal ? (_jsxs(_Fragment, { children: [_jsx(\"h4\", { className: \"font-feature font-8 font-800 line-height-105 c-gray-darker mar-b-3\", children: props.title }), _jsx(\"p\", { className: \"font-5 mar-0 mar-b-5\", children: props.subtitle })] })) : (_jsxs(_Fragment, { children: [_jsx(\"h4\", { className: \"font-feature font-9 font-800 line-height-12 c-gray-darker mar-b-4\", children: props.title }), _jsx(\"p\", { className: \"font-6 mar-0 mar-b-6\", children: props.subtitle })] }));\n};\nconst SearchButton = (props) => {\n const htmlProps = useMemo(() => {\n const omitNames = [nameof('isLoading')];\n return omit(props, omitNames);\n }, [props]);\n return (_jsxs(\"button\", Object.assign({}, htmlProps, { type: \"button\", className: \"btn btn-primary btn-lg btn-block mar-b-5\", children: [props.isLoading && _jsx(Spinner, {}), \"Continue\"] })));\n};\nconst AddressSearchPanel = (props) => {\n var _a;\n const [address, setAddress] = useState((_a = props.addressSearchProps) === null || _a === void 0 ? void 0 : _a.current);\n const handleContinueClick = useCallback(() => {\n if (props.onContinue) {\n props.onContinue(address);\n }\n }, [address, props]);\n const isPrivateDataEnabled = useMemo(() => WhistleOut.getPrivateDataCookieValue(), []);\n const isIncompleteAddress = useMemo(() => address && !(address === null || address === void 0 ? void 0 : address.streetNumber), [address]);\n const isSearchDisabled = useMemo(() => !address || props.isLoading, [address, props.isLoading]);\n const privateDataButton = useMemo(() => _jsx(SearchButton, { \"data-toggle\": \"modal\", \"data-target\": `#${WhistleOut.privateDataModalId}` }), []);\n return (_jsxs(_Fragment, { children: [_jsxs(\"div\", { className: \"row\", children: [_jsx(\"div\", { className: \"col-xs-24\", children: _jsx(Header, { isModal: props.isModal, title: \"Check plan availability\", subtitle: \"Enter a complete street address to check plan availability in your area.\" }) }), _jsx(\"div\", { className: \"col-xs-24 col-sm-18\", children: _jsx(AddressSearch, Object.assign({}, props.addressSearchProps, { current: address, className: \"form-group text-left\", inputClassName: \"input-lg\", hideLabel: true, skipGlobalUpdate: true, tooltipLink: null, tooltipDescription: null, onChange: setAddress })) }), _jsx(\"div\", { className: \"col-xs-24 col-sm-6\", children: isPrivateDataEnabled ? (privateDataButton) : (_jsx(SearchButton, { disabled: isSearchDisabled, isLoading: props.isLoading, onClick: handleContinueClick })) })] }), isIncompleteAddress && _jsx(IncompleteAddressWarning, {})] }));\n};\nexport default AddressSearchPanel;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport Spinner from '../../../../../../Shared/React/js/components/Spinner';\n// TODO: Extract common template for messaging, i.e. 'plan unavailable' and 'blocked pop-up'\nconst ErrorPanel = (props) => {\n return (_jsxs(\"div\", { className: \"row\", children: [_jsx(\"h4\", { className: \"font-feature font-8 font-800 line-height-105 c-gray-darker mar-b-3\", children: \"Sorry, something went wrong :(\" }), _jsx(\"p\", { className: \"font-5 mar-0 mar-b-5\", children: \"Please try again.\" }), _jsxs(\"button\", { type: \"button\", className: \"btn btn-primary btn-lg mar-b-5 pad-x-8\", onClick: props.onRetry, disabled: props.isLoading, children: [props.isLoading && _jsx(Spinner, {}), \"Retry\"] })] }));\n};\nexport default ErrorPanel;\n","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useMemo } from 'react';\n// See: https://stackoverflow.com/questions/10471595/window-open-blocked-by-firefox\nconst ContinueButton = (props) => {\n return (\n // eslint-disable-next-line react/jsx-no-target-blank\n _jsx(\"a\", { href: props.url, target: \"_blank\", className: props.className, onClick: props.onClick, children: \"Continue\" }));\n};\nconst title = (_jsxs(_Fragment, { children: [\"It looks like you\\u2019re using a \", _jsx(\"span\", { className: \"text-nowrap\", children: \"pop-up\" }), \" blocker\"] }));\nconst subtitle = _jsx(_Fragment, { children: \"Select \\u2018Continue\\u2019 to open the plan in a new window.\" });\nconst PopupBlockerMessage = (props) => {\n const pageView = useMemo(() => {\n return (_jsxs(_Fragment, { children: [_jsx(\"h4\", { className: \"font-feature font-9 font-800 line-height-12 c-gray-darker mar-b-3\", children: title }), _jsx(\"p\", { className: \"font-5\", children: subtitle }), _jsx(ContinueButton, { url: props.url, className: \"btn btn-primary btn-lg mar-y-5 pad-x-8\", onClick: props.onClick })] }));\n }, [props.onClick, props.url]);\n const modalView = useMemo(() => {\n return (_jsxs(_Fragment, { children: [_jsx(\"h4\", { className: \"font-feature font-8 font-800 line-height-105 c-gray-darker mar-b-5\", children: title }), _jsx(\"p\", { className: \"font-5\", children: subtitle }), _jsx(ContinueButton, { url: props.url, className: \"btn btn-primary btn-lg\", onClick: props.onClick })] }));\n }, [props.onClick, props.url]);\n return _jsx(\"div\", { className: \"row\", children: props.isModal ? modalView : pageView });\n};\nexport default PopupBlockerMessage;\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React, { useCallback, useMemo } from 'react';\nimport SearchAddressActions from '../../../../../../Shared/React/js/actions/SearchAddressActions';\nfunction Title(props) {\n return _jsx(\"h4\", { className: props.className, children: \"This provider is not available in your area\" });\n}\nfunction ViewPlansButton(props) {\n return (_jsx(\"button\", { type: \"button\", className: props.className, onClick: props.onClick, children: \"View Available Plans\" }));\n}\nfunction BackLink() {\n const handleClick = useCallback(() => {\n SearchAddressActions.setAddressCookie(null);\n }, []);\n return (_jsxs(\"a\", { href: window.location.href, onClick: handleClick, children: [' ', _jsx(\"span\", { className: \"fa fa-chevron-down\", style: { transform: 'rotate(90deg)' } }), \" Back to Address Verification\", ' '] }));\n}\nexport default function SearchPlanUnavailablePanel(props) {\n const onClose = useCallback(() => {\n if (props.onClose) {\n props.onClose();\n }\n }, [props]);\n const subtitle = props.isSearchPage\n ? 'Your search results will be updated to show available plans.'\n : 'Browse plans from providers that are available at your address.';\n const modalView = useMemo(() => {\n return (_jsxs(_Fragment, { children: [_jsx(Title, { className: \"font-feature font-8 font-800 line-height-105 c-gray-darker mar-b-3\" }), _jsx(\"p\", { className: \"font-5 mar-b-5\", children: subtitle }), _jsx(ViewPlansButton, { className: \"btn btn-primary btn-lg\", onClick: onClose })] }));\n }, [onClose, subtitle]);\n const pageView = useMemo(() => {\n return (_jsxs(_Fragment, { children: [_jsx(Title, { className: \"font-feature font-9 font-800 line-height-12 c-gray-darker mar-b-3\" }), _jsx(\"p\", { className: \"font-6 mar-b-4\", children: subtitle }), _jsx(ViewPlansButton, { className: \"btn btn-primary btn-lg mar-0 pad-x-8\", onClick: onClose }), _jsx(\"hr\", {}), _jsx(BackLink, {})] }));\n }, [onClose, subtitle]);\n return (_jsx(\"div\", { className: \"row\", children: _jsx(\"div\", { className: \"col-xs-24\", children: props.isModal ? modalView : pageView }) }));\n}\n","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { createSlice } from '@reduxjs/toolkit';\nimport React, { useCallback, useEffect, useMemo, useReducer, useState } from 'react';\nimport Modal from '../../../../../../Shared/React/js/components/Modal';\nimport StatusLayout from '../../../../../../Shared/React/js/components/StatusLayout';\nimport TransactLinkHandler from '../../../../../../Shared/React/js/components/TransactLinkHandler';\nimport { broadbandApi } from '../../../../../js/redux/broadbandApi';\nimport AddressSearchPanel from './AddressSearchPanel';\nimport ErrorPanel from './ErrorPanel';\nimport PopupBlockerMessage from './PopupBlockerMessage';\nimport SearchPlanUnavailablePanel from './SearchPlanUnavailablePanel';\nconst addressHelper = {\n isIncomplete: (address) => !address || !address.streetNumber,\n isIncompleteLabel(address) {\n return !/^\\s*?\\d+\\s+.+?\\s+\\d+\\s*?$/.test(address);\n },\n getInitialAddress: (props) => (addressHelper.isIncomplete(props) ? null : props)\n};\nconst browserHelper = {\n isBlocked: (newWin) => {\n return !newWin || newWin.closed || typeof newWin.closed === 'undefined';\n }\n};\nconst urlHelper = {\n getAddress(href) {\n var _a;\n return (_a = new URL(href).searchParams.get('address')) === null || _a === void 0 ? void 0 : _a.replace(/\\+/g, ' ');\n }\n};\nconst { actions, reducer } = createSlice({\n name: 'address-autocomplete',\n initialState: {\n status: 'initialised',\n address: null,\n transactUrl: null,\n isLoading: false\n },\n reducers: {\n requestSearch(state, action) {\n state.status = 'request';\n state.address = action.payload;\n state.isLoading = false;\n },\n setAddress(state, action) {\n state.address = action.payload;\n },\n startProgress(state) {\n state.isLoading = true;\n },\n endProgress(state) {\n state.isLoading = false;\n },\n onError(state) {\n state.status = 'error';\n state.isLoading = false;\n },\n onResponse(state, action) {\n const { transactUrl } = action.payload;\n state.status = transactUrl ? 'found' : 'not found';\n state.transactUrl = transactUrl;\n state.isLoading = false;\n },\n onTransactUrlFound(state) {\n state.status = 'initialised';\n state.isLoading = false;\n },\n onPopupBlocked(state) {\n state.status = 'blocked';\n state.isLoading = false;\n }\n }\n});\nexport const AvailabilityCheckPanel = (props) => {\n var _a, _b;\n const [state, dispatch] = useReducer(reducer, {\n status: 'initialised',\n address: addressHelper.getInitialAddress(props.address),\n transactUrl: undefined,\n isLoading: false\n });\n const [triggerGetTransactUrlQuery, getTransactUrlQuery] = broadbandApi.useLazyGetTransactUrlQuery();\n useEffect(() => dispatch(actions.setAddress(addressHelper.getInitialAddress(props.address))), [props.address]);\n useEffect(() => {\n if (props.onAddressChange) {\n props.onAddressChange(state.address);\n }\n }, [props, state.address]);\n useEffect(() => {\n if (props.onStatusChange) {\n props.onStatusChange(state.status);\n }\n }, [props, state.status]);\n const handleContinueClick = useCallback((address) => {\n dispatch(actions.requestSearch(address));\n }, []);\n const handleShowPlans = useCallback(() => {\n if (state.isLoading) {\n return;\n }\n dispatch(actions.startProgress());\n props.onShowPlans(state.address);\n }, [props, state.address, state.isLoading]);\n const handleRetry = useCallback(() => {\n dispatch(actions.requestSearch(state.address));\n }, [state.address]);\n useEffect(() => {\n if (getTransactUrlQuery.isLoading) {\n dispatch(actions.startProgress());\n }\n }, [getTransactUrlQuery.isLoading]);\n useEffect(() => {\n if (props.onProgressChange) {\n props.onProgressChange(state.isLoading);\n }\n return () => {\n if (props.onProgressChange) {\n props.onProgressChange(false);\n }\n };\n }, [props, state.isLoading]);\n const isIncompleteAddress = useMemo(() => addressHelper.isIncomplete(state.address), [state.address]);\n useEffect(() => {\n const onRequest = () => {\n var _a;\n if (state.status !== 'request' || getTransactUrlQuery.isLoading) {\n return;\n }\n if (isIncompleteAddress || !props.supplierShortUrl) {\n handleShowPlans();\n return;\n }\n triggerGetTransactUrlQuery({\n productShortUrl: props.productShortUrl,\n supplierShortUrl: props.supplierShortUrl,\n address: (_a = state.address) === null || _a === void 0 ? void 0 : _a.label\n });\n };\n onRequest();\n }, [\n getTransactUrlQuery.isLoading,\n handleShowPlans,\n isIncompleteAddress,\n props.productShortUrl,\n props.supplierShortUrl,\n (_a = state.address) === null || _a === void 0 ? void 0 : _a.label,\n state.status,\n triggerGetTransactUrlQuery\n ]);\n useEffect(() => {\n const onResponse = () => {\n var _a;\n if (getTransactUrlQuery.isUninitialized || getTransactUrlQuery.isLoading) {\n return;\n }\n const transactUrl = (_a = getTransactUrlQuery.data) === null || _a === void 0 ? void 0 : _a.transactUrl;\n dispatch(actions.onResponse({ transactUrl }));\n };\n onResponse();\n }, [(_b = getTransactUrlQuery.data) === null || _b === void 0 ? void 0 : _b.transactUrl, getTransactUrlQuery.isLoading, getTransactUrlQuery.isUninitialized]);\n useEffect(() => {\n if (state.isLoading || state.status !== 'found') {\n return;\n }\n const openTransactUrl = () => {\n const transactPage = window.open(state.transactUrl);\n if (!browserHelper.isBlocked(transactPage)) {\n if (props.onTransactLinkClick) {\n props.onTransactLinkClick();\n }\n transactPage.focus();\n handleShowPlans();\n }\n else {\n dispatch(actions.onPopupBlocked());\n }\n };\n const onTransactUrlFound = () => {\n dispatch(actions.onTransactUrlFound());\n if (props.onTransactUrlChange) {\n props.onTransactUrlChange({\n url: state.transactUrl,\n address: state.address\n });\n }\n if (!props.shouldOpenTransactLink) {\n return;\n }\n openTransactUrl();\n };\n onTransactUrlFound();\n }, [handleShowPlans, props, state.address, state.isLoading, state.status, state.transactUrl]);\n useEffect(() => {\n if (getTransactUrlQuery.isError) {\n dispatch(actions.onError());\n }\n }, [getTransactUrlQuery.isError]);\n useEffect(() => {\n if (props.autoSubmitOnLoad && !isIncompleteAddress) {\n handleContinueClick(state.address);\n }\n }, [handleContinueClick, isIncompleteAddress, props.autoSubmitOnLoad, state.address]);\n return (_jsx(_Fragment, { children: _jsx(StatusLayout, { status: state.status, items: {\n default: (_jsx(AddressSearchPanel, { isLoading: state.isLoading, isModal: props.isModal, onContinue: handleContinueClick, addressSearchProps: {\n current: state.address,\n countryCode: props.countryCode,\n placeholder: props.addressSearchPlaceHolder,\n tooltipLink: _jsx(\"i\", { children: props.tooltipLink }),\n tooltipDescription: props.tooltipDescription,\n types: ['Geo,PAD,Str,Addr'],\n queryDelay: props.queryDelay,\n apiKey: props.apiKey\n } })),\n error: _jsx(ErrorPanel, { onRetry: handleRetry, isLoading: state.isLoading }),\n blocked: (_jsx(PopupBlockerMessage, { isModal: props.isModal, url: state.transactUrl, onClick: props.onTransactLinkClick })),\n 'not found': (_jsx(SearchPlanUnavailablePanel, { onClose: handleShowPlans, isModal: props.isModal, isSearchPage: props.isSearchPage }))\n } }) }));\n};\nexport const AvailabilityCheckModal = (props) => {\n const [address, setAddress] = useState(props.address);\n const [isOpen, setIsOpen] = useState(false);\n const [productShortUrl, setProductShortUrl] = useState(props.productShortUrl);\n const [supplierShortUrl, setSupplierShortUrl] = useState(props.supplierShortUrl);\n const [status, setStatus] = useState();\n const handleClose = useCallback(() => {\n setIsOpen(false);\n const showPlansOnStatuses = ['found', 'not found', 'blocked'];\n if (showPlansOnStatuses.includes(status)) {\n props.onShowPlans(address);\n }\n }, [address, props, status]);\n const isDynamicTransactLink = useCallback((href) => {\n return (/\\/smartmove-internet-verification-/i.test(href) ||\n (/\\/SmartMoveVerify/i.test(href) && addressHelper.isIncompleteLabel(urlHelper.getAddress(href))));\n }, []);\n const handleDynamicTransactLinkClick = useCallback((e) => {\n setIsOpen(true);\n setProductShortUrl(e.productShortUrl || props.productShortUrl);\n setSupplierShortUrl(e.supplierShortUrl || props.supplierShortUrl);\n }, [props.productShortUrl, props.supplierShortUrl]);\n const handleTransactUrlChange = useCallback((args) => {\n if (!props.shouldOpenTransactLink) {\n setIsOpen(false);\n }\n if (props.onTransactUrlChange) {\n props.onTransactUrlChange(args);\n }\n }, [props]);\n const handleShowPlans = useCallback((address) => {\n setIsOpen(false);\n if (props.onShowPlans) {\n props.onShowPlans(address);\n }\n }, [props]);\n const handleTransactLinkClick = useCallback(() => {\n handleClose();\n if (props.onTransactLinkClick) {\n props.onTransactLinkClick();\n }\n }, [handleClose, props]);\n useEffect(() => setProductShortUrl(props.productShortUrl), [props.productShortUrl]);\n useEffect(() => setSupplierShortUrl(props.supplierShortUrl), [props.supplierShortUrl]);\n return (_jsxs(_Fragment, { children: [_jsx(TransactLinkHandler, { isDynamicLink: isDynamicTransactLink, onDynamicLinkClick: handleDynamicTransactLinkClick }), isOpen && (_jsx(Modal, { isOpen: isOpen, onClose: handleClose, children: _jsx(AvailabilityCheckPanel, Object.assign({}, props, { isModal: true, productShortUrl: productShortUrl, supplierShortUrl: supplierShortUrl, onAddressChange: setAddress, onShowPlans: handleShowPlans, onStatusChange: setStatus, onTransactUrlChange: handleTransactUrlChange, onTransactLinkClick: handleTransactLinkClick })) }))] }));\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React, { useCallback } from 'react';\nimport { connect } from 'react-redux';\nimport { createSearchParams } from 'react-router-dom';\nimport AppComponent from '../../../../../Shared/React/js/components/AppComponent';\nimport { useProductLocation } from '../../hooks/location';\nimport { AvailabilityCheckModal } from './availabilityCheck/AvailabilityCheckPanel';\nconst connector = connect((state, ownProps) => {\n return ownProps;\n}, {});\nconst ProductPageComponent = (props) => {\n const location = useProductLocation();\n const handleTransactUrlChange = useCallback((args) => {\n window.location.href = args.url;\n }, []);\n const handleShowPlans = useCallback((address) => {\n window.location.href = `${props.searchUrl}?${createSearchParams({ address: (address === null || address === void 0 ? void 0 : address.label) || '' })}`;\n }, [props.searchUrl]);\n return (_jsx(\"div\", { children: _jsx(AvailabilityCheckModal, { address: props.addressSearch.address, productShortUrl: location.parts.product, supplierShortUrl: location.parts.supplier, countryCode: props.addressSearch.countryCode, addressSearchPlaceHolder: props.addressSearch.text.addressSearchPlaceHolder, tooltipLink: props.addressSearch.text.tooltipLink, tooltipDescription: props.addressSearch.text.tooltipDescription, queryDelay: props.addressSearch.queryDelay, apiKey: props.addressSearch.apiKey, onTransactUrlChange: handleTransactUrlChange, onShowPlans: handleShowPlans }) }));\n};\nconst ProductPageConnected = connector(ProductPageComponent);\nexport default function ProductPage(props) {\n return (_jsx(React.StrictMode, { children: _jsx(AppComponent, { children: _jsx(ProductPageConnected, Object.assign({}, props)) }) }));\n}\n","import { useMemo } from 'react';\nimport { useLocation } from 'react-router-dom';\nexport const useProductLocation = () => {\n const location = useLocation();\n const result = useMemo(() => {\n const [, area, subarea, supplier, connection, product] = location.pathname.split('/');\n const parts = {\n area,\n subarea,\n supplier,\n connection,\n product\n };\n return Object.assign(location, { parts });\n }, [location]);\n return result;\n};\n","import { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React, { useCallback, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { createSearchParams } from 'react-router-dom';\nimport SearchAddressActions from '../../../../../Shared/React/js/actions/SearchAddressActions';\nimport AppComponent from '../../../../../Shared/React/js/components/AppComponent';\nimport { AvailabilityCheckPanel } from './availabilityCheck/AvailabilityCheckPanel';\nconst connector = connect((state, ownProps) => {\n return ownProps;\n}, {});\nconst goTo = (url) => {\n window.location.href = url;\n};\nconst SmartMoveVerifyPageComponent = (props) => {\n var _a;\n const [address, setAddress] = useState((_a = props.addressSearch) === null || _a === void 0 ? void 0 : _a.address);\n const handleShowPlans = useCallback((address) => {\n setAddress(address);\n SearchAddressActions.setAddressCookie(address);\n const url = `${props.searchUrl}?${createSearchParams({ address: (address === null || address === void 0 ? void 0 : address.label) || '' })}`;\n goTo(url);\n }, [props.searchUrl]);\n const handleTransactUrlChange = useCallback((args) => {\n goTo(args.url);\n }, []);\n return (_jsx(_Fragment, { children: _jsx(AvailabilityCheckPanel, { autoSubmitOnLoad: true, address: address, addressSearchPlaceHolder: props.addressSearch.text.addressSearchPlaceHolder, apiKey: props.addressSearch.apiKey, countryCode: props.addressSearch.countryCode, onShowPlans: handleShowPlans, onTransactUrlChange: handleTransactUrlChange, queryDelay: props.addressSearch.queryDelay, tooltipDescription: props.addressSearch.text.tooltipDescription, tooltipLink: props.addressSearch.text.tooltipLink, productShortUrl: null, supplierShortUrl: props.supplierShortUrl }) }));\n};\nconst SmartMoveVerifyPageConnected = connector(SmartMoveVerifyPageComponent);\nexport default function SmartMoveVerifyPage(props) {\n return (_jsx(React.StrictMode, { children: _jsx(AppComponent, { children: _jsx(SmartMoveVerifyPageConnected, Object.assign({}, props)) }) }));\n}\n","import Update from 'immutability-helper';\n\nimport ResultsAdaptor from '../adaptors/BroadbandResultsAdaptor';\nimport { generateQueryString } from '../utils/BroadbandQueryString';\n\nexport default class BroadbandAddressSearchActions {\n constructor(searchUrl, coverageUrl) {\n this.searchUrl = searchUrl;\n this.coverageUrl = coverageUrl;\n this.resultsAdaptor = new ResultsAdaptor();\n }\n\n onCriteriaChange(criteria) {\n WhistleOut.startProgress('#search-results-partial', 0.1, 50);\n if (criteria.common.address || !this.coverageUrl) {\n const coveragePromise = this.resultsAdaptor.getCoveragePromise(criteria, this.coverageUrl);\n coveragePromise.then((result) => {\n if (result) {\n criteria.connectionTypes = {};\n criteria = Update(criteria,\n {\n connectionTypes: { values: { $set: result.connectionTypes.map(t => t.shortUrl) } }\n });\n if (!result.useDefaultSuppliers) {\n criteria.common.suppliers = {};\n }\n }\n this.search(criteria);\n });\n } else {\n this.search(criteria);\n }\n }\n\n search(criteria) {\n const queryString = generateQueryString(criteria);\n const url = this.searchUrl;\n const fullUrl = queryString.length ? `${url}?${queryString}` : url;\n window.location.assign(fullUrl);\n }\n}\n","import React, { Component } from 'react';\n\nimport AddressSearch from '../../../../../Shared/React/js/components/addressSearch/AddressSearch';\nimport BroadbandAddressSearchActions from './../../actions/BroadbandAddressSearchActions';\n\nexport default class BroadbandAddressSearch extends Component {\n\n constructor(props) {\n super(props);\n\n this.actions = new BroadbandAddressSearchActions(props.searchUrl, props.coverageUrl);\n this.onAddressChange = this.onAddressChange.bind(this);\n }\n\n onAddressChange(address) {\n if (this.props.ignoreAddressChange === true)\n return;\n let criteria = this.props.searchCriteria;\n if (!criteria) {\n criteria = { common: {} };\n }\n\n criteria.common.address = address;\n this.actions.onCriteriaChange(criteria);\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n","import { produce } from 'immer';\nimport { createElement } from 'react';\nimport { render, unmountComponentAtNode } from 'react-dom';\nimport { dispatchAddressChangedEvent } from '../../../../Shared/React/js/components/addressSearch/AddressSearch';\nimport ResultsAdaptor from '../adaptors/BroadbandResultsAdaptor';\nimport BroadbandAddressSearch from '../components/shared/BroadbandAddressSearch';\nimport { generateQueryString } from '../utils/BroadbandQueryString';\n// TODO: Move all state manipulation into the component\n// TODO: Use Redux actions\nexport default class BroadbandActions {\n constructor() {\n this.changeTab = (value) => {\n const criteria = produce(this.props.criteria, draft => {\n draft.common.tab = value;\n });\n this.actions.updateTab(value);\n if (!this.props.embeddedMode) {\n const queryString = generateQueryString(criteria, this.props.searchSettings.allConnectionsSelected);\n this.HistoryWrapper.pushQuery(queryString);\n }\n };\n }\n init() {\n this.resultsAdaptor = new ResultsAdaptor();\n if (typeof window !== 'undefined') {\n this.initHistoryTracker();\n if (this.props.coverage) {\n WhistleOut.setCoverageCookie(this.props.coverage);\n }\n }\n this.bindResults();\n if (!this.props.embeddedMode) {\n this.trackPage(false);\n }\n }\n retrySearch() {\n this.actions.updateConnectionTypes([]);\n }\n bindResults() {\n this.resultsAdaptor.unbindAll();\n this.resultsAdaptor.bindContractDropdown((contractType, hide) => this.actions.updateContractType({ contractType, hide }), (tabName) => this.actions.showModal(tabName));\n this.resultsAdaptor.bindCoverageStrip(() => this.actions.includeNbnConnections(this.props.nbnConnectionTypes));\n this.resultsAdaptor.bindCoverageErrorStrip(() => this.retrySearch());\n this.resultsAdaptor.bindSort((expression, isAscending) => this.actions.updateSort({ expression, isAscending }));\n this.resultsAdaptor.bindTab((tab) => this.changeTab(tab));\n this.resultsAdaptor.bindLoadMore((tab, current) => this.loadMoreResults(tab, current));\n this.resultsAdaptor.bindWidenResults((options) => this.actions.widenResults(options));\n this.resultsAdaptor.bindHideFeatureResults(() => this.actions.hideFeaturedResults());\n this.resultsAdaptor.bindDisableMaximumResultLimits(() => this.actions.disableMaximumResultLimits());\n this.resultsAdaptor.bindPlanSummary((supplier, maxResults) => this.actions.updatePlanSummarySupplier({ supplier, maxResults }));\n this.resultsAdaptor.bindModemCarouselLandingPage((modem) => this.actions.updateModem(modem));\n this.resultsAdaptor.bindLandingPageCriteria('criteria-data', (data) => this.actions.updateData(data));\n this.resultsAdaptor.bindLandingPageCriteria('criteria-speed', (speed) => this.actions.updateSpeed(speed));\n this.resultsAdaptor.bindLandingPageCriteria('criteria-supplier', (supplier) => this.actions.updateSuppliers(supplier));\n this.resultsAdaptor.bindCta();\n this.resultsAdaptor.bindNbnAlertModal();\n this.resultsAdaptor.bindSpeedTestResult();\n this.resultsAdaptor.bindCriteriaFilters(this.props.defaultCriteria, (criteria) => this.actions.updateCriteria(criteria));\n this.resultsAdaptor.bindFastProviders();\n WhistleOut.notifications.fire('SearchResultsRendered');\n const address = this.props.criteria.common.address || this.props.coverageAddress;\n if (address) {\n this.resultsAdaptor.bindCoverageMap();\n }\n else {\n this.resultsAdaptor.hideCoverageMapButton();\n }\n }\n loadMoreResults(tab, current) {\n if (tab !== 'all' && this.props.criteria.common.tab !== tab)\n return;\n let queryString = generateQueryString(this.props.criteria);\n if (queryString.length > 0) {\n queryString = `${queryString}¤t=${current}`;\n }\n else {\n queryString = `current=${current}`;\n }\n const url = this.props.searchSettings.pagedResultsUrl;\n const fullUrl = `${url}?${queryString}`;\n wo$.ajax({\n type: 'GET',\n url: fullUrl,\n success: (results) => {\n this.resultsAdaptor.appendLoadMoreResults(tab, results);\n }\n });\n }\n goToSearch(baseUrl, criteria) {\n const url = this.getSearchUrl(baseUrl, criteria);\n location.href = url;\n }\n getSearchUrl(baseUrl, criteria) {\n const queryString = generateQueryString(criteria, this.props.searchSettings.allConnectionsSelected);\n return queryString.length ? `${baseUrl}?${queryString}` : baseUrl;\n }\n // TODO: Remove this\n search(criteria) {\n const { embeddedMode } = this.props;\n const { searchUrl, coverageUrl, suppressCoverageCheck } = this.props.searchSettings;\n if (embeddedMode === true) {\n this.searchPageRefresh(criteria, searchUrl, suppressCoverageCheck, coverageUrl);\n }\n }\n searchPageRefresh(initialCriteria, searchUrl, suppressCoverageCheck, coverageUrl) {\n WhistleOut.startProgress('#search-results-partial', 0.1, 50);\n //TODO: Set other criteria that should be reset when navigating to full results from embedded mode\n const criteria = produce(initialCriteria, p => {\n p.common.campaignGroup = null;\n p.common.results = p.common.results || {};\n p.common.results.hideEmptyTabs = false;\n p.common.results.hideTabsHeaderHeading = false;\n p.common.results.showAllResults = false;\n p.common.results.hideSort = false;\n p.common.results.hideShare = false;\n p.common.results.hideWidenResults = false;\n p.common.results.showRowSorts = true;\n p.common.results.showRowFilters = true;\n p.common.results.maximumNumberOfResults = null;\n p.common.results.hideCoverage = false;\n p.common.results.productLabel = null;\n p.common.results.pageSize = null;\n });\n if (criteria.common.address && suppressCoverageCheck === false) {\n this.resultsAdaptor\n .getCoveragePromise(criteria, coverageUrl)\n .then((connectionTypes) => {\n const updatedCriteria = produce(criteria, draft => {\n if (connectionTypes && connectionTypes.length) {\n draft.connectionTypes.values = connectionTypes.map(t => t.shortUrl);\n }\n });\n this.goToSearch(searchUrl, updatedCriteria);\n });\n return;\n }\n if (!criteria.common.address || !criteria.common.address.state) {\n WhistleOut.getCurrentLocation(e => {\n const updatedCriteria = produce(criteria, draft => {\n draft.common.address = { label: e.label };\n });\n this.goToSearch(searchUrl, updatedCriteria);\n }, () => this.goToSearch(searchUrl, criteria));\n return;\n }\n this.goToSearch(searchUrl, criteria);\n }\n onAjaxSearchSuccess(result) {\n const $results = wo$('#results-container');\n const $addressBar = wo$('[data-search-address] > div');\n const $fastProviders = wo$('#fast-providers');\n if ($addressBar.length > 0) {\n unmountComponentAtNode($addressBar[0]);\n }\n $results.html(result.html);\n $fastProviders.html(result.fastProvidersHtml);\n WhistleOut.setCoverageCookie(result.coverage);\n WhistleOut.applyPopover($results);\n const nodeToAttach = $results.find('[data-search-address]');\n if (nodeToAttach.length > 0) {\n render(createElement(BroadbandAddressSearch, nodeToAttach.data('search-address')), nodeToAttach.find('div')[0]);\n }\n this.bindResults();\n WhistleOut.getAds('Broadband');\n wo$(window).resize();\n dispatchAddressChangedEvent({\n sender: this,\n address: result.criteria.common.address\n });\n if (!this.props.embeddedMode) {\n const resultQueryString = generateQueryString(result.criteria, result.allAvailableConnectionsSelected);\n this.HistoryWrapper.pushQuery(resultQueryString);\n }\n this.actions.searchSuccess(result);\n this.trackPage(true);\n }\n onAjaxSearchError() {\n this.actions.searchError();\n const el = wo$('#modal-error');\n el.modal('show');\n }\n initHistoryTracker() {\n WhistleOut.initHistoryTracker(this);\n }\n trackPage(isAjax, doNotRetry) {\n if (WhistleOut.getAnalyticsClientSideData() == null) {\n if (doNotRetry === true) {\n return;\n }\n setTimeout(() => this.trackPage(isAjax, true), 500);\n }\n else {\n const resultCount = wo$('#search-results-partial').data('result-count');\n const values = [];\n const criteria = this.props.criteria;\n let currentSupplierId = null;\n if (criteria.common.currentSupplierShortUrl &&\n criteria.common.currentSupplierShortUrl.length &&\n criteria.common.currentSupplierShortUrl !== '-None-') {\n currentSupplierId = this.props.searchSettings.suppliers.allItems.filter(i => i.shortUrl === criteria.common.currentSupplierShortUrl)[0].id;\n }\n values.push(currentSupplierId);\n values.push(criteria.common.minimumSpend);\n values.push(criteria.common.maximumSpend);\n values.push(criteria.data);\n values.push(criteria.common.includeOffersWithCampaignOnly);\n values.push(criteria.common.resultsSortExpression);\n values.push(criteria.common.resultsSortAscending);\n values.push(resultCount);\n if (criteria.common.address) {\n values.push(criteria.common.address.placeId);\n values.push(criteria.common.address.label\n ? criteria.common.address.label.replace('|', '')\n : criteria.common.address.label);\n values.push(criteria.common.address.state ? criteria.common.address.state.shortName : null);\n values.push(criteria.common.address.state ? criteria.common.address.state.longName : null);\n values.push(criteria.common.address.city ? criteria.common.address.city.longName : null);\n values.push(criteria.common.address.postcode ? criteria.common.address.postcode.longName : null);\n }\n else {\n values.push(null);\n values.push(null);\n values.push(null);\n values.push(null);\n values.push(null);\n values.push(null);\n }\n values.push(criteria.modemShortUrl);\n values.push(criteria.speed);\n const valuesString = values.join('|');\n WhistleOut.trackPageView(null, valuesString, isAjax);\n if (isAjax) {\n const value = WhistleOut.getRemarketingData();\n if (value) {\n value.data.postcode =\n criteria.common.address && criteria.common.address.postcode\n ? criteria.common.address.postcode.longName\n : null;\n value.data.data = criteria.data;\n value.data.speed = criteria.speed;\n value.data.supplier = criteria.common.suppliers.values.join();\n value.data.connectionType = criteria.connectionTypes.values.join();\n value.data.bundles = criteria.bundles.selectedTypes.join();\n WhistleOut.remarketing(value);\n }\n }\n }\n }\n}\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport format from 'string-format';\nimport Slider from './Slider';\nconst SliderWithLabel = (_a) => {\n var _b, _c;\n var { \n //\n current, sliderClassName = 'rc-slider-container pad-r-5-md pad-r-5-lg pad-x-4-xs pad-t-4' } = _a, props = __rest(_a, [\"current\", \"sliderClassName\"]);\n const [value, setValue] = useState(current);\n useEffect(() => {\n setValue(current);\n }, [current]);\n const handleValueUpdating = useCallback(value => {\n setValue(value);\n if (props.onValueUpdating) {\n props.onValueUpdating(value);\n }\n }, [props]);\n const getItem = useCallback((value) => {\n return props.values.find(v => v.key === value);\n }, [props.values]);\n const labelText = value === 0 ? (props.anyLabel) : value === -1 ? ((_b = getItem(value)) === null || _b === void 0 ? void 0 : _b.value) : (_jsx(\"span\", { dangerouslySetInnerHTML: {\n __html: format(props.fromLabel, (_c = getItem(value)) === null || _c === void 0 ? void 0 : _c.value)\n } }));\n return (_jsxs(\"div\", { className: props.containerClassName, children: [_jsx(\"div\", { children: props.labelTemplate ? (props.labelTemplate(labelText)) : (_jsx(\"div\", { className: \"font-6 font-5-md font-700\", children: labelText })) }), _jsx(\"div\", { className: sliderClassName, children: _jsx(Slider, { data: props.values.map(a => a.key), current: value, onValueChanged: props.onValueChanged, onValueUpdating: handleValueUpdating }) })] }));\n};\n// TODO: Consider using babel-plugin-typescript-to-proptypes to generate PropTypes\n/* eslint-disable import/no-named-as-default-member */\nSlider.prototype = {\n current: PropTypes.number.isRequired,\n anyLabel: PropTypes.string.isRequired,\n fromLabel: PropTypes.string.isRequired,\n labelTitle: PropTypes.string.isRequired,\n values: PropTypes.arrayOf(PropTypes.object).isRequired,\n containerClassName: PropTypes.string,\n sliderClassName: PropTypes.string,\n labelTemplate: PropTypes.func,\n onValueChanged: PropTypes.func.isRequired\n};\n/* eslint-enable */\nexport default SliderWithLabel;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport SliderWithLabel from '../../../../../../Shared/React/js/components/sliders/SliderWithLabel';\nconst DataFilter = (props) => {\n return (_jsxs(\"div\", { className: \"hidden-xs col-sm-12\", children: [_jsx(\"div\", { className: \"font-4 font-3-md c-gray-light line-height-11\", children: props.dataLabel }), _jsx(SliderWithLabel, { current: props.current, anyLabel: props.anyDataLabel, fromLabel: props.fromLabel, values: props.values, onValueChanged: props.onChanged })] }));\n};\nexport default DataFilter;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useCallback, useRef } from 'react';\nconst ErrorPanel = (props) => {\n const containerRef = useRef(null);\n const handleRetry = useCallback(() => {\n const container = wo$(containerRef.current);\n container.modal('hide');\n wo$('body').removeClass('modal-open');\n wo$('.modal-backdrop').remove();\n if (props.onRetry) {\n props.onRetry();\n }\n }, [props]);\n return (_jsx(\"div\", { className: \"modal fade\", id: \"modal-error\", ref: containerRef, \"data-backdrop\": \"static\", \"data-keyboard\": \"false\", tabIndex: -1, role: \"dialog\", \"aria-hidden\": \"true\", children: _jsx(\"div\", { className: \"modal-dialog modal-lg\", children: _jsx(\"div\", { className: \"modal-content\", children: _jsx(\"div\", { className: \"modal-body [ pad-x-6 pad-y-12 ]\", children: _jsx(\"div\", { className: \"row\", children: _jsx(\"div\", { className: \"col-xs-24 col-sm-15 col-sm-offset-6 col-lg-14 col-log-offset-2\", children: _jsxs(\"div\", { className: \"text-center\", children: [_jsxs(\"h2\", { className: \"font-7 mar-t-0 mar-t-5-xs\", children: [_jsx(\"strong\", { children: props.title }), ' ', _jsx(\"span\", { className: \"text-nowrap\", children: props.description })] }), _jsx(\"div\", { className: \"pad-t-3 font-400\", id: \"enterAddressLocationForm\", children: _jsx(\"div\", { className: \"row\", children: _jsx(\"div\", { className: \"text-center-xs\", children: _jsx(\"button\", { onClick: handleRetry, type: \"button\", className: \"btn btn-primary\", children: props.retryLabel }) }) }) })] }) }) }) }) }) }) }));\n};\nexport default ErrorPanel;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nconst ShowFiltersButton = (props) => {\n return (_jsx(\"div\", { className: \"col-xs-24 col-sm-5 col-md-4 col-lg-3 filters-3\", children: _jsx(\"div\", { className: \"mar-t-5-xs mar-t-6-sm pad-t-5-sm mar-t-6-md pad-t-2-md mar-t-6-lg pad-t-3-lg\", children: _jsxs(\"button\", { type: \"button\", className: \"btn btn-block btn-sm btn-default font-4\", onClick: props.onClick, children: [_jsx(\"span\", { className: \"fa fa-sliders display-inline-block mar-r-3 align-middle\" }), props.title] }) }) }));\n};\nexport default ShowFiltersButton;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { produce } from 'immer';\nimport React, { useCallback } from 'react';\nimport SliderWithLabel from '../../../../../../Shared/React/js/components/sliders/SliderWithLabel';\nconst SpeedFilter = (props) => {\n const getTooltipProps = useCallback(() => {\n return produce(props.tooltipHtmlAttributes, (draft) => {\n const template = document.createElement('div');\n template.innerHTML = draft['data-content'];\n // Remove specific speed value related fragment\n const [speedFragment] = Array.prototype.slice\n .call(template.children)\n .filter((p) => p.innerText.includes(props.speedDescriptionPlaceholder));\n if (speedFragment) {\n template.removeChild(speedFragment);\n }\n // Remove whitespaces\n template.innerHTML = template.innerHTML.trim();\n // Remove first HR\n const hr = template.querySelector('hr');\n if (hr && hr.previousSibling === null) {\n template.removeChild(hr);\n }\n draft['data-content'] = template.innerHTML;\n });\n }, [props.speedDescriptionPlaceholder, props.tooltipHtmlAttributes]);\n const tooltipProps = getTooltipProps();\n return (_jsxs(\"div\", { className: \"col-xs-24 col-sm-12\", children: [_jsxs(\"div\", Object.assign({ className: \"font-4 font-3-md font-5-xs c-gray-light line-height-11 mar-b-2-xs hover-bg\" }, tooltipProps, { children: [props.speedLabel, ' ', _jsx(\"span\", { children: _jsx(\"i\", { className: \"fa fa-info-circle\" }) })] })), _jsx(SliderWithLabel, { current: props.current, anyLabel: props.anySpeedLabel, fromLabel: props.fromLabel, values: props.values, onValueChanged: props.onChanged })] }));\n};\nexport default SpeedFilter;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport ClassNames from 'classnames';\nimport React, { useCallback, useRef } from 'react';\nconst OptionButton = (props) => {\n const btnRef = useRef(null);\n const handleOnSelected = useCallback(() => {\n // Remove the focus to avoid staying highlighted on mouse out\n btnRef.current.blur();\n if (props.onSelected) {\n props.onSelected(!props.selected);\n }\n }, [props]);\n const className = ClassNames(props.className, 'btn', { 'btn-info': !props.selected }, { 'btn-default': props.selected === true }, 'btn-filter pad-0 mar-0 mar-r-2', { active: props.selected === true });\n return (_jsx(\"button\", Object.assign({}, props.buttonProps, { ref: btnRef, className: className, onClick: handleOnSelected, children: props.children })));\n};\nexport default OptionButton;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport OptionButton from './OptionButton';\nconst OptionTextButton = (props) => {\n return (_jsx(OptionButton, { selected: props.selected, onSelected: props.onSelected, children: _jsx(\"span\", { children: props.text }) }));\n};\nexport default OptionTextButton;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/* eslint react/prop-types: error */\nimport { produce } from 'immer';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport OptionTextButton from './OptionTextButton';\nconst OptionGroup = ({ items = [], selectedKeys: selectedKeysProps = [], getKey, maxItemsCount = 3, showSelectedCount, anyButtonPositionLast, showMoreVisible, header, text, onMoreClick: onMoreClickHandler, onSelectedItemsChanged: onSelectedItemsChangedHandler, renderItemButton: renderItemButtonHandler, renderAnyButton: renderAnyButtonHandler, \n// TOD: USe 'items' instead and remove this\ngetTopEligibleItems: getTopEligibleItemsHandler }) => {\n const [selectedKeys, setSelectedKeys] = useState(selectedKeysProps || []);\n useEffect(() => {\n setSelectedKeys(selectedKeysProps || []);\n }, [selectedKeysProps]);\n const getItemByKey = useCallback(key => {\n return items.find(p => getKey(p) === key);\n }, [getKey, items]);\n const onSelectedItemsChanged = useCallback(keys => {\n const ordered = (keys || []).slice().sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));\n setSelectedKeys(ordered);\n onSelectedItemsChangedHandler(ordered);\n }, [onSelectedItemsChangedHandler]);\n const onAnyClick = useCallback(() => {\n // Ignore if everything is already selected\n if (!selectedKeys || selectedKeys.length === 0) {\n return;\n }\n onSelectedItemsChanged([]);\n }, [onSelectedItemsChanged, selectedKeys]);\n const onMoreClick = useCallback(event => {\n event.preventDefault();\n if (onMoreClickHandler) {\n onMoreClickHandler(event);\n }\n }, [onMoreClickHandler]);\n const onItemSelected = (item, selected) => {\n const keys = produce(selectedKeys, draft => {\n const key = getKey(item);\n if (selected) {\n draft.push(key);\n }\n else {\n draft.splice(draft.indexOf(key), 1);\n }\n });\n onSelectedItemsChanged(keys);\n };\n const getSelectedItems = useCallback(() => {\n return selectedKeys.map(key => getItemByKey(key)).filter(p => !!p);\n }, [getItemByKey, selectedKeys]);\n // TOD: USe 'items' instead and remove this\n const getTopEligibleItems = useCallback(() => {\n if (getTopEligibleItemsHandler) {\n return getTopEligibleItemsHandler(items);\n }\n return items;\n }, [getTopEligibleItemsHandler, items]);\n const topEligibleItems = getTopEligibleItems();\n const topItemsCount = Math.min(maxItemsCount, topEligibleItems.length);\n const renderItemButton = (item, onSelected) => {\n if (renderItemButtonHandler) {\n const isSelected = selectedKeys.some(key => getKey(item) === key);\n const lastVisibleItem = topEligibleItems.slice(0, topItemsCount)[topItemsCount - 1];\n const className = item === lastVisibleItem ? 'hidden-md' : null;\n return renderItemButtonHandler(item, className, isSelected, onSelected);\n }\n };\n const itemsCount = items.length;\n const selectedItems = getSelectedItems();\n const unselectedCount = items.length - (selectedKeys || []).length;\n const selectedCount = selectedItems.length;\n const isAllSelected = selectedCount === 0 ||\n unselectedCount === 0 ||\n selectedCount === items.length ||\n unselectedCount === items.length;\n const anyButton = renderAnyButtonHandler ? (renderAnyButtonHandler(isAllSelected, onAnyClick)) : (_jsx(OptionTextButton, { text: text.all, selected: isAllSelected, onSelected: onAnyClick }));\n return (_jsxs(React.Fragment, { children: [header ? (_jsxs(\"div\", { className: \"mar-b-5 font-4 c-gray-light\", children: [header, showSelectedCount && !isAllSelected && selectedItems.length > 0 ? (_jsxs(\"span\", { children: [_jsx(\"span\", { className: \"c-gray-lighter\", children: \" | \" }), _jsx(\"a\", { href: \"#\", onClick: onMoreClick, children: `${selectedItems.length}\\u00a0${text.selected}` })] })) : null] })) : null, !anyButtonPositionLast ? anyButton : null, \n // Top items\n topEligibleItems\n .slice(0, topItemsCount)\n .map(item => renderItemButton(item, selected => onItemSelected(item, selected))), anyButtonPositionLast ? anyButton : null, showMoreVisible || itemsCount > topItemsCount ? (_jsxs(\"button\", { type: \"button\", className: \"mar-l-4 btn btn-info btn-filter pad-0 mar-0 c-blue\", onClick: onMoreClick, children: [_jsx(\"span\", { className: \"font-4 display-block line-height-1\", children: _jsx(\"strong\", { children: itemsCount - topItemsCount }) }), _jsx(\"span\", { className: \"font-3 display-block line-height-1\", children: text.more.toLowerCase() })] })) : null] }));\n};\n/* eslint-disable import/no-named-as-default-member */\nOptionGroup.propTypes = {\n items: PropTypes.arrayOf(PropTypes.object).isRequired,\n selectedKeys: PropTypes.arrayOf(PropTypes.string),\n getKey: PropTypes.func.isRequired,\n maxItemsCount: PropTypes.number,\n showSelectedCount: PropTypes.bool,\n anyButtonPositionLast: PropTypes.bool,\n showMoreVisible: PropTypes.bool,\n header: PropTypes.oneOfType([\n //\n PropTypes.string,\n PropTypes.number,\n PropTypes.element\n ]),\n text: PropTypes.shape({\n all: PropTypes.string.isRequired,\n selected: PropTypes.string.isRequired,\n showAll: PropTypes.string.isRequired,\n more: PropTypes.string.isRequired\n }).isRequired,\n onMoreClick: PropTypes.func,\n onSelectedItemsChanged: PropTypes.func,\n renderItemButton: PropTypes.func.isRequired,\n renderAnyButton: PropTypes.func,\n getTopEligibleItems: PropTypes.func.isRequired\n};\n/* eslint-enable */\nexport default OptionGroup;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport OptionButton from './OptionButton';\nconst OptionImageButton = (props) => {\n return (_jsx(OptionButton, { selected: props.selected, onSelected: props.onSelected, className: props.className, buttonProps: {\n 'data-toggle': 'popover',\n 'data-trigger': 'hover',\n 'data-placement': 'auto',\n 'data-animation': true,\n 'data-content': props.imageAlt\n }, children: _jsx(\"img\", { className: \"img-responsive center-block brand-equalizer\", src: props.imageSrc, alt: props.imageAlt }) }));\n};\nexport default OptionImageButton;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useCallback } from 'react';\nimport OptionGroup from './OptionGroup';\nimport OptionImageButton from './OptionImageButton';\nconst SuppliersOptionGroup = ({ items, selectedKeys, getKey, availableSupplierIds, showHeader, businessOnly, text, onSelectedItemsChanged, onShowAllProviders, }) => {\n const getTopEligibleItems = useCallback((items) => {\n return items.filter(item => \n // The provider should be available in the search result set,\n // otherwise selecting that provider would cause an empty result for the search\n !availableSupplierIds || availableSupplierIds.indexOf(item.id) > -1);\n }, [availableSupplierIds]);\n const onSelectedItemsChangedHandler = useCallback(shortUrls => {\n WhistleOut.trackEvent('BroadbandSearchResults', 'FilterChanged', 'Providers: ' + (shortUrls.length === 0\n ? 'Any'\n : shortUrls.join(',')));\n if (onSelectedItemsChanged) {\n onSelectedItemsChanged(shortUrls);\n }\n }, [onSelectedItemsChanged]);\n const renderHasNoItems = (header) => {\n return (_jsxs(React.Fragment, { children: [header\n ? _jsx(\"div\", { className: \"mar-b-2\", children: header })\n : null, _jsx(\"div\", { className: \"c-gray-light pad-x-9\", children: text.noProvidersFoundForCriteria })] }));\n };\n const renderItemButton = useCallback((item, className, isSelected, onSelected) => {\n return (_jsx(OptionImageButton, { imageSrc: item.smallImageUrl, imageAlt: item.name, className: className, selected: isSelected, onSelected: onSelected }, item.id));\n }, []);\n const header = showHeader ? text.heading : null;\n const availableItems = items.filter(item => !!item.isAvailable &&\n (!businessOnly || item.isBusiness));\n if (!availableItems || availableItems.length === 0) {\n return renderHasNoItems(header);\n }\n const topEligibleItems = getTopEligibleItems(availableItems);\n if (topEligibleItems.length === 0) {\n return renderHasNoItems(header);\n }\n return (_jsx(OptionGroup, { items: availableItems, selectedKeys: selectedKeys, getKey: getKey, getTopEligibleItems: getTopEligibleItems, renderItemButton: renderItemButton, onSelectedItemsChanged: onSelectedItemsChangedHandler, onMoreClick: onShowAllProviders, header: header, text: text, showSelectedCount: true, maxItemsCount: 6 }));\n};\nexport default SuppliersOptionGroup;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport SuppliersOptionGroup from '../../../../../../Shared/React/js/components/optionButtons/SuppliersOptionGroup';\nconst SuppliersFilter = (props) => {\n return (_jsx(\"div\", { className: \"hidden-xs col-sm-19 col-md-12 col-lg-12 filters-1\", children: props.showTextOnly ? (_jsx(\"div\", { dangerouslySetInnerHTML: { __html: props.textContent } })) : (_jsx(SuppliersOptionGroup, Object.assign({}, props.suppliers, { selectedKeys: props.selectedKeys, businessOnly: props.isBusinessOnly, showHeader: props.showHeader, onSelectedItemsChanged: props.onChanged, onShowAllProviders: props.onShowAll, getKey: props.getKey }))) }));\n};\nexport default SuppliersFilter;\n","import { createContext } from 'react';\n;\nexport const SearchFilterContext = createContext(null);\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useCallback, useContext, useEffect, useState } from 'react';\nimport { dispatch } from '../../../../../../Shared/js/redux/store';\nimport { actions } from '../../../../../js/redux/modalSlice';\nimport { SearchFilterContext } from '../SearchFilterContext';\nlet include;\nlet exclude;\nconst phone = 'phone';\nconst tv = 'tv';\nconst lineRental = 'lineRental';\nconst mobile = 'mobile';\nfunction BuildOptionString(prefix, state) {\n return state ? prefix + include : prefix + exclude;\n}\nfunction BuildInitalState(context) {\n const stateArray = [];\n if (context.criteria.bundles.homePhone !== null)\n stateArray.push(BuildOptionString(phone, context.criteria.bundles.homePhone));\n if (context.criteria.bundles.mobilePhone !== null)\n stateArray.push(BuildOptionString(mobile, context.criteria.bundles.mobilePhone));\n if (context.criteria.bundles.tv !== null)\n stateArray.push(BuildOptionString(tv, context.criteria.bundles.tv));\n if (context.criteria.bundles.lineRental !== null)\n stateArray.push(BuildOptionString(lineRental, context.criteria.bundles.lineRental));\n if (stateArray.length === 0) {\n return [''];\n }\n return stateArray;\n}\nexport default function BundleSelect() {\n const context = useContext(SearchFilterContext);\n include = context.data.resources.include;\n exclude = context.data.resources.exclude;\n const [optionsSelected, setOptionsSelected] = useState(Array(...BuildInitalState(context)));\n const [tvOptionsSelected, setTvOptionsSelected] = useState(Array(...(context.criteria.bundles.tvChannels.map(tc => tc.toString()))));\n const [showTvChannels, setShowTvChannels] = useState(context.criteria.bundles.tv === true);\n useEffect(() => {\n const select = wo$('#choose-bundles');\n select.selectpicker('refresh');\n if (optionsSelected.some(os => os === '')) {\n dispatch(actions.updatePhoneBundle(null));\n dispatch(actions.updateTvBundle(null));\n dispatch(actions.updateLineRentalBundle(null));\n dispatch(actions.updateMobileBundle(null));\n return;\n }\n dispatch(actions.updatePhoneBundle(optionsSelected.some(os => os === phone + include) ? true : optionsSelected.some(os => os === phone + exclude) ? false : null));\n if (optionsSelected.some(os => os === tv + include)) {\n dispatch(actions.updateTvBundle(true));\n }\n else {\n dispatch(actions.updateTvBundle(optionsSelected.some(os => os === tv + exclude) ? false : null));\n setTvOptionsSelected([]);\n }\n if (context.data.showLineRental) {\n dispatch(actions.updateLineRentalBundle(optionsSelected.some(os => os === lineRental + include)\n ? true\n : optionsSelected.some(os => os === lineRental + exclude) ? false : null));\n }\n if (context.data.showMobilePhoneBundle) {\n dispatch(actions.updateMobileBundle(optionsSelected.some(os => os === mobile + include)\n ? true\n : optionsSelected.some(os => os === mobile + exclude) ? false : null));\n }\n }, [optionsSelected, context.data]);\n useEffect(() => {\n const select = wo$('choose-tv-channels');\n select.selectpicker('refresh');\n const values = [...tvOptionsSelected.map(tv => Number.parseInt(tv))];\n dispatch(actions.updateTvChannels(values));\n }, [tvOptionsSelected]);\n const onChangeCallBack = useCallback((e) => {\n const options = [...e.target.selectedOptions];\n let values = options.map(option => option.value);\n if (values.some(o => o === '')) {\n if (!optionsSelected.some(o => o === '')) {\n setOptionsSelected(Array(...['']));\n setShowTvChannels(false);\n return;\n }\n else if (values.length >= 1) {\n values = values.filter(o => o !== '');\n }\n }\n const tvIncluded = values.some(os => os === tv + include);\n setShowTvChannels(tvIncluded);\n setOptionsSelected([...values]);\n }, [optionsSelected]);\n const onLoad = useCallback((node) => {\n const element = jQuery(node);\n WhistleOut.applySelectPicker(element);\n }, []);\n const OnTvChangeCallBack = useCallback((e) => {\n const options = [...e.target.selectedOptions];\n setTvOptionsSelected(options.map(o => o.value));\n }, []);\n function buildChannelOptions(options) {\n return options.map(o => {\n return (_jsx(\"option\", { value: o.key, children: o.value }, o.key));\n });\n }\n return (_jsxs(\"div\", { children: [_jsx(\"h5\", { className: \"font-5\", children: context.data.resources.bundle }), _jsxs(\"div\", { className: \"selectpicker-wide\", children: [_jsxs(\"select\", { id: \"choose-bundles\", tabIndex: -1, className: \"selectpicker bs-select-hidden\", multiple: true, onChange: onChangeCallBack, value: optionsSelected, ref: onLoad, \"data-selected-text-format\": \"count>1\", children: [_jsx(\"option\", { value: \"\", children: context.data.resources.showAllBundles }, \"\"), _jsxs(\"optgroup\", { label: context.data.resources.phoneBundle, \"data-max-options\": \"1\", children: [_jsx(\"option\", { value: phone + include, title: `${include} ${context.data.resources.phoneBundle}`, children: include }, \"pI\"), _jsx(\"option\", { value: phone + exclude, title: `${exclude} ${context.data.resources.phoneBundle}`, children: exclude }, \"pE\")] }), _jsxs(\"optgroup\", { label: context.data.resources.tvBundle, \"data-max-options\": \"1\", children: [_jsx(\"option\", { value: tv + include, title: `${include} ${context.data.resources.tvBundle}`, children: include }, \"tvI\"), _jsx(\"option\", { value: tv + exclude, title: `${exclude} ${context.data.resources.tvBundle}`, children: exclude }, \"tvE\")] }), context.data.showLineRental ? (_jsxs(\"optgroup\", { label: context.data.resources.lineRental, \"data-max-options\": \"1\", children: [_jsx(\"option\", { value: lineRental + include, title: `${include} ${context.data.resources.lineRental}`, children: include }, \"lrI\"), _jsx(\"option\", { value: lineRental + exclude, title: `${exclude} ${context.data.resources.lineRental}`, children: exclude }, \"lrE\")] })) : null, context.data.showMobilePhoneBundle ? (_jsxs(\"optgroup\", { label: context.data.resources.mobilePhoneBundle, \"data-max-options\": \"1\", children: [_jsx(\"option\", { value: mobile + include, title: `${include} ${context.data.resources.mobilePhoneBundle}`, children: include }, \"mI\"), _jsx(\"option\", { value: mobile + exclude, title: `${exclude} ${context.data.resources.mobilePhoneBundle}`, children: exclude }, \"mE\")] })) : null] }), context.data.showTvChannels ? (_jsx(\"span\", { hidden: !showTvChannels, children: _jsxs(\"select\", { id: \"choose-tv-channels\", title: context.data.resources.mustHaveChannels, className: \"selectpicker bs-select-hidden mar-t-3\", value: tvOptionsSelected, onChange: OnTvChangeCallBack, multiple: true, ref: onLoad, \"data-selected-text-format\": \"count>1\", children: [_jsx(\"optgroup\", { label: context.data.resources.individualChannels, children: buildChannelOptions(context.data.individualTvChannels) }), _jsx(\"optgroup\", { label: context.data.resources.kidsChannels, children: buildChannelOptions(context.data.kidsTvChannels) }), _jsx(\"optgroup\", { label: context.data.resources.sportsChannels, children: buildChannelOptions(context.data.sportsTvChannels) })] }) })) : null] })] }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useCallback, useContext, useEffect, useState } from 'react';\nimport { dispatch } from '../../../../../../Shared/js/redux/store';\nimport { actions } from '../../../../../js/redux/modalSlice';\nimport { SearchFilterContext } from '../SearchFilterContext';\nimport BundleSelect from './BundleSelect';\nfunction BuildMegaAdvancedState(context) {\n const returnArray = new Array();\n if (context.criteria.common.maxResultsPerSupplier)\n returnArray.push('single-result');\n if (context.criteria.staticIp)\n returnArray.push('static-ip');\n if (context.criteria.uploadNotCounted)\n returnArray.push('upload-not-counted');\n if (context.criteria.common.showLessResults)\n returnArray.push('less-results');\n return returnArray;\n}\nexport default function AdvancedTab() {\n var _a, _b, _c;\n //Select Names\n const chooseContractTerms = 'choose-contract-terms';\n const chooseModem = 'choose-modem';\n const choosePrepaidExpiry = 'choose-prepaid-expiry';\n const chooseMegaAdvanced = 'choose-mega-advanced';\n const byoModem = 'BYO-Modem';\n const simOnly = 'sim-only';\n const context = useContext(SearchFilterContext);\n const allContractTerms = context.data.allContractTerms;\n const [contractTermSelectedOptions, setSelectedContractTerms] = useState(context.criteria.common.contractTerms.map(ct => ct.toString()));\n const [modemSelectedOptions, setModemSelectedOptions] = useState(context.criteria.modemShortUrl === byoModem ? (context.criteria.simOnly ? simOnly : byoModem) : context.criteria.modemShortUrl);\n const [prepaidExpirySelectedOptions, setPrepaidExpirySelectedOptions] = useState((_c = (_b = (_a = context.criteria.prepaidExpiry) === null || _a === void 0 ? void 0 : _a.valueOf()) === null || _b === void 0 ? void 0 : _b.toString()) !== null && _c !== void 0 ? _c : '');\n const [megaAdvancedSelectedOptions, setMegaAdvancedSelectedOptions] = useState(BuildMegaAdvancedState(context));\n const DidUnmount = useCallback((node) => {\n const dom = jQuery(node);\n const select = dom.find('#' + chooseModem);\n select.off('change', this.onModemChange);\n }, []);\n const DidMount = useCallback((node) => {\n const dom = jQuery(node);\n WhistleOut.applySelectPickersStyle(dom);\n WhistleOut.applySelectPicker(dom.find('#' + chooseContractTerms));\n WhistleOut.applySelectPicker(dom.find('#' + chooseModem));\n WhistleOut.applySelectPicker(dom.find('#' + choosePrepaidExpiry));\n WhistleOut.applySelectPicker(dom.find('#' + chooseMegaAdvanced));\n return () => DidUnmount(node);\n }, [DidUnmount]);\n useEffect(() => {\n if (contractTermSelectedOptions === undefined || contractTermSelectedOptions.map === undefined)\n return;\n dispatch(actions.updateContractTerms({\n selected: contractTermSelectedOptions.map(ct => Number.parseInt(ct)),\n all: allContractTerms\n }));\n }, [contractTermSelectedOptions, allContractTerms]);\n useEffect(() => {\n const isSimOnly = modemSelectedOptions === simOnly;\n dispatch(actions.updateModem({\n modemShortUrl: isSimOnly ? byoModem : modemSelectedOptions,\n simOnly: isSimOnly\n }));\n }, [modemSelectedOptions]);\n useEffect(() => {\n dispatch(actions.updatePrepaidExpiry(Number.parseInt(prepaidExpirySelectedOptions)));\n }, [prepaidExpirySelectedOptions]);\n useEffect(() => {\n dispatch(actions.updateAdvancedOptions(megaAdvancedSelectedOptions));\n }, [megaAdvancedSelectedOptions]);\n const OnChange = useCallback((e) => {\n const options = [...e.target.selectedOptions];\n const values = options.map(o => o.value);\n switch (e.target.id) {\n case chooseContractTerms:\n setSelectedContractTerms(values);\n break;\n case chooseModem:\n setModemSelectedOptions(values[0]);\n break;\n case choosePrepaidExpiry:\n setPrepaidExpirySelectedOptions(values[0]);\n break;\n case chooseMegaAdvanced:\n setMegaAdvancedSelectedOptions(values);\n break;\n default:\n break;\n }\n }, []);\n function renderMobileBroadbandModems() {\n if (context.data.showMobileModems) {\n return (_jsx(\"optgroup\", { label: context.data.mobileModemsLabel, children: context.data.mobileModemTypes.map(modem => {\n return (_jsx(\"option\", { value: modem.key, children: modem.value }, modem.key));\n }) }));\n }\n }\n return (_jsx(\"div\", { ref: DidMount, children: _jsxs(\"div\", { className: \"row\", children: [_jsxs(\"div\", { className: \"col-md-10\", children: [_jsx(\"div\", { className: \"row pad-b-5\", children: _jsxs(\"div\", { className: \"col-xs-24\", children: [_jsx(\"h5\", { className: \"font-5\", children: context.data.resources.contractLength }), _jsx(\"div\", { className: \"selectpicker-wide\", children: _jsx(\"select\", { id: chooseContractTerms, tabIndex: -1, className: \"selectpicker bs-select-hidden\", multiple: true, \"data-selected-text-format\": \"count>1\", onChange: OnChange, value: contractTermSelectedOptions, children: context.data.contractTerms.map(contractTerm => {\n return (_jsx(\"option\", { value: contractTerm.key, children: contractTerm.value }, contractTerm.key));\n }) }) })] }) }), _jsx(\"div\", { className: \"row pad-y-5\", children: _jsxs(\"div\", { className: \"col-xs-24\", children: [_jsx(\"h5\", { className: \"font-5\", children: context.data.resources.modemType }), _jsx(\"div\", { className: \"selectpicker-wide\", children: _jsxs(\"select\", { id: chooseModem, tabIndex: -1, className: \"selectpicker bs-select-hidden\", onChange: OnChange, value: modemSelectedOptions, children: [_jsx(\"option\", { value: \"\", children: context.data.anyModemLabel }), _jsx(\"optgroup\", { label: context.data.homeModemsLabel, children: context.data.homeModemTypes.map(modem => {\n return (_jsx(\"option\", { value: modem.key, children: modem.value }, modem.key));\n }) }), renderMobileBroadbandModems()] }) })] }) })] }), _jsxs(\"div\", { className: \"col-sm-24 col-md-10 col-md-offset-2\", children: [_jsx(\"div\", { className: \"row pad-b-5\", children: _jsxs(\"div\", { className: \"col-xs-24\", children: [_jsx(\"h5\", { className: \"font-5\", children: context.data.resources.prepaidExpiry }), _jsx(\"div\", { className: \"selectpicker-wide\", children: _jsx(\"select\", { id: \"choose-prepaid-expiry\", tabIndex: -1, className: \"selectpicker bs-select-hidden\", onChange: OnChange, value: prepaidExpirySelectedOptions, children: context.data.prepaidExpiryValues.map(expiry => {\n return (_jsx(\"option\", { value: expiry.key, children: expiry.value }, expiry.key));\n }) }) })] }) }), context.data.showMegaAdvancedFilters ?\n (_jsx(\"div\", { className: \"row pad-y-5\", children: _jsxs(\"div\", { className: \"col-xs-24\", children: [_jsx(\"h5\", { className: \"font-5\", children: context.data.resources.superMegaAdvanced }), _jsx(\"div\", { className: \"selectpicker-wide\", children: _jsx(\"select\", { id: \"choose-mega-advanced\", tabIndex: -1, className: \"selectpicker bs-select-hidden\", multiple: true, \"data-selected-text-format\": \"count>1\", title: context.data.resources.selectOptions, value: megaAdvancedSelectedOptions, onChange: OnChange, children: context.data.megaAdvancedOptions.map(o => {\n return (_jsx(\"option\", { value: o.key, children: o.value }, o.key));\n }) }) })] }) }))\n : null, _jsx(\"div\", { className: \"row pad-y-5\", children: _jsx(\"div\", { className: \"col-xs-24\", children: _jsx(BundleSelect, {}) }) })] })] }) }));\n}\n","import React, { Component } from 'react';\n\nexport default class ConnectionType extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n rawChecked: null\n };\n\n this.onCheckedChanged = this.onCheckedChanged.bind(this);\n }\n\n static getDerivedStateFromProps(props, state) {\n return props.value === state.rawValue\n ? { rawChecked: null }\n : null;\n }\n\n onCheckedChanged(e) {\n const checked = e.currentTarget.checked;\n this.setState({ rawChecked: checked });\n\n if (this.props.onCheckedChanged) {\n this.props.onCheckedChanged(this.props.item, checked);\n }\n }\n\n render() {\n const checked = this.state.rawChecked !== null\n ? this.state.rawChecked\n : this.props.checked;\n\n return (\n
\n \n \n
\n );\n }\n}\n","import React, { Component, createRef } from 'react';\n\nimport ConnectionType from './ConnectionType';\n\nexport default class ConnectionTab extends Component {\n\n constructor(props) {\n super(props);\n\n this.allShortUrls = [\n ...this.props.connectionTypeTiers.tier1ConnectionTypes,\n ...this.props.connectionTypeTiers.tier2ConnectionTypes,\n ...this.props.connectionTypeTiers.tier3ConnectionTypes\n ].map(p => p.shortUrl);\n\n const shortUrls = (props.criteria.connectionTypes || {}).values || [];\n this.state = {\n allUnselected: false,\n selectedShortUrls: shortUrls,\n isAllSelected: shortUrls.length === 0 ? true : false\n };\n\n this.wrapper = createRef();\n this.renderConnectionType = this.renderConnectionType.bind(this);\n this.handleConnectionTypeValueChanged = this.handleConnectionTypeValueChanged.bind(this);\n this.toggleConnections = this.toggleConnections.bind(this);\n this.toggleTier1 = this.toggleTier1.bind(this);\n this.toggleTier2 = this.toggleTier2.bind(this);\n this.toggleTier3 = this.toggleTier3.bind(this);\n this.toggleConnectionCategory = this.toggleConnectionCategory.bind(this);\n this.onSelectAllChange = this.onSelectAllChange.bind(this);\n this.renderConnectionTypeCategory = this.renderConnectionTypeCategory.bind(this);\n }\n\n\n isChecked(connectionType) {\n return this.state.selectedShortUrls.length === 0 && !this.state.allUnselected\n || connectionType && connectionType.shortUrl && this.state.selectedShortUrls.includes(connectionType.shortUrl);\n }\n\n handleConnectionTypeValueChanged(connectionType, checked) {\n console.log('handleConnectionTypeValueChanged', {\n item: connectionType.title,\n checked: checked\n });\n\n if (!connectionType || !connectionType.shortUrl) {\n const error = new Error('connectionType or the short url is undefined');\n error.data = connectionType;\n throw error;\n }\n\n if (checked) {\n this.AddItem(connectionType);\n } else {\n this.RemoveItem(connectionType);\n }\n }\n\n toggleConnections(connections) {\n let anyOneUnChecked = false;\n connections.forEach((connection) => {\n if (!this.isChecked(connection)) {\n anyOneUnChecked = true;\n }\n });\n\n if (anyOneUnChecked) {\n this.AddItems(connections);\n } else {\n this.RemoveItems(connections);\n }\n }\n\n updateConnectionTypes(allUnselected, selectedShortUrls) {\n const selected = selectedShortUrls.length !== this.allShortUrls.length\n ? selectedShortUrls\n : [];\n\n const isAllSelected = !allUnselected && selected.length===0;\n this.setState({\n allUnselected: allUnselected,\n selectedShortUrls: selected,\n isAllSelected: isAllSelected\n });\n this.props.updateConnectionTypes(selected);\n }\n\n AddItem(connectionType) {\n if (this.isChecked(connectionType)) {\n return;\n }\n\n let newValue = [...this.state.selectedShortUrls];\n newValue.push(connectionType.shortUrl);\n\n this.updateConnectionTypes(false, newValue);\n }\n\n AddItems(connectionTypes) {\n let newValue = [...this.state.selectedShortUrls];\n connectionTypes.forEach(t => {\n if (wo$.inArray(t.shortUrl, newValue) === -1) {\n newValue.push(t.shortUrl);\n }\n });\n\n this.updateConnectionTypes(false, newValue);\n }\n\n RemoveItem(connectionType) {\n if (!this.isChecked(connectionType)) {\n return;\n }\n\n // Removing last connection type\n if (this.state.selectedShortUrls.length === 1) {\n this.unSelectAll();\n return;\n }\n\n const current = this.state.selectedShortUrls.length === 0\n ? this.allShortUrls\n : this.state.selectedShortUrls;\n\n this.updateConnectionTypes(\n false,\n current.filter(p => p !== connectionType.shortUrl)\n );\n }\n\n RemoveItems(connectionTypes) {\n const current = this.state.selectedShortUrls.length === 0\n ? this.allShortUrls\n : this.state.selectedShortUrls;\n\n let newValue = [...current];\n connectionTypes.forEach(t => {\n const index = newValue.indexOf(t.shortUrl);\n if (index > -1) {\n newValue.splice(index, 1);\n }\n });\n\n if (newValue.length === 0) {\n this.unSelectAll();\n return;\n }\n\n this.updateConnectionTypes(false, newValue);\n }\n\n onSelectAllChange() {\n if(!this.state.isAllSelected){\n this.selectAll();\n }else{\n this.unSelectAll();\n }\n }\n selectAll() {\n this.updateConnectionTypes(false, []);\n }\n\n unSelectAll() {\n this.updateConnectionTypes(true, []);\n }\n\n renderConnectionType(connectionType) {\n const disabled =\n this.props.unavailableConnectionTypes &&\n this.props.unavailableConnectionTypes.length &&\n this.props.unavailableConnectionTypes.findIndex(c => connectionType.shortUrl === c.shortUrl) > -1;\n\n const checked = disabled === true\n ? false\n : this.isChecked(connectionType);\n\n return (\n \n );\n }\n\n toggleTier1() {\n this.toggleConnections(this.props.connectionTypeTiers.tier1ConnectionTypes);\n }\n\n toggleTier2() {\n this.toggleConnections(this.props.connectionTypeTiers.tier2ConnectionTypes);\n }\n\n toggleTier3() {\n this.toggleConnections(this.props.connectionTypeTiers.tier3ConnectionTypes);\n }\n\n toggleConnectionCategory = connectionTypes => () => {\n this.toggleConnections(connectionTypes);\n };\n\n renderConnectionTypeCategory(connectionTypeCategory, index) {\n let titleClass = '[ col-xs-24 ] [ col-sm-8 col-md-8 ] [ pad-x-5 pad-x-2-xs pad-x-2-sm ]';\n \n if (this.props.connectionTypeCategories.length === 3) {\n switch (index) {\n case 0:\n titleClass = '[ col-xs-24 ] [ col-sm-8 col-md-8 ] [ pad-x-5 pad-x-2-xs pad-x-2-sm ]';\n break;\n case 1:\n titleClass = '[ col-xs-24 ] [ col-sm-11 col-md-9 ] [ pad-x-5 pad-x-2-xs pad-x-2-sm ]';\n break;\n case 2:\n titleClass = '[ col-xs-24 ] [ col-sm-5 col-md-7 ] [ pad-x-5 pad-x-2-xs pad-x-2-sm ]';\n break;\n }\n }\n\n if (connectionTypeCategory)\n return (\n
\n \n

\n {connectionTypeCategory.title}\n

\n
\n
\n {connectionTypeCategory.connectionTypes.map(this.renderConnectionType)}\n
\n \n );\n }\n\n render() {\n function createMarkup(html) { return { __html: html }; }\n\n let connectionTypeCategoriesClass = 'display-flex flex-wrap-wrap justify-content-space-between';\n if (this.props.connectionTypeCategories && this.props.connectionTypeCategories.length === 2) {\n connectionTypeCategoriesClass = 'display-flex flex-wrap-wrap';\n }\n\n return (\n
\n
\n
\n
\n
\n {this.props.resources.connectionType}\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n {this.props.connectionTypeCategories.map(this.renderConnectionTypeCategory)}\n
\n
\n
\n
\n
\n );\n }\n}\n","import React, { useCallback, useEffect, useRef } from 'react';\n\nimport SliderWithLabel from '../../../../../../Shared/React/js/components/sliders/SliderWithLabel';\n\nconst ModalDataSlider = ({\n current,\n values,\n anyDataLabel,\n atLeastLabel,\n changeData\n}) => {\n const popoverRef = useRef(null);\n\n useEffect(() => {\n const popover = wo$(popoverRef.current);\n WhistleOut.applyPopover(popover);\n }, []);\n\n const getLabel = useCallback(labelText => {labelText}, []);\n\n return (\n <>\n \n \n );\n};\n\nexport default ModalDataSlider;\n","import defaultTo from 'lodash/defaultTo';\nimport parseInt from 'lodash/parseInt';\nimport React, { useCallback, useEffect, useRef } from 'react';\n\nimport ModalDataSlider from './ModalDataSlider';\n\nconst DataTab = ({\n currentData,\n values,\n includedDataLabel,\n anyDataLabel,\n atLeastLabel,\n buttonsContentFragment,\n changeData\n}) => {\n const buttonsContainerRef = useRef(null);\n\n const handleOnMount = useCallback(() => {\n const buttonsContainer = wo$(buttonsContainerRef.current);\n buttonsContainer\n .find('[data-min-data]')\n .off('click')\n .click(e => {\n const value = defaultTo(parseInt(e.currentTarget.dataset.minData), null);\n changeData(value);\n });\n }, [changeData]);\n\n useEffect(() => handleOnMount(), [handleOnMount]);\n\n return (\n <>\n
\n
\n
{includedDataLabel}
\n
\n
\n
\n
\n \n
\n
\n \n \n );\n};\n\nexport default DataTab;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nconst FaqTab = (props) => {\n return _jsx(\"div\", { dangerouslySetInnerHTML: { __html: props.html } });\n};\nexport default FaqTab;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React, { useCallback } from 'react';\nimport SliderWithLabel from '../../../../../../Shared/React/js/components/sliders/SliderWithLabel';\nconst ModalSpeedSlider = (props) => {\n const getLabel = useCallback((labelText) => _jsx(\"strong\", { className: \"font-5\", children: labelText }), []);\n return (_jsx(SliderWithLabel, { current: props.current, values: props.values, anyLabel: props.anyLabel, fromLabel: props.fromLabel, containerClassName: \"pad-t-4\", labelTemplate: getLabel, sliderClassName: \"rc-slider-container pad-x-3 pad-x-5-xs mar-y-2\", onValueChanged: props.onValueChanged }));\n};\nexport default ModalSpeedSlider;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useCallback, useEffect, useRef } from 'react';\nimport ModalSpeedSlider from './ModalSpeedSlider';\nconst SpeedTab = (props) => {\n const wrapper = useRef();\n const handleOnMount = useCallback(() => {\n const dom = wo$(wrapper.current);\n dom.find('[data-min-speed]')\n .off('click')\n .on('click', e => {\n const value = wo$(e.currentTarget).closest('[data-min-speed]').data('min-speed');\n props.onSpeedChange(value);\n });\n }, [props]);\n useEffect(() => handleOnMount(), [handleOnMount]);\n const createMarkup = (html) => {\n return { __html: html };\n };\n return (_jsxs(\"div\", { ref: wrapper, children: [_jsx(\"div\", { className: \"row pad-t-2 mar-b-3\", children: _jsx(\"div\", { className: \"col-md-24\", children: _jsx(\"h5\", { className: \"font-6 mar-0\", children: props.speedDescription }) }) }), _jsx(\"div\", { className: \"row mar-y-5 pad-b-6\", children: _jsx(\"div\", { className: \"col-md-20 col-md-offset-2\", children: _jsx(ModalSpeedSlider, { current: props.currentSpeed, values: props.speedValues, anyLabel: props.anyLabel, fromLabel: props.fromLabel, onValueChanged: props.onSpeedChange }) }) }), _jsx(\"div\", { className: \"row mar-b-5\", dangerouslySetInnerHTML: createMarkup(props.speedContentFragment) })] }));\n};\nexport default SpeedTab;\n","import React, { useCallback, useEffect, useState } from 'react';\n\nimport RangeSlider from '../../../../../../Shared/React/js/components/sliders/RangeSlider';\n\nconst ModalSpendSlider = ({\n //\n minValue: minValueProps,\n maxValue: maxValueProps,\n values,\n resources,\n updateSpend\n}) => {\n const [minValue, setMinValue] = useState(minValueProps);\n const [maxValue, setMaxValue] = useState(maxValueProps);\n\n useEffect(() => {\n setMinValue(minValueProps);\n }, [minValueProps]);\n\n useEffect(() => {\n setMaxValue(maxValueProps);\n }, [maxValueProps]);\n\n const getLabel = useCallback(\n (min, max) => {\n const lowestValue = values[0].key;\n const biggestValue = values[values.length - 1].key;\n\n min = min || lowestValue;\n max = max || biggestValue;\n if (min === lowestValue && max === biggestValue) {\n return resources.anyPrice;\n }\n\n const minValueText = values.find(v => v.key === min).value;\n const maxValueText = values.find(v => v.key === max).value;\n return minValueText + ' - ' + maxValueText;\n },\n [resources.anyPrice, values]\n );\n\n const handleOnValueUpdating = useCallback((min, max) => {\n setMinValue(min);\n setMaxValue(max);\n }, []);\n\n return (\n \n
\n {resources.monthly}: {getLabel(minValue, maxValue)}\n
\n
\n a.key)}\n minValue={minValue}\n maxValue={maxValue}\n onValueChanged={updateSpend}\n onValueUpdating={handleOnValueUpdating}\n />\n
\n
\n );\n};\n\nexport default ModalSpendSlider;\n","import React, { useCallback, useEffect, useState } from 'react';\n\nimport Slider from '../../../../../../Shared/React/js/components/sliders/Slider';\n\nconst ModalUpfrontSlider = ({ updateUpfront, ...props }) => {\n const [rawValue, setRawValue] = useState(null);\n\n useEffect(() => {\n setRawValue(props.value);\n }, [props.value]);\n\n const handleSliderValueUpdating = useCallback(value => {\n setRawValue(value);\n }, []);\n\n const getLabel = value => {\n return props.values.find(v => v.key === value).value;\n };\n\n const value = rawValue !== null ? rawValue : props.value;\n\n return (\n \n
\n {props.resources.maxUpfront}: {getLabel(value)}\n
\n
\n a.key)}\n current={value}\n onValueChanged={updateUpfront}\n onValueUpdating={handleSliderValueUpdating}\n />\n
\n
\n );\n};\n\nexport default ModalUpfrontSlider;\n","import defaultTo from 'lodash/defaultTo';\nimport React, { useCallback, useEffect, useRef } from 'react';\n\nimport ModalSpendSlider from './ModalSpendSlider';\nimport ModalUpfrontSlider from './ModalUpfrontSlider';\n\nconst SpendTab = ({\n // TODO: Use only required fields\n criteria,\n spendSlider,\n upfrontSlider,\n resources,\n spendContentFragment,\n updateSpend,\n updateUpfront,\n showMaxUpfrontSlider\n}) => {\n const wrapper = useRef(null);\n\n const onTierButtonClick = useCallback(\n e => {\n const { minSpend, maxSpend } = e.currentTarget.closest('[data-spend]').dataset;\n updateSpend(defaultTo(parseInt(minSpend), null), defaultTo(parseInt(maxSpend), null));\n },\n [updateSpend]\n );\n\n const handleOnMount = useCallback(() => {\n const dom = wo$(wrapper.current);\n dom.find('[data-spend]').off('click').click(onTierButtonClick);\n\n return () => dom.find('[data-spend]').off('click');\n }, [onTierButtonClick]);\n\n useEffect(() => handleOnMount(), [handleOnMount]);\n\n function createMarkup(html) {\n return { __html: html };\n }\n\n return (\n
\n
\n
\n
{resources.spend}
\n
\n
\n
\n {showMaxUpfrontSlider ? (\n <>\n
\n \n
\n
\n \n
\n \n ) : (\n
\n \n
\n )}\n
\n
\n
\n
\n
\n );\n};\n\nexport default SpendTab;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\n\nimport SuppliersList from '../../../../../../Shared/React/js/components/suppliers/SuppliersList';\n\n// TODO: Almost the same as Tablets SuppliersTab (except for networks), consider extracting common component\nexport default class SuppliersTab extends Component {\n constructor(props) {\n super(props);\n\n this.init(props);\n this.state = this.getInitialState(props);\n\n this.selectAll = this.selectAll.bind(this);\n this.selectNone = this.selectNone.bind(this);\n this.onSupplierChecked = this.onSupplierChecked.bind(this);\n this.onPersonalChange = this.onPersonalChange.bind(this);\n this.onBusinessChange = this.onBusinessChange.bind(this);\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\n this.onSelectAllChange = this.onSelectAllChange.bind(this);\n }\n\n init(props) {\n\n this.availableShortUrls = props.suppliers\n .filter(p => p.isAvailable)\n .map(p => p.shortUrl);\n\n this.personalShortUrls = props.suppliers\n .filter(p => p.isAvailable && p.isPersonal)\n .map(p => p.shortUrl);\n\n this.businessShortUrls = props.suppliers\n .filter(p => p.isAvailable && p.isBusiness)\n .map(p => p.shortUrl);\n\n this.isPersonalAvailable = this.personalShortUrls.length > 0;\n this.isBusinessAvailable = this.businessShortUrls.length > 0;\n }\n\n getInitialState(props) {\n const customerType = props.customerType;\n const isPersonal = !customerType || customerType.toLowerCase() === 'personal';\n\n let isBusiness = !customerType || customerType.toLowerCase() === 'business';\n if (!this.isBusinessAvailable)\n isBusiness = false;\n\n let selectedShortUrls = props.selectedShortUrls || [];\n if (selectedShortUrls.length === 0) {\n if (isPersonal) {\n selectedShortUrls = selectedShortUrls.concat(this.personalShortUrls);\n }\n if (isBusiness) {\n selectedShortUrls = selectedShortUrls.concat(this.businessShortUrls);\n }\n }\n\n return {\n selectedShortUrls: (selectedShortUrls || this.availableShortUrls).slice(),\n isPersonal: isPersonal,\n isBusiness: isBusiness,\n isAllSelected: this.getIsAllSelected(selectedShortUrls)\n };\n }\n\n onSupplierChecked(supplierId, checked) {\n const supplier = this.props.suppliers.filter(p => p.id === supplierId)[0];\n\n // Use .slice() to avoid modifying the source array\n let selectedShortUrls = this.state.selectedShortUrls.slice();\n if (checked) {\n selectedShortUrls.push(supplier.shortUrl);\n } else {\n selectedShortUrls = selectedShortUrls.filter(p => p !== supplier.shortUrl);\n }\n this.setState(\n {\n selectedShortUrls: selectedShortUrls,\n isPersonal: this.state.isPersonal || checked && supplier.isPersonal,\n isBusiness: this.state.isBusiness || checked && supplier.isBusiness && !supplier.isPersonal,\n isAllSelected: this.getIsAllSelected(selectedShortUrls)\n },\n this.onSelectionChanged\n );\n }\n\n onSelectAllChange() {\n if(!this.state.isAllSelected){\n this.selectAll();\n }else{\n this.selectNone();\n } \n }\n\n onPersonalChange() {\n const checked = !this.state.isPersonal;\n const selectedShortUrls = this.getSelectedUrlsForCustomerType(\n checked,\n this.personalShortUrls,\n this.state.isBusiness,\n this.businessShortUrls\n );\n\n this.setState(\n {\n isPersonal: checked,\n isAllSelected: this.getIsAllSelected(selectedShortUrls),\n selectedShortUrls: selectedShortUrls\n },\n this.onSelectionChanged\n );\n }\n\n onBusinessChange() {\n const checked = !this.state.isBusiness;\n const selectedShortUrls = this.getSelectedUrlsForCustomerType(\n checked,\n this.businessShortUrls,\n this.state.isPersonal,\n this.personalShortUrls\n );\n\n this.setState(\n {\n isBusiness: checked,\n isAllSelected: this.getIsAllSelected(selectedShortUrls),\n selectedShortUrls: selectedShortUrls\n },\n this.onSelectionChanged\n );\n }\n\n getIsAllSelected(selectedShortUrls) {\n return [...new Set(selectedShortUrls)].length === this.availableShortUrls.length;\n }\n\n getSelectedUrlsForCustomerType(typeChecked, typeShortUrls, otherTypeChecked, otherTypeShortUrls) {\n if (typeChecked) {\n // Add\n return this.state.selectedShortUrls.concat(\n typeShortUrls.filter(p => this.availableShortUrls.some(a => a === p))\n );\n }\n\n return this.state.selectedShortUrls.filter(s =>\n // Exclude all of this type\n !typeShortUrls.some(p => p === s) ||\n // but keep for the other if it's checked\n otherTypeChecked && otherTypeShortUrls.some(p => p === s));\n }\n\n selectAll() {\n // Ignore, if all are already selected\n if (this.state.selectedShortUrls.length === this.availableShortUrls.length) {\n return;\n }\n\n this.setState({\n selectedShortUrls: this.availableShortUrls,\n isPersonal: this.isPersonalAvailable && true,\n isBusiness: this.isBusinessAvailable && true,\n isAllSelected: true\n\n }, this.onSelectionChanged);\n }\n\n selectNone() {\n this.setState({\n selectedShortUrls: [],\n isPersonal: false,\n isBusiness: false,\n isAllSelected: false\n\n }, this.onSelectionChanged);\n }\n\n onSelectionChanged() {\n if (!this.props.onSelectionChanged) {\n return;\n }\n\n const selectedShortUrls = this.state.selectedShortUrls.length === this.availableShortUrls.length\n ? []\n : this.state.selectedShortUrls;\n\n const customerType = this.state.isPersonal && !this.state.isBusiness\n ? 'Personal'\n : this.state.isBusiness && !this.state.isPersonal\n ? 'Business'\n : null;\n\n this.props.onSelectionChanged(selectedShortUrls, customerType);\n }\n\n render() {\n const all = this.props.suppliers;\n const availableSuppliers = all.filter(item => !!item.isAvailable);\n\n const resources = this.props.resources;\n return (\n \n
\n
\n
\n {this.props.hasAddress ? resources.providersInYourArea : resources.providers}\n
\n
\n \n \n
\n
\n
\n
\n \n
\n
\n {(() => {\n const unavailableSuppliers = all.filter(s => !s.isAvailable);\n if (unavailableSuppliers.length) {\n return (\n
\n \n {this.props.resources.unavailableSuppliersInYourArea}\n \n \n
\n \n
\n
\n );\n }\n return null;\n })()}\n
\n
\n
\n
    \n
  • \n
    \n \n \n
    \n
  • \n {this.isBusinessAvailable && (\n
  • \n
    \n \n \n
    \n
  • \n )}\n
\n
\n
\n
\n );\n }\n}\n\n/* eslint-disable import/no-named-as-default-member */\nSuppliersTab.propTypes = {\n resources: PropTypes.object,\n selectedShortUrls: PropTypes.arrayOf(PropTypes.string),\n customerType: PropTypes.string,\n hasAddress: PropTypes.bool,\n suppliers: PropTypes.arrayOf(PropTypes.object)\n};\n/* eslint-enable */\n","import ClassNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React, { useMemo } from 'react';\n\n/* eslint-disable import/no-named-as-default-member */\nconst propTypes = {\n name: PropTypes.string.isRequired,\n isActive: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n checkActive: PropTypes.func,\n children: PropTypes.element.isRequired\n};\n/* eslint-enable */\n\nconst TabContent = ({ name, isActive: isActiveProps, children }) => {\n const isActive = useMemo(() => {\n return isActiveProps instanceof Function ? isActiveProps(name) : isActive;\n }, [isActiveProps, name]);\n\n return (\n
\n {children}\n
\n );\n};\n\nTabContent.propTypes = propTypes;\nexport default TabContent;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport ClassNames from 'classnames';\nimport React, { useCallback } from 'react';\nconst TabMenuItem = (props) => {\n const onSelected = useCallback((e) => {\n e.preventDefault();\n props.onSelected(e);\n }, [props]);\n return (_jsx(\"li\", { className: ClassNames('text-center mar-b-2', { active: props.isActive }), children: _jsx(\"a\", { href: \"\", \"data-tab-name\": props.name, onClick: onSelected, className: \"mar-r-2 pad-x-3 pad-x-1-xs pad-y-2 pad-y-4-xs text-left text-center-xs\", children: _jsx(\"strong\", { className: \"font-4 display-block position-relative\", children: _jsx(\"span\", { children: props.text }) }) }) }, props.name));\n};\nexport default TabMenuItem;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { produce } from 'immer';\nimport defaultTo from 'lodash/defaultTo';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { connect } from 'react-redux';\nimport AddressChangeTracker from '../../../../../../Shared/React/js/components/addressSearch/AddressChangeTracker';\nimport { actions as modalActions } from '../../../../../js/redux/modalSlice';\nimport AdvancedTab from './AdvancedTab';\nimport ConnectionTab from './connection/ConnectionTab';\nimport DataTab from './DataTab';\nimport FaqTab from './FaqTab';\nimport SpeedTab from './SpeedTab';\nimport SpendTab from './SpendTab';\nimport SuppliersTab from './SuppliersTab';\nimport TabContent from './TabContent';\nimport TabMenuItem from './TabMenuItem';\nfunction mapStateToProps(state, ownProps) {\n return produce(ownProps, draft => {\n var _a;\n const modalState = (_a = state.broadband) === null || _a === void 0 ? void 0 : _a.modal;\n draft.isOpen = defaultTo(modalState.isOpen, ownProps.isOpen);\n draft.activeTab = defaultTo(modalState.activeTab, ownProps.activeTab);\n draft.criteria = isEmpty(modalState.criteria) ? ownProps.criteria : modalState.criteria;\n });\n}\nconst mapDispatchToProps = Object.assign({}, modalActions);\nconst connector = connect(mapStateToProps, mapDispatchToProps);\nconst FilterModal = (props) => {\n const containerRef = useRef(null);\n // TODO: Consider removing\n const [criteria, setCriteria] = useState(props.criteria);\n const handleIsOpenChanged = useCallback(isOpen => {\n if (containerRef.current === null) {\n return;\n }\n const action = isOpen ? 'show' : 'hide';\n wo$(containerRef.current).modal(action);\n }, []);\n const handleOnCriteriaChanged = useCallback(criteria => {\n setCriteria(criteria);\n }, []);\n const handleOnTabSelected = useCallback((e) => {\n props.selectTab(e.currentTarget.getAttribute('data-tab-name'));\n }, [props]);\n const applyFilters = useCallback(() => {\n props.onCriteriaChanged(criteria);\n }, [criteria, props]);\n const handleAddressChange = useCallback(() => props.addressChanged(), [props]);\n const handleSuppliersChanged = useCallback((selectedShortUrls, customerType) => props.updateSelectedSuppliers({ keys: selectedShortUrls, customerType }), [props]);\n const handleUpdateSpend = useCallback((min, max) => props.updateSpend({ min, max }), [props]);\n const isTabActive = useCallback(name => name === props.activeTab, [props.activeTab]);\n const hideModal = useCallback(() => props.hideModal(), [props]);\n const handleOnMount = useCallback(() => {\n if (containerRef.current === null) {\n return;\n }\n const container = wo$(containerRef.current);\n container.on('hidden.bs.modal', hideModal);\n // Unmount\n return () => {\n container.off('hidden.bs.modal', hideModal);\n };\n }, [hideModal]);\n useEffect(() => handleOnMount(), [handleOnMount]);\n useEffect(() => handleIsOpenChanged(props.isOpen), [handleIsOpenChanged, props.isOpen]);\n useEffect(() => handleOnCriteriaChanged(props.criteria), [handleOnCriteriaChanged, props.criteria]);\n const totalConnectionTypes = props.connectionTypeTiers.tier1ConnectionTypes.length +\n props.connectionTypeTiers.tier2ConnectionTypes.length +\n props.connectionTypeTiers.tier3ConnectionTypes.length;\n const tabNames = useMemo(() => {\n const items = ['spend', 'speed', 'data'];\n if (!props.hideSupplierFilter) {\n items.push('providers');\n }\n if (totalConnectionTypes > 1) {\n items.push('connection');\n }\n items.push('advanced');\n if (props.faqContentFragment && props.faqContentFragment.length > 0) {\n items.push('faq');\n }\n return items;\n }, [props.faqContentFragment, props.hideSupplierFilter, totalConnectionTypes]);\n const tabMenuItems = tabNames.map(name => {\n //debugger; // eslint-disable-line no-debugger\n const text = get(props.resources, name);\n return (_jsx(TabMenuItem, { name: name, isActive: name === props.activeTab, text: text, onSelected: handleOnTabSelected }, name));\n });\n if (!props.isOpen) {\n return null;\n }\n return (_jsxs(\"div\", { ref: containerRef, id: \"modal-results-broadband\", className: \"modal fade\", tabIndex: -1, role: \"dialog\", \"aria-labelledby\": \"modal-results-broadband\", \"aria-hidden\": \"true\", children: [_jsx(AddressChangeTracker, { onAddressChange: handleAddressChange }), _jsx(\"div\", { className: \"modal-dialog modal-lg\", children: _jsxs(\"div\", { className: \"modal-content\", children: [_jsxs(\"div\", { className: \"modal-header pad-t-5 pad-b-3\", children: [_jsxs(\"strong\", { className: \"font-7\", id: \"modal-results-broadband-filter\", children: [props.resources.filter, _jsxs(\"span\", { className: \"hidden-xs\", children: [\" \", props.resources.results] })] }), _jsx(\"div\", { className: \"float-right position-relative-xs\", children: _jsx(\"button\", { className: \"btn btn-info\", \"data-dismiss\": \"modal\", children: _jsx(\"span\", { className: \"fa fa-times font-5\" }) }) })] }), _jsxs(\"div\", { className: \"modal-body\", children: [_jsx(\"div\", { className: \"row\", children: _jsx(\"div\", { className: \"[ col-xs-24 ] [ mar-b-5 ] \", children: _jsx(\"ul\", { className: \"nav nav-pills\", children: tabMenuItems }) }) }), _jsx(\"div\", { className: \"row pad-x-4\", children: _jsx(\"div\", { className: \"[ col-xs-24 ]\", children: _jsxs(\"div\", { className: \"tab-content\", children: [_jsx(TabContent, { name: \"speed\", isActive: isTabActive, children: _jsx(SpeedTab, { currentSpeed: criteria.speed, speedValues: props.speedSlider.values, anyLabel: props.speedSlider.anySpeedLabel, fromLabel: props.speedSlider.fromLabel, speedDescription: props.resources.speedDescription, speedContentFragment: props.speedContentFragment, onSpeedChange: props.updateSpeed }) }), _jsx(TabContent, { name: \"data\", isActive: isTabActive, children: _jsx(DataTab, { currentData: criteria.data, values: props.dataSlider.values, includedDataLabel: props.resources.includedData, anyDataLabel: props.dataSlider.anyDataLabel, atLeastLabel: props.dataSlider.fromLabel, buttonsContentFragment: props.dataContentFragment, changeData: props.updateData }) }), _jsx(TabContent, { name: \"spend\", isActive: isTabActive, children: _jsx(SpendTab, { resources: props.resources, criteria: criteria, spendSlider: props.spendSlider, upfrontSlider: props.upfrontSlider, spendContentFragment: props.spendContentFragment, updateSpend: handleUpdateSpend, updateUpfront: props.updateUpfront, showMaxUpfrontSlider: props.showMaxUpfrontSlider }) }), _jsx(TabContent, { name: \"providers\", isActive: isTabActive, children: _jsx(SuppliersTab, { resources: props.resources, selectedShortUrls: criteria.common.suppliers.values, customerType: criteria.common.customerType, hasAddress: !!criteria.common.address, onSelectionChanged: handleSuppliersChanged, suppliers: props.suppliers.items\n .slice()\n .sort((a, b) => a.name.localeCompare(b.name)) }, \"suppliers\") }), _jsx(TabContent, { name: \"connection\", isActive: isTabActive, children: _jsx(ConnectionTab, { resources: props.resources, criteria: criteria, connectionTypeTiers: props.connectionTypeTiers, connectionTypeCategories: props.connectionTypeCategories, allConnectionTypes: props.allConnectionTypes, showTvChannels: props.showTvChannels, connectionTypesContentFragment: props.connectionTypesContentFragment, unavailableConnectionTypes: props.unavailableConnectionTypes, updateConnectionTypes: props.updateConnectionTypes }) }), _jsx(TabContent, { name: \"advanced\", isActive: isTabActive, children: _jsx(AdvancedTab, {}) }), _jsx(TabContent, { name: \"faq\", isActive: isTabActive, children: _jsx(FaqTab, { html: props.faqContentFragment }) })] }) }) })] }), _jsx(\"div\", { className: \"modal-footer pad-t-5 pad-b-3\", children: _jsx(\"div\", { className: \"row\", children: _jsxs(\"div\", { className: \"col-xs-24 text-right\", children: [_jsx(\"button\", { className: \"btn btn-info\", \"data-dismiss\": \"modal\", children: props.resources.cancel }), _jsx(\"button\", { className: \"btn btn-primary mar-l-2\", onClick: applyFilters, \"data-dismiss\": \"modal\", children: props.resources.applyAll })] }) }) })] }) })] }));\n};\nexport default connector(FilterModal);\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { produce } from 'immer';\nimport defaultTo from 'lodash/defaultTo';\nimport isString from 'lodash/isString';\nimport React, { useCallback, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { actions as searchActions } from '../../../../js/redux/searchSlice';\nimport DataFilter from './main/DataFilter';\nimport ErrorPanel from './main/ErrorPanel';\nimport ShowFiltersButton from './main/ShowFiltersButton';\nimport SpeedFilter from './main/SpeedFilter';\nimport SuppliersFilter from './main/SuppliersFilter';\nimport FilterModal from './modal/FilterModal';\nimport { SearchFilterContext } from './SearchFilterContext';\nconst ModalOpenEventName = 'Filters.OpenModal';\nconst mapStateToProps = (state, ownProps) => {\n return produce(ownProps, draft => {\n const productAreaState = state.broadband;\n draft.modal = defaultTo(productAreaState === null || productAreaState === void 0 ? void 0 : productAreaState.modal, ownProps.modal);\n });\n};\nconst mapDispatchToProps = {\n updateCriteria: searchActions.updateCriteria,\n updateData: searchActions.updateData,\n updateSpeed: searchActions.updateSpeed,\n updateSuppliers: searchActions.updateSuppliers\n};\nconst connector = connect(mapStateToProps, mapDispatchToProps);\nconst Filters = (props) => {\n const handleShowModal = useCallback((tabName) => {\n if (isString(tabName)) {\n props.showModal(tabName);\n }\n else {\n props.showModal();\n }\n }, [props]);\n const handleOnMount = useCallback(() => {\n wo$('body').on(ModalOpenEventName, handleShowModal);\n // Unmount\n return () => {\n wo$('body').off(ModalOpenEventName, handleShowModal);\n };\n }, [handleShowModal]);\n const handleShowAllProviders = useCallback(() => {\n handleShowModal('providers');\n }, [handleShowModal]);\n const handleRetry = useCallback(() => {\n props.legacyActions.actions.searchRetry();\n }, [props.legacyActions.actions]);\n const handleModalCriteriaChanged = useCallback((criteria) => {\n props.updateCriteria(criteria);\n }, [props]);\n const selectedSuppliers = props.criteria.common.suppliers;\n // TODO: Do not use properties with the same name as existing built-in functions, i.e. Array.values()\n // HACK: To avoid confusion between Array.values() and our custom property with the same name\n const selectedSupplierKeys = Array.isArray(selectedSuppliers) ? selectedSuppliers : selectedSuppliers === null || selectedSuppliers === void 0 ? void 0 : selectedSuppliers.values;\n const isBusinessOnly = props.criteria.common.customerType && props.criteria.common.customerType.toLowerCase() === 'business';\n const getSupplierKey = useCallback(item => item.shortUrl, []);\n useEffect(() => handleOnMount(), [handleOnMount]);\n return (_jsx(React.Fragment, { children: _jsxs(SearchFilterContext.Provider, { value: { data: props.filtersData, criteria: props.criteria }, children: [_jsx(FilterModal, Object.assign({}, props.filtersData, { criteria: props.criteria, suppliers: props.suppliers, onCriteriaChanged: handleModalCriteriaChanged, hideSupplierFilter: props.hideSupplierFilter, showMaxUpfrontSlider: props.showMaxUpfrontSlider, unavailableConnectionTypes: props.unavailableConnectionTypes }), \"filters\"), _jsx(\"div\", { id: \"filters-original\", children: _jsxs(\"div\", { className: \"row pad-y-6 pad-y-3-sm pad-b-0-xs filters-wrapper\", children: [_jsx(SuppliersFilter, { suppliers: props.suppliers, selectedKeys: selectedSupplierKeys, isBusinessOnly: isBusinessOnly, showHeader: true, showTextOnly: props.hideSupplierFilter, textContent: props.filtersData.defaultSupplierAvailableText, onChanged: props.updateSuppliers, onShowAll: handleShowAllProviders, getKey: getSupplierKey }), _jsx(\"div\", { className: \"col-xs-24 hidden-sm col-md-8 col-lg-9 filters-2\", children: _jsxs(\"div\", { className: \"row\", children: [_jsx(SpeedFilter, Object.assign({}, props.filtersData.speedSlider, { current: props.criteria.speed, onChanged: props.updateSpeed })), _jsx(DataFilter, Object.assign({}, props.filtersData.dataSlider, { current: props.criteria.data, onChanged: props.updateData }))] }) }), props.filtersData.showAllFilters ? (_jsx(ShowFiltersButton, { title: props.filtersData.resources.filters, onClick: handleShowModal })) : null] }) }), _jsx(ErrorPanel, { title: props.filtersData.resources.errorUpdatingResults, description: props.filtersData.resources.pleaseTryAgain, retryLabel: props.filtersData.resources.retry, onRetry: handleRetry })] }) }));\n};\nexport default connector(Filters);\n","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { produce } from 'immer';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqual from 'lodash/isEqual';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { connect } from 'react-redux';\nimport AddressChangeTracker from '../../../../../Shared/React/js/components/addressSearch/AddressChangeTracker';\nimport { dispatchAddressChangedEvent } from '../../../../../Shared/React/js/components/addressSearch/AddressSearch';\nimport AppComponent from '../../../../../Shared/React/js/components/AppComponent';\nimport { usePrevious } from '../../../../../Shared/React/js/utils/Hooks';\nimport { broadbandApi } from '../../../../js/redux/broadbandApi';\nimport { actions as broadbandActions, mapSearchModelToState } from '../../../../js/redux/broadbandSlice';\nimport { actions as modalActions } from '../../../../js/redux/modalSlice';\nimport { actions } from '../../../../js/redux/searchSlice';\nimport LegacyActions from '../../actions/BroadbandActions';\nimport { generateQueryString } from '../../utils/BroadbandQueryString';\nimport Filters from '../filters/Filters';\nimport { AvailabilityCheckModal } from '../product/availabilityCheck/AvailabilityCheckPanel';\nconst connector = connect((state, ownProps) => {\n var _a, _b;\n const isInitialised = !isEmpty((_a = state.broadband) === null || _a === void 0 ? void 0 : _a.search);\n const searchState = isInitialised ? (_b = state.broadband) === null || _b === void 0 ? void 0 : _b.search : mapSearchModelToState(ownProps.initialState);\n return produce(ownProps, draft => {\n draft.criteria = searchState.criteria;\n draft.searchSettings = searchState.settings;\n draft.isInitialised = isInitialised;\n });\n}, Object.assign({ init: broadbandActions.init, searchSuccess: actions.searchSuccess, searchError: actions.searchError, showModal: modalActions.showModal }, actions));\nconst QueryHelper = {\n getQueryString: (criteria, settings) => {\n return isEmpty(criteria) ? undefined : generateQueryString(criteria, undefined, settings.embeddedMode);\n },\n isEquivalent: (target, compareTo, settings) => {\n const resetIgnoredProperties = (criteria) => {\n // Properties that are not used by the search\n // should be ignored for triggering the search request\n return produce(criteria, draft => {\n // Whould be good to fetch the results per tab for better performance and smaller page size,\n // instead of fetching all tabs at once as we do now\n draft.common.tab = null;\n });\n };\n const getClearQuery = (c) => QueryHelper.getQueryString(resetIgnoredProperties(c), settings);\n const query = getClearQuery(target);\n return compareTo.some(c => isEqual(query, getClearQuery(c)));\n }\n};\nconst SearchComponent = (props) => {\n var _a, _b;\n const isInitialised = useRef(false);\n const [isProgress, setIsProgress] = useState(false);\n const [criteria, setCriteria] = useState(props.criteria);\n const previousCriteria = usePrevious(criteria);\n const defaultCriteria = useRef(cloneDeep(criteria));\n const [triggerGetSearchResultsQuery, searchResultsQuery] = broadbandApi.useLazyGetSearchResultsQuery();\n // TODO: Rewrite this\n const legacyActions = useRef(new LegacyActions());\n useEffect(() => {\n const selector = '#search-results-partial';\n const startProgress = () => WhistleOut.startProgress(selector, 0.1, 50);\n const endProgress = () => WhistleOut.endProgress(selector);\n if (isProgress) {\n startProgress();\n }\n else {\n endProgress();\n }\n return () => endProgress();\n }, [isProgress]);\n const searchPageRefresh = useCallback((criteria) => {\n legacyActions.current.searchPageRefresh(criteria, props.searchSettings.searchUrl, props.searchSettings.suppressCoverageCheck, props.searchSettings.coverageUrl);\n }, [props.searchSettings]);\n const search = useCallback((criteria, force) => {\n triggerGetSearchResultsQuery({\n baseUrl: props.initialState.resultsUrl,\n queryString: QueryHelper.getQueryString(criteria, props.searchSettings)\n }, !force);\n }, [props.initialState.resultsUrl, props.searchSettings, triggerGetSearchResultsQuery]);\n const handleShowModal = useCallback((tabName) => {\n props.showModal({\n tabName,\n criteria\n });\n }, [props, criteria]);\n const retrySearch = useCallback(() => {\n if (props.initialState.embeddedMode) {\n searchPageRefresh(criteria);\n return;\n }\n search(criteria, true);\n }, [props.initialState.embeddedMode, search, searchPageRefresh, criteria]);\n legacyActions.current.props = {\n embeddedMode: props.initialState.embeddedMode,\n nbnConnectionTypes: (_a = props.initialState.filters) === null || _a === void 0 ? void 0 : _a.nbnConnectionTypes,\n criteria: criteria,\n defaultCriteria: defaultCriteria.current,\n coverage: props.initialState.state.coverage,\n coverageAddress: props.initialState.state.coverageAddress,\n searchSettings: props.searchSettings\n };\n legacyActions.current.actions = {\n searchSuccess: props.searchSuccess,\n searchError: props.searchError,\n searchRetry: retrySearch,\n disableMaximumResultLimits: props.disableMaximumResultLimits,\n hideFeaturedResults: props.hideFeaturedResults,\n includeNbnConnections: props.includeNbnConnections,\n updateConnectionTypes: props.updateConnectionTypes,\n updateContractType: props.updateContractType,\n updateCriteria: props.updateCriteria,\n updateData: props.updateData,\n updateModem: props.updateModem,\n updatePlanSummarySupplier: props.updatePlanSummarySupplier,\n updateSort: props.updateSort,\n updateSpeed: props.updateSpeed,\n updateSuppliers: props.updateSuppliers,\n updateTab: props.updateTab,\n showModal: handleShowModal,\n widenResults: props.widenResults\n };\n const handleAddressChanged = useCallback((address) => {\n var _a;\n if ((address === null || address === void 0 ? void 0 : address.label) === ((_a = criteria.common.address) === null || _a === void 0 ? void 0 : _a.label)) {\n return;\n }\n dispatchAddressChangedEvent({\n // TODO: Fix eslint error\n // eslint-disable-next-line @typescript-eslint/no-invalid-this\n sender: this,\n address: address\n });\n props.updateAddress(address);\n WhistleOut.setCoverageCookie(null);\n }, [(_b = criteria.common.address) === null || _b === void 0 ? void 0 : _b.label, props]);\n const handleSpeedTestResultsChanged = useCallback((e) => {\n if (!e.detail) {\n return;\n }\n legacyActions.current.bindResults();\n }, []);\n const handleTransactUrlChange = useCallback(() => {\n setIsProgress(false);\n }, []);\n const handleShowPlans = useCallback((address) => {\n setIsProgress(false);\n WhistleOut.scrollTo('body');\n handleAddressChanged(address);\n }, [handleAddressChanged]);\n useEffect(() => {\n const init = () => {\n if (!isInitialised.current) {\n props.init(props.initialState);\n legacyActions.current.init();\n isInitialised.current = true;\n }\n };\n init();\n wo$(document).on('woSpeedTest.resultUpdated', handleSpeedTestResultsChanged);\n return () => {\n wo$(document).off('woSpeedTest.resultUpdated', handleSpeedTestResultsChanged);\n };\n }, [handleSpeedTestResultsChanged, props]);\n useEffect(() => setCriteria(props.criteria), [props.criteria]);\n useEffect(() => setIsProgress(searchResultsQuery.isFetching), [searchResultsQuery.isFetching]);\n useEffect(() => {\n const onCriteriaChange = () => {\n if (!props.isInitialised) {\n return;\n }\n if (QueryHelper.isEquivalent(criteria, [previousCriteria, props.searchSettings.resultsSearchCriteria], props.searchSettings)) {\n return;\n }\n if (props.initialState.embeddedMode && !props.searchSettings.enforceAjax) {\n searchPageRefresh(criteria);\n return;\n }\n search(criteria);\n };\n onCriteriaChange();\n }, [\n criteria,\n previousCriteria,\n props.initialState.embeddedMode,\n props.isInitialised,\n props.searchSettings,\n search,\n searchPageRefresh\n ]);\n useEffect(() => {\n const onSearchResult = () => {\n if (searchResultsQuery.isFetching) {\n return;\n }\n if (searchResultsQuery.error) {\n legacyActions.current.onAjaxSearchError();\n return;\n }\n if (!searchResultsQuery.data) {\n return;\n }\n legacyActions.current.onAjaxSearchSuccess(searchResultsQuery.data);\n };\n onSearchResult();\n }, [searchResultsQuery.data, searchResultsQuery.error, searchResultsQuery.isFetching]);\n const addressSearch = useMemo(() => props.initialState.addressSearch, [props.initialState.addressSearch]);\n return (_jsxs(_Fragment, { children: [_jsx(AddressChangeTracker, { onAddressChange: handleAddressChanged, initialValue: criteria.common.address }), _jsx(AvailabilityCheckModal, { shouldOpenTransactLink: true, address: criteria.common.address, countryCode: addressSearch.countryCode, addressSearchPlaceHolder: addressSearch.text.addressSearchPlaceHolder, tooltipLink: addressSearch.text.tooltipLink, tooltipDescription: addressSearch.text.tooltipDescription, queryDelay: addressSearch.queryDelay, apiKey: addressSearch.apiKey, isSearchPage: !props.searchSettings.embeddedMode, onTransactUrlChange: handleTransactUrlChange, onShowPlans: handleShowPlans }), props.initialState.filters && (_jsx(Filters, { filtersData: props.initialState.filters, suppliers: props.searchSettings.suppliers, criteria: criteria, hideSupplierFilter: props.searchSettings.hideSupplierFilter, showMaxUpfrontSlider: props.searchSettings.showMaxUpfrontSlider, unavailableConnectionTypes: props.searchSettings.unavailableConnectionTypes, legacyActions: legacyActions.current, showModal: handleShowModal }))] }));\n};\nconst SearchConnected = connector(SearchComponent);\nexport default function Search(props) {\n return (_jsx(AppComponent, { children: _jsx(SearchConnected, { initialState: props }) }));\n}\n","import { initReact } from '../../../Shared/js/vendor/react';\nimport * as BroadbandComponents from './components';\n\nfunction initBroadbandComponents() {\n initReact();\n window.BroadbandComponents = window.BroadbandComponents || BroadbandComponents;\n}\n\ninitBroadbandComponents();\n","import React, { useContext, useMemo } from 'react';\nimport { Provider as ReduxProvider, ReactReduxContext } from 'react-redux';\nimport { BrowserRouter, useInRouterContext } from 'react-router-dom';\n\nimport { store } from '../../../js/redux/store';\n\nconst ReduxEnabled = props => {\n const context = useContext(ReactReduxContext);\n\n const wrapper = useMemo(() => {props.children}, [props.children]);\n\n const isInContext = useMemo(() => !!context, [context]);\n return isInContext ? <>{props.children} : wrapper;\n};\n\nconst RouterEnabled = props => {\n const isInRouter = useInRouterContext();\n const wrapper = useMemo(() => {props.children}, [props.children]);\n return isInRouter ? <>{props.children} : wrapper;\n};\n\nconst AppComponent = props => {\n return (\n \n \n {props.children}\n \n \n );\n};\n\nexport default AppComponent;\n","import ClassNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React, { Component, createRef } from 'react';\n\nimport { initBootstrapSelect } from '../../../js/vendor/deferred/bootstrap-select';\n\nexport default class Select extends Component {\n constructor(props) {\n super(props);\n\n this.id = Select.counter++;\n this.elementId = this.props.elementId || `react-select-${this.id}`;\n\n this.state = {\n initiallySelected: JSON.stringify(this.props.selectedValues),\n rawSelectedValues: this.props.selectedValues\n };\n\n this.refSelect = createRef();\n this.getContainerDom = this.getContainerDom.bind(this);\n this.onChange = this.onChange.bind(this);\n }\n\n static getDerivedStateFromProps(props, state) {\n const initiallySelected = JSON.stringify(props.selectedValues);\n return initiallySelected !== state.initialAddress\n ? {\n initiallySelected: initiallySelected,\n rawSelectedValues: props.selectedValues\n }\n : null;\n }\n\n async componentDidMount() {\n await initBootstrapSelect();\n const select = wo$(this.refSelect.current);\n WhistleOut.applySelectPicker(select);\n WhistleOut.applySelectPickersStyle(this.getContainerDom());\n\n this.setSelectedValues(this.state.rawSelectedValues);\n select.on('change', this.onChange);\n }\n\n componentWillUnmount() {\n wo$(this.refSelect.current).off('change', this.onChange);\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.disabled !== this.props.disabled) {\n wo$(this.refSelect.current).selectpicker('refresh');\n WhistleOut.applySelectPickersStyle(this.getContainerDom());\n }\n\n this.setSelectedValues(this.state.rawSelectedValues);\n }\n\n optionGroupsAreSame(a, b) {\n for (let i = 0; i < a.length; i++) {\n if (!a[i] || !b[i]) {\n return false;\n }\n\n return a[i] === b[i] || a[i].label === b[i].label || a[i].values === b[i].values;\n }\n }\n\n getContainerDom() {\n const bootStrapSelect = wo$(this.refSelect.current).prevUntil('div.bootstrap-select').parent();\n return bootStrapSelect.parent();\n }\n\n setSelectedValues(values) {\n wo$(this.refSelect.current).selectpicker('val', this.mapValues(values));\n }\n\n mapValues(values) {\n return Array.isArray(values) ? values.map(this.mapValue) : this.mapValue(values);\n }\n\n mapValue(value) {\n return value !== undefined && value !== null ? value.toString() : '';\n }\n\n onChange() {\n const selectedValues = wo$(this.refSelect.current).selectpicker('val');\n this.setState({\n rawSelectedValues: selectedValues\n });\n\n console.log('select.onChange:', selectedValues);\n\n if (this.props.onChange) {\n this.props.onChange(selectedValues);\n }\n }\n\n render() {\n const groups = this.props.optionGroups || [];\n const selectClassName = ClassNames(\n 'selectpicker bs-select-hidden', //\n this.props.selectClassName\n );\n\n const renderItem = item => {\n return (\n \n );\n };\n\n return (\n 1\"\n data-width={this.props.dataWidth}\n data-style={this.props.dataStyle}\n data-title={this.props.title}\n disabled={this.props.disabled}\n >\n {groups.map((group, index) => (\n \n {group.values.map(renderItem)}\n \n ))}\n \n );\n }\n}\n\n/* eslint-disable import/no-named-as-default-member */\nSelect.propTypes = {\n elementId: PropTypes.string,\n optionGroups: PropTypes.arrayOf(PropTypes.object),\n selectedValues: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.arrayOf(PropTypes.number),\n PropTypes.arrayOf(PropTypes.bool)\n ]),\n // TODO: Rename to className\n selectClassName: PropTypes.string,\n tabIndex: PropTypes.number,\n hidden: PropTypes.bool,\n multiple: PropTypes.bool,\n onChange: PropTypes.func,\n dataWidth: PropTypes.string,\n dataStyle: PropTypes.string,\n disabled: PropTypes.bool\n};\n/* eslint-enable */\n\nSelect.defaultProps = {\n tabIndex: -1,\n hidden: false,\n multiple: false,\n disabled: false\n};\n\nSelect.counter = 0;\n","import React, { Component } from 'react';\nimport { renderToStaticMarkup } from 'react-dom/server';\n\nimport AddressHelper from '../../utils/AddressHelper';\nimport AddressChangeTracker from '../addressSearch/AddressChangeTracker';\n\nexport default class AddressMap extends Component {\n constructor(props) {\n super(props);\n\n this.id = AddressMap.counter++;\n this.mapWrapperId = `header-map-wrapper-${this.id}`;\n\n this.state = {\n address: this.props.address,\n marker: null,\n isSmallScreen: this.isSmallScreen()\n };\n\n this.onAddressChange = this.onAddressChange.bind(this);\n this.onWindowResize = this.onWindowResize.bind(this);\n this.onResizeEnd = this.onResizeEnd.bind(this);\n this.getMapContainer = this.getMapContainer.bind(this);\n this.renderStaticMap = this.renderStaticMap.bind(this);\n }\n\n componentDidMount() {\n addEventListener('DOMContentLoaded', async () => {\n this.mapboxgl = await import(/* webpackChunkName: \"mapbox\" */ 'mapbox-gl');\n window.addEventListener('resize', this.onWindowResize);\n this.setView(this.state.address);\n });\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.onWindowResize);\n }\n\n componentDidUpdate() {\n this.setView(this.state.address);\n }\n\n onAddressChange(address) {\n if (this.props.ignoreAddressChange || AddressHelper.isEqual(address, this.state.address)) {\n return;\n }\n\n this.setState({ address: address });\n }\n\n getMapContainer() {\n return wo$(`#${this.props.mapContainerId}`)[0];\n }\n\n onWindowResize() {\n if (this.resizeTimer) {\n // HACK: Reset the timeout to let the resize finish\n // See: https://css-tricks.com/snippets/jquery/done-resizing-event/\n clearTimeout(this.resizeTimer);\n }\n\n this.resizeTimer = setTimeout(this.onResizeEnd, 250);\n }\n\n isSmallScreen() {\n return window.innerWidth < 992;\n }\n\n onResizeEnd() {\n const isSmallScreen = this.isSmallScreen();\n if (isSmallScreen === this.state.isSmallScreen) {\n return;\n }\n\n this.setState({ isSmallScreen: isSmallScreen }, () => {\n if (this.useStaticMap()) {\n return;\n }\n\n const mapContainer = this.getMapContainer();\n if (isSmallScreen) {\n if (mapContainer.innerHTML) {\n mapContainer.innerHTML = '';\n window.dynamicMap = null;\n\n this.onMapRemove();\n }\n } else {\n if (!mapContainer.innerHTML) {\n this.initMap();\n }\n }\n });\n }\n\n onMapRemove() {\n if (this.props.onMapRemove) {\n this.props.onMapRemove();\n }\n }\n\n onMapInit() {\n if (this.props.onMapInit) {\n this.props.onMapInit();\n }\n }\n\n initMap() {\n if (window.dynamicMap || typeof window === 'undefined') {\n return;\n }\n\n console.log('initialising header map');\n\n const location = this.getLocation(this.state.address, this.props.countryCode);\n const center = location.center || {};\n const zoom = location.zoom;\n\n this.setState({\n center: center,\n zoom: zoom\n });\n\n const mapContainer = (\n \n );\n\n this.getMapContainer().innerHTML = renderToStaticMarkup(mapContainer);\n this.onMapInit();\n\n const map = new this.mapboxgl.Map({\n accessToken: this.props.apiKey,\n container: this.mapWrapperId,\n style: `mapbox://styles/${this.props.styleId}`,\n\n center: center,\n zoom: zoom,\n\n interactive: false,\n trackResize: true,\n attributionControl: false\n });\n\n map.addControl(new this.mapboxgl.AttributionControl(), 'bottom-right');\n\n this.offset(map, center);\n this.setMarker(map, center);\n\n window.dynamicMap = map;\n }\n\n clearMarker() {\n if (this.state.marker) {\n this.state.marker.remove();\n }\n }\n\n setMarker(map, center) {\n if (AddressHelper.isCountry(this.state.address)) {\n return;\n }\n\n const cdn = 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.7';\n var markerIconUrl =\n wo$(`#${this.props.mapContainerId}`).data('marker-url') || `${cdn}/images/marker-icon-2x.png`;\n\n var el = document.createElement('div');\n el.className = 'marker';\n el.style.backgroundImage = `url(${markerIconUrl})`;\n el.style.backgroundSize = 'contain';\n el.style.backgroundRepeat = 'no-repeat';\n el.style.width = '27px';\n el.style.height = '41px';\n\n const marker = new this.mapboxgl.Marker(el, { anchor: 'bottom' })\n .setLngLat([center.lng, center.lat])\n .addTo(map);\n\n this.setState({ marker: marker });\n }\n\n setView(address) {\n if (this.useStaticMap()) {\n this.renderStaticMap();\n return;\n }\n\n if (typeof window === 'undefined' || this.state.isSmallScreen) {\n return;\n }\n\n const map = window.dynamicMap;\n if (!map) {\n this.initMap();\n return;\n }\n\n const currentCenter = map.getCenter();\n const location = this.getLocation(address, this.props.countryCode);\n const newCenter = location.center;\n if (currentCenter.lat === newCenter.lat && currentCenter.lng === newCenter.lng) {\n return;\n }\n\n this.setCenter(map, newCenter, location.zoom);\n }\n\n setCenter(map, center, zoom) {\n if (JSON.stringify(center) === JSON.stringify(this.state.center)) {\n return;\n }\n\n this.setState({\n center: center,\n zoom: zoom\n });\n\n this.clearMarker();\n\n if (map.getZoom() !== zoom) {\n map.setZoom(zoom);\n }\n\n const currentCenter = map.getCenter();\n if (currentCenter.lng !== center.lng || currentCenter.lat !== center.lat) {\n map.panTo([center.lng, center.lat]);\n }\n\n if (AddressHelper.isCountry(this.state.address)) {\n return;\n }\n\n this.offset(map, center);\n this.setMarker(map, center);\n }\n\n offset(map, center) {\n const targetLatLng = this.getOffsetLatLng(map, center);\n map.panTo(targetLatLng);\n }\n\n getOffsetLatLng(map, center) {\n const offset = this.getOffset();\n\n // See: https://github.com/Leaflet/Leaflet/issues/859\n const targetPoint = map.project(center).sub(new this.mapboxgl.Point(offset.x, offset.y));\n\n return map.unproject(targetPoint);\n }\n\n getOffset() {\n if (this.props.getOffset) {\n return this.props.getOffset();\n }\n\n const wrapperRect = wo$(`#${this.mapWrapperId}`)[0].getBoundingClientRect();\n const centerBetween = this.props.getCenterBoundaries();\n\n const expected = {\n x: this.getCenter(centerBetween.left, centerBetween.right),\n y: this.getCenter(wrapperRect.top, wrapperRect.bottom)\n };\n\n const actual = {\n x: this.getCenter(wrapperRect.left, wrapperRect.right),\n y: this.getCenter(wrapperRect.top, wrapperRect.bottom)\n };\n\n return {\n x: expected.x - actual.x,\n y: expected.y - actual.y\n };\n }\n\n getCenter(start, end) {\n return start + (end - start) / 2;\n }\n\n getLocation(address, countryCode) {\n if (address && !AddressHelper.isCountry(address)) {\n return {\n center: {\n lat: address.latitude,\n lng: address.longitude\n },\n zoom: this.getZoom(address)\n };\n }\n\n if (!countryCode) {\n throw new Error('countryCode is undefined');\n }\n\n // Based on https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete-hotelsearch\n const countries = {\n au: {\n center: { lat: -33.1382032, lng: 144.7961969 },\n zoom: 6\n },\n ca: {\n center: { lat: 62, lng: -110.0 },\n zoom: 3\n },\n mx: {\n center: { lat: 23.6, lng: -102.5 },\n zoom: 5\n },\n nz: {\n center: { lat: -40.9, lng: 174.9 },\n zoom: 5\n },\n uk: {\n center: { lat: 52.8, lng: -4.6 },\n zoom: 5\n },\n us: {\n center: { lat: 39.85, lng: -97.8 },\n zoom: 5\n }\n };\n\n return countries[countryCode] || countries['au'];\n }\n\n getZoom(address) {\n const zoomLevel = AddressMap.zoomLevel;\n\n if (!address) {\n return zoomLevel.country;\n }\n\n if (address.unit) {\n return zoomLevel.unit;\n }\n\n if (address.streetNumber) {\n return zoomLevel.streetNumber;\n }\n\n if (address.street) {\n return zoomLevel.street;\n }\n\n if (address.city) {\n return zoomLevel.city;\n }\n\n if (address.postcode) {\n return zoomLevel.postcode;\n }\n\n if (address.state) {\n return zoomLevel.state;\n }\n\n return zoomLevel.country;\n }\n\n renderStaticMap() {\n window.dynamicMap = null;\n const backgroundMapUrl = this.props.backgroundMapUrl;\n this.getMapContainer().innerHTML = `\n
\n `;\n }\n\n useStaticMap() {\n return this.props.useStaticMap || AddressHelper.isCountry(this.state.address) || !this.mapboxgl.supported();\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nAddressMap.counter = 1;\nAddressMap.zoomLevel = {\n country: 6,\n\n unit: 14,\n streetNumber: 14,\n street: 13,\n\n postcode: 12,\n city: 12,\n\n state: 5\n};\n","import React, { Component } from 'react';\n\nimport AddressMap from './AddressMap';\n\nexport default class HeaderMap extends Component {\n\n constructor(props) {\n super(props);\n\n this.getCenterBoundaries = this.getCenterBoundaries.bind(this);\n }\n\n getCenterBoundaries() {\n if (this.props.getCenterBoundaries) {\n return this.props.getCenterBoundaries();\n }\n\n const locationHeaderRect = wo$('#location-header')[0].getBoundingClientRect();\n\n // HACK: .filter() or .map() are not transpiled in this particular case for some reason, giving an error in IE10 (IE9 is fine...)\n const contains = (array, p) => {\n for (let i = 0; i < array.length; i++) {\n const item = array[i].toLowerCase();\n if (p === item) {\n return true;\n }\n }\n\n return false;\n };\n\n var coverageButton = wo$('#coverage-maps-button a')[0];\n if (coverageButton\n && coverageButton.offsetParent !== null\n && !coverageButton.hidden\n && !contains(coverageButton.classList || [], 'hidden')\n ) {\n\n const coverageButtonRect = coverageButton.getBoundingClientRect();\n return {\n left: locationHeaderRect.right,\n right: coverageButtonRect.left\n };\n }\n\n const mainContentRect = wo$('#main-content')[0].getBoundingClientRect();\n return {\n left: locationHeaderRect.right,\n right: mainContentRect.right\n };\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n","import PropTypes from 'prop-types';\nimport Rcslider from 'rc-slider';\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport SliderHandle from './SliderHandle';\n\nconst RangeSlider = ({ minValue: minValueProps, maxValue: maxValueProps, data, onValueChanged, onValueUpdating }) => {\n const [minValue, setMinValue] = useState(minValueProps);\n const [maxValue, setMaxValue] = useState(maxValueProps);\n\n useEffect(() => {\n setMinValue(minValueProps);\n }, [minValueProps]);\n\n useEffect(() => {\n setMaxValue(maxValueProps);\n }, [maxValueProps]);\n\n const handleValueChanged = useCallback(\n ([minIndex, maxIndex]) => {\n if (onValueChanged) {\n onValueChanged(data[minIndex], data[maxIndex]);\n }\n },\n [onValueChanged, data]\n );\n\n const handleValueUpdating = useCallback(\n ([minIndex, maxIndex]) => {\n const min = data[minIndex];\n const max = data[maxIndex];\n\n setMinValue(min);\n setMaxValue(max);\n if (onValueUpdating) {\n onValueUpdating(min, max);\n }\n },\n [onValueUpdating, data]\n );\n\n const minIndex = data.indexOf(minValue);\n const maxIndex = data.indexOf(maxValue);\n\n const range = {\n min: 0,\n max: data.length - 1\n };\n\n const createHandle = useCallback(p => , []);\n\n return (\n \n \n \n );\n};\n\n/* eslint-disable import/no-named-as-default-member */\nRangeSlider.prototype = {\n minValue: PropTypes.number.isRequired,\n maxValue: PropTypes.number.isRequired,\n data: PropTypes.arrayOf(PropTypes.number).isRequired,\n onValueChanged: PropTypes.func.isRequired,\n onValueUpdating: PropTypes.func.isRequired\n};\n/* eslint-enable */\n\nexport default RangeSlider;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\n\nexport default class SupplierListItem extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n rawChecked: null\n };\n\n this.onCheckedChanged = this.onCheckedChanged.bind(this);\n this.renderCheckbox = this.renderCheckbox.bind(this);\n }\n\n static getDerivedStateFromProps(props, state) {\n return props.checked === state.rawChecked\n ? { rawChecked: null }\n : null;\n }\n\n onCheckedChanged() {\n const current = this.state.rawChecked !== null\n ? this.state.rawChecked\n : this.props.checked;\n\n const checked = !current;\n this.setState({ checked: checked });\n\n if (this.props.onCheckedChanged) {\n this.props.onCheckedChanged(this.props.supplierId, checked);\n }\n }\n\n renderCheckbox() {\n const checked = this.state.rawChecked !== null\n ? this.state.rawChecked\n : this.props.checked;\n\n return (\n <>\n \n \n \n );\n }\n\n render() {\n return this.props.isVerticallyAligned \n ?
\n {this.renderCheckbox()}\n
\n :
  • \n
    \n {this.renderCheckbox()}\n
    \n
  • ;\n }\n}\n\n/* eslint-disable import/no-named-as-default-member */\nSupplierListItem.propTypes = {\n supplierId: PropTypes.number,\n name: PropTypes.string,\n checked: PropTypes.bool,\n disabled: PropTypes.bool\n};\n/* eslint-enable */\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\n\nimport SupplierListItem from './SupplierListItem';\n\nexport default class SuppliersList extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n initiallySelected: props.selectedShortUrls,\n rawSelectedShortUrls: null\n };\n\n this.supplierCheckedChanged = this.supplierCheckedChanged.bind(this);\n this.renderSupplierListItem = this.renderSupplierListItem.bind(this);\n }\n\n static getDerivedStateFromProps(props, state) {\n return JSON.stringify(props.selectedShortUrls || []) !== JSON.stringify(state.initiallySelected || [])\n ? {\n initiallySelected: props.selectedShortUrls,\n rawSelectedShortUrls: null\n }\n : null;\n }\n\n supplierCheckedChanged(supplierId, checked) {\n const supplier = this.props.items.filter(p => p.id === supplierId)[0];\n\n // Use .slice() to avoid modifying the source array\n let selectedShortUrls = (this.state.rawSelectedShortUrls || this.props.selectedShortUrls || []).slice();\n if (checked) {\n selectedShortUrls.push(supplier.shortUrl);\n } else {\n selectedShortUrls = selectedShortUrls.filter(p => p !== supplier.shortUrl);\n }\n\n this.setState({ rawSelectedShortUrls: selectedShortUrls });\n if (this.props.onCheckedChanged) {\n this.props.onCheckedChanged(supplierId, checked);\n }\n }\n\n renderSupplierListItem() {\n const selectedShortUrls = this.state.rawSelectedShortUrls || this.props.selectedShortUrls || [];\n\n return this.props.items.map(supplier => {\n return (\n supplier.shortUrl === p)}\n onCheckedChanged={this.supplierCheckedChanged}\n disabled={this.props.disabled}\n isVerticallyAligned={this.props.isVerticallyAligned}\n />\n );\n });\n }\n\n render() {\n const defaultStyles = 'supplier-list block-grid-xs-2 block-grid-md-3 block-grid-condensed pad-t-3';\n return this.props.isVerticallyAligned ?\n <>\n {this.renderSupplierListItem()}\n \n :\n
      \n {this.renderSupplierListItem()}\n
    ;\n }\n}\n\n/* eslint-disable import/no-named-as-default-member */\nSuppliersList.propTypes = {\n className: PropTypes.string,\n items: PropTypes.array,\n selectedShortUrls: PropTypes.arrayOf(PropTypes.string),\n disabled: PropTypes.bool\n};\n/* eslint-enable */\n","const defaults = {\n featuredResultLocationType: 5 // search results\n};\n\n// TODO: Try reducing cyclomatic complexity and enable the eslint rule\n// eslint-disable-next-line complexity\nexport function generateCommonQueryString(\n /**@type {import('../../../js/@types/SearchCriteriaCommon').SearchCriteriaCommon} */ common,\n /** @type {boolean} */ isEmbed\n) {\n const appendQueryParam = WhistleOut.appendQueryParam;\n let queryString = '';\n let config = WhistleOut.getSiteConfiguration();\n\n if (common.tab && common.tab !== 'all') {\n queryString = appendQueryParam(queryString, 'tab=' + common.tab);\n }\n\n if (common.resultsSortExpression && common.resultsSortExpression !== 'Price') {\n queryString = appendQueryParam(queryString, 'sort=' + common.resultsSortExpression);\n }\n\n if (common.resultsSortAscending === false) {\n queryString = appendQueryParam(queryString, 'sortascending=false');\n }\n\n if (common.includeFeaturedResults === false) {\n queryString = appendQueryParam(queryString, 'includefeatured=false');\n }\n\n if (\n isEmbed &&\n common.featuredResultLocationType !== defaults.featuredResultLocationType &&\n WhistleOut.isPositiveNumber(common.featuredResultLocationType)\n ) {\n queryString = appendQueryParam(queryString, `featuredresultlocationtype=${common.featuredResultLocationType}`);\n }\n\n if (common.includeOffersWithCampaignOnly === true || common.includeOffersWithCampaignOnly === 'true') {\n queryString = appendQueryParam(queryString, 'dealsonly=true');\n }\n\n if (common.enforceMaximumResultLimits === false) {\n queryString = appendQueryParam(queryString, 'enforcemaximumresultlimits=false');\n }\n\n if (\n common.maximumSpend &&\n WhistleOut.isPositiveNumber(common.maximumSpend) &&\n common.maximumSpend !== config.broadbandConfig.maxSpend\n ) {\n queryString = appendQueryParam(queryString, 'spend=' + common.maximumSpend);\n }\n\n if (common.minimumSpend && WhistleOut.isPositiveNumber(common.minimumSpend)) {\n queryString = appendQueryParam(queryString, 'minspend=' + common.minimumSpend);\n }\n\n if (WhistleOut.isPositiveNumber(common.maximumUpfront)) {\n queryString = appendQueryParam(queryString, 'upfront=' + common.maximumUpfront);\n }\n\n if (common.contractTerms && common.contractTerms.length > 0) {\n queryString = appendQueryParam(queryString, 'contract=' + common.contractTerms.join(','));\n }\n\n if (common.address && common.address.label) {\n const address = replaceSpaces(common.address.label);\n queryString = appendQueryParam(queryString, 'address=' + address);\n }\n\n if (common.suppliers && common.suppliers.values && common.suppliers.values.length > 0) {\n queryString = appendQueryParam(queryString, 'supplier=' + common.suppliers.values.join(','));\n }\n\n if (common.customerType && common.customerType.length > 0) {\n queryString = appendQueryParam(queryString, 'customer=' + common.customerType);\n }\n\n if (common.currentSupplierShortUrl && common.currentSupplierShortUrl !== '-None-') {\n queryString = appendQueryParam(queryString, 'currentsupplier=' + common.currentSupplierShortUrl);\n }\n\n if (common.showLessResults) {\n queryString = appendQueryParam(queryString, 'showlessresults=true');\n }\n\n if (common.debug === true || common.debug === 'true') {\n queryString = appendQueryParam(queryString, 'debug=true');\n }\n\n if (common.useCache !== undefined && !common.useCache) {\n queryString = appendQueryParam(queryString, 'cache=false');\n }\n\n if (common.maxResultsPerSupplier && common.maxResultsPerSupplier > 0) {\n queryString = appendQueryParam(queryString, 'maxresultspersupplier=' + common.maxResultsPerSupplier);\n }\n\n if (common.products && common.products.length > 0) {\n queryString = appendQueryParam(queryString, 'product=' + common.products.join(','));\n }\n\n if (common.campaignGroup && common.campaignGroup.length > 0) {\n queryString = appendQueryParam(queryString, 'campaignGroup=' + common.campaignGroup);\n }\n\n if (common.results) {\n const resultQueryString = generateResultsQueryString(common.results);\n if (resultQueryString.length > 0) {\n queryString = appendQueryParam(queryString, resultQueryString);\n }\n }\n return queryString;\n}\n\nconst generateResultsQueryString = results => {\n const appendQueryParam = WhistleOut.appendQueryParam;\n let queryString = '';\n\n if (results.maximumNumberOfResults && results.maximumNumberOfResults > 0) {\n queryString = appendQueryParam(queryString, 'maxresults=' + results.maximumNumberOfResults);\n }\n if (results.hideTransactionLinks) {\n queryString = appendQueryParam(queryString, 'transact=false');\n }\n if (results.showRowFilters === false) {\n queryString = appendQueryParam(queryString, 'showrowfilters=false');\n }\n if (results.showRowSorts === false) {\n queryString = appendQueryParam(queryString, 'showrowsorts=false');\n }\n if (results.hideEmptyTabs === true) {\n queryString = appendQueryParam(queryString, 'hideemptytabs=true');\n }\n if (results.hideSort) {\n queryString = appendQueryParam(queryString, 'hidesort=true');\n }\n if (results.hideShare) {\n queryString = appendQueryParam(queryString, 'hideshare=true');\n }\n if (results.hideWidenResults) {\n queryString = appendQueryParam(queryString, 'hidewidenresults=true');\n }\n if (results.showAllResults) {\n queryString = appendQueryParam(queryString, 'showall=true');\n }\n if (results.hideCoverage) {\n queryString = appendQueryParam(queryString, 'hidecoverage=true');\n }\n if (results.productLabel) {\n queryString = appendQueryParam(queryString, 'productlabel=' + encodeURIComponent(results.productLabel));\n }\n if (results.monetisedResultsOnly) {\n queryString = appendQueryParam(queryString, 'monetised=true');\n }\n if (results.pageSize && results.pageSize > 0 && results.pageSize !== results.defaultPageSizeConstant) {\n queryString = appendQueryParam(queryString, 'pagesize=' + results.pageSize);\n }\n return queryString;\n};\n\nconst replaceSpaces = (input, replaceWith = '+') => {\n if (!input) {\n return null;\n }\n\n return input.replace(/\\s+/g, replaceWith);\n};\n","import { Fragment as _Fragment, jsx as _jsx } from \"react/jsx-runtime\";\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useEffect } from 'react';\nimport AddressHelper from '../../utils/AddressHelper';\nimport AppComponent from '../AppComponent';\nimport { onAddressChangedEvent } from './AddressSearch';\n/* eslint-disable import/no-named-as-default-member */\nconst propTypes = {\n initialValue: PropTypes.any,\n onAddressChange: PropTypes.func\n};\n/* eslint-enable */\nconst AddressChangeTrackerComponent = (props) => {\n const onAddressChange = useCallback((value) => {\n if (props.onAddressChange) {\n props.onAddressChange(value);\n }\n }, [props]);\n const onAddressChangedEventHandler = useCallback((e) => {\n // TODO: Fix eslint error\n // eslint-disable-next-line @typescript-eslint/no-invalid-this\n if (!e.detail || e.detail.sender === this) {\n return;\n }\n if (AddressHelper.isEqual(props.initialValue, e.detail.address)) {\n return;\n }\n onAddressChange(e.detail.address);\n }, [onAddressChange, props.initialValue]);\n const handleOnMount = useCallback(() => {\n addEventListener(onAddressChangedEvent, onAddressChangedEventHandler);\n // Unmount\n return () => {\n removeEventListener(onAddressChangedEvent, onAddressChangedEventHandler);\n };\n }, [onAddressChangedEventHandler]);\n useEffect(() => handleOnMount(), [handleOnMount]);\n return _jsx(_Fragment, {});\n};\nconst AddressChangeTracker = (props) => {\n return (_jsx(AppComponent, { children: _jsx(AddressChangeTrackerComponent, Object.assign({}, props)) }));\n};\nAddressChangeTracker.propTypes = propTypes;\nexport default AddressChangeTracker;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport PropTypes from 'prop-types';\nimport Rcslider from 'rc-slider';\nimport React, { useCallback } from 'react';\nimport SliderHandle from './SliderHandle';\nconst Slider = ({ current, data, onValueChanged, onValueUpdating }) => {\n const handleValueChanged = useCallback(index => {\n if (onValueChanged) {\n onValueChanged(data[index]);\n }\n }, [data, onValueChanged]);\n const handleValueUpdating = useCallback(index => {\n if (onValueUpdating) {\n onValueUpdating(data[index]);\n }\n }, [data, onValueUpdating]);\n const range = {\n min: 0,\n max: data.length - 1\n };\n const index = data.indexOf(current);\n const createHandle = useCallback(p => _jsx(SliderHandle, Object.assign({}, p)), []);\n return (_jsx(React.StrictMode, { children: _jsx(Rcslider, { min: range.min, max: range.max, onChange: handleValueUpdating, value: index, onAfterChange: handleValueChanged, step: 1, handle: createHandle }) }));\n};\n/* eslint-disable import/no-named-as-default-member */\nSlider.prototype = {\n current: PropTypes.number.isRequired,\n data: PropTypes.arrayOf(PropTypes.number).isRequired,\n onValueChanged: PropTypes.func.isRequired,\n onValueUpdating: PropTypes.func.isRequired\n};\n/* eslint-enable */\nexport default Slider;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React, { forwardRef } from 'react';\nconst SliderHandle = forwardRef((props, ref) => {\n return (_jsx(\"div\", { ref: ref, className: \"rc-slider-handle rc-slider-handle-2 rc-slider-handle-upper\", style: { left: `${props.offset}%` }, \"aria-disabled\": props.disabled }));\n});\nSliderHandle.displayName = 'SliderHandle';\nexport default SliderHandle;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nexport function initReact() {\n if (window === undefined) {\n return;\n }\n window.React = window.React || React;\n window.ReactDOM = window.ReactDOM || ReactDOM;\n}\n"],"names":["ScreenSize","props","screenSize","isMobile","useMediaQuery","maxWidth","isTablet","minWidth","type","Tablet","Mobile","Desktop","useScreenSize","useEffect","onScreenSizeChange","children","mobile","tablet","desktop","generateQueryString","data","allAvailableConnectionsSelected","isEmbed","appendQueryParam","WhistleOut","queryString","location","speed","maxSpeed","maxUploadSpeed","customer","length","parseInt","maxUpfront","planType","modemShortUrl","simOnly","connectionTypes","values","slice","sort","join","excludeBundles","reseller","hideEmptyTabs","hideSingleResultTab","peakDataOnly","showFewerResults","uploadNotCounted","staticIp","prepaidExpiry","network","includeFiveG","undefined","state","bundles","homePhone","tv","lineRental","homePhoneCalls","tvChannels","mobilePhone","common","commonQueryString","generateCommonQueryString","goToSearchPage","searchUrl","criteria","url","fullUrl","href","BroadbandResultsAdaptor","unbindAll","searchResultsPage","wo$","off","this","bindPreviewActions","bindCoverageMap","mapContainer","find","waitFor","CoverageMap","init","instanceId","nbnMapElement","adslMapElement","mobileMapElement","coverageMapsButton","removeClass","addClass","click","scrollTo","bindFastProviders","fastProviders","on","expires","Date","setTime","getTime","Cookies","set","path","slideUp","hideCoverageMapButton","bindContractDropdown","changeContractTypeHandler","showModalHandler","contract","copyToClipboard","tabName","hide","parent","prev","hasClass","show","bindHideFeatureResults","hideFeaturedResultsHandler","bindDisableMaximumResultLimits","disableMaximumResultLimitsHandler","bindSort","changeSortHandler","sortExpression","sortAscending","isAscending","bindCoverageStrip","resetConnectionsHandler","args","preventDefault","bindCoverageErrorStrip","retrySearchHandler","bindModemCarouselLandingPage","changeModem","landingPage","bindLandingPageCriteria","attribute","callback","e","value","bindCriteriaFilters","trueOrNull","falseOrNull","setBundles","key","val","mappings","channels","split","connection","toNumber","homephone","homephonecalls","linerental","mobilephone","modem","peakdata","showlessresults","simonly","el","c","modal","closest","getCoveragePromise","coverageUrl","Promise","resolve","window","setTimeout","ajax","success","result","setCoverageCookie","coverage","hasFixed","useDefaultSuppliers","defaultConnectionTypes","bindWidenResults","widenResultsHandler","options","id","removeAll","includeAllSuppliers","reduceData","reduceSpeed","noDealsOnly","noPeakData","noUploadCounted","noStaticIp","includeMoreConnectionTypes","noBundling","removeSelectedModem","includeAllLocations","includeAllContractLengths","includeAllPrepaidExpiry","increasePriceRange","sortBy","trackEvent","bindLoadMore","loadMoreResultsHandler","tab","current","appendLoadMoreResults","results","pageSize","$results","button","total","loadedRecords","append","applyPopover","bindCta","notifications","fire","bindTab","changeTabHandler","that","selectConnectionType","applySelectPicker","$","attr","switchTabs","each","content","popover","container","trigger","placement","html","changeCurrentActiveTab","selectedTabLink","text","selectedTabLinkButton","image","src","tip","siblings","bindPlanSummary","supplierShortUrl","maxResults","showDownloadSpeed","speedTestResult","downloadSpeed","isCompleted","lastResultDate","toLocaleDateString","year","month","day","speedTestInProgress","isInProgress","prop","bindSpeedTestResult","ignorePopup","get","JSON","parse","SpeedTest","getSpeedTestParameters","resp","protocol","runNdt7Test","urls","testSpeed","fqdn","hasErrors","bindNbnAlertModal","focus","clearNbnAlertModalErrort","validateNbnAlertModal","$this","name","email","generalOptIn","is","error","complete","valid","trim","showNbnAlertModalError","config","getSiteConfiguration","regex","RegExp","test","optInYes","optInNo","field","messageSelector","coverageRequestsQueue","className","onClick","isLoading","dataWidth","descirption","selectArgs","primaryFilterAsSpeed","speedDescription","selectedValue","speedValues","onValueChanged","onSpeedChange","dataDescription","dataValues","onDataChange","Select","selectClassName","optionGroups","label","onChange","selectedValues","onSearchClick","useCallback","AddressSearch","Object","assign","addressSearchProps","ref","marginCss","inputClassName","hideLabel","speedDataSelectProps","searchButtonText","splashImageUrl","alt","renderSplashImage","_a","inputValue","setInputValue","useState","address","addressSearchResult","setAddressSearchResult","isNotFound","isError","setData","setSpeed","isSearchInitiated","setIsSearchInitiated","addressSearchDesktopRef","useRef","addressSearchMobileRef","addressSearchTabletRef","resultsAdaptor","handleMount","SearchAddressActions","invalidateAddressCookie","getCurrentLocationViaHtml5","handleOnInput","handleOnAddressChange","handleOnAddressEmptyResults","handleOnAddressResponseError","doSearch","coveragePromise","coverageCheckUrl","draft","search","then","newCriteria","produce","map","t","shortUrl","suppliers","searchLocation","getCurrentLocation","siteCountry","countryCode","toLowerCase","clientCountry","isEmptyAddress","placeholder","lookupAddress","selectFirstSuggest","autoDetectLocation","onAddressInputInit","input","setAddressCookie","addressCommonProps","onInput","onInitialized","onEmptyResults","onResponseError","toolTipText","tooltipLink","commonProps","addressSearch","s","p","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","propertyIsEnumerable","__rest","addressSearchPlaceHolder","tooltipDescription","addressNotFoundMessage","addressNotFound","commonErrorMessage","unableToVerifyAddress","types","queryDelay","apiKey","showProgress","description","speedFormat","format","dataFormat","warning","searchText","HeaderMapWithStatistics","Component","constructor","super","getCenterBoundaries","bind","locationHeaderRect","getBoundingClientRect","statisticsRect","left","right","render","React","HeaderMap","backgroundMapUrl","ignoreAddressChange","mapContainerId","styleId","useStaticMap","containerRef","onModalAction","isOpen","action","onClose","tabIndex","role","items","status","default","onTransactLinkClick","getElements","document","querySelectorAll","querySelector","forEach","a","addEventListener","removeEventListener","link","element","currentTarget","Error","isDynamicLink","getPrivateDataCookieValue","privateDataModalId","onDynamicLinkClick","dataset","productShortUrl","getLinkData","Exclamation","IncompleteAddressWarning","Header","isModal","title","subtitle","htmlProps","useMemo","setAddress","handleContinueClick","onContinue","isPrivateDataEnabled","isIncompleteAddress","streetNumber","isSearchDisabled","privateDataButton","skipGlobalUpdate","disabled","onRetry","ContinueButton","target","pageView","modalView","Title","ViewPlansButton","BackLink","handleClick","style","transform","SearchPlanUnavailablePanel","isSearchPage","addressHelper","isIncomplete","isIncompleteLabel","getInitialAddress","urlHelper","getAddress","URL","searchParams","replace","actions","reducer","initialState","transactUrl","reducers","requestSearch","payload","startProgress","endProgress","onError","onResponse","onTransactUrlFound","onPopupBlocked","AvailabilityCheckPanel","_b","dispatch","useReducer","triggerGetTransactUrlQuery","getTransactUrlQuery","broadbandApi","useLazyGetTransactUrlQuery","onAddressChange","onStatusChange","handleShowPlans","onShowPlans","handleRetry","onProgressChange","onRequest","isUninitialized","onTransactUrlChange","shouldOpenTransactLink","transactPage","open","newWin","closed","openTransactUrl","autoSubmitOnLoad","blocked","AvailabilityCheckModal","setIsOpen","setProductShortUrl","setSupplierShortUrl","setStatus","handleClose","includes","isDynamicTransactLink","handleDynamicTransactLinkClick","handleTransactUrlChange","handleTransactLinkClick","ProductPageConnected","ownProps","connector","area","subarea","supplier","product","pathname","parts","useProductLocation","ProductPage","AppComponent","goTo","SmartMoveVerifyPageConnected","SmartMoveVerifyPage","BroadbandAddressSearchActions","ResultsAdaptor","onCriteriaChange","Update","$set","BroadbandAddressSearch","searchCriteria","inputProps","size","BroadbandActions","changeTab","updateTab","embeddedMode","searchSettings","allConnectionsSelected","HistoryWrapper","pushQuery","initHistoryTracker","bindResults","trackPage","retrySearch","updateConnectionTypes","contractType","updateContractType","showModal","includeNbnConnections","nbnConnectionTypes","expression","updateSort","loadMoreResults","widenResults","hideFeaturedResults","disableMaximumResultLimits","updatePlanSummarySupplier","updateModem","updateData","updateSpeed","updateSuppliers","defaultCriteria","updateCriteria","coverageAddress","pagedResultsUrl","goToSearch","baseUrl","getSearchUrl","suppressCoverageCheck","searchPageRefresh","initialCriteria","campaignGroup","hideTabsHeaderHeading","showAllResults","hideSort","hideShare","hideWidenResults","showRowSorts","showRowFilters","maximumNumberOfResults","hideCoverage","productLabel","updatedCriteria","onAjaxSearchSuccess","$addressBar","$fastProviders","unmountComponentAtNode","fastProvidersHtml","nodeToAttach","createElement","getAds","resize","sender","resultQueryString","searchSuccess","onAjaxSearchError","searchError","isAjax","doNotRetry","getAnalyticsClientSideData","resultCount","currentSupplierId","currentSupplierShortUrl","allItems","filter","push","minimumSpend","maximumSpend","includeOffersWithCampaignOnly","resultsSortExpression","resultsSortAscending","placeId","shortName","longName","city","postcode","valuesString","trackPageView","getRemarketingData","connectionType","selectedTypes","remarketing","Slider","isRequired","anyLabel","fromLabel","labelTitle","containerClassName","sliderClassName","labelTemplate","_c","setValue","handleValueUpdating","onValueUpdating","getItem","v","labelText","dangerouslySetInnerHTML","__html","dataLabel","anyDataLabel","onChanged","remove","retryLabel","tooltipProps","tooltipHtmlAttributes","template","innerHTML","speedFragment","Array","innerText","speedDescriptionPlaceholder","removeChild","hr","previousSibling","getTooltipProps","speedLabel","anySpeedLabel","btnRef","handleOnSelected","blur","onSelected","selected","active","buttonProps","OptionGroup","selectedKeys","selectedKeysProps","getKey","maxItemsCount","showSelectedCount","anyButtonPositionLast","showMoreVisible","header","onMoreClick","onMoreClickHandler","onSelectedItemsChanged","onSelectedItemsChangedHandler","renderItemButton","renderItemButtonHandler","renderAnyButton","renderAnyButtonHandler","getTopEligibleItems","getTopEligibleItemsHandler","setSelectedKeys","getItemByKey","keys","ordered","b","localeCompare","onAnyClick","event","getSelectedItems","topEligibleItems","topItemsCount","Math","min","itemsCount","selectedItems","unselectedCount","selectedCount","isAllSelected","anyButton","all","item","isSelected","some","lastVisibleItem","splice","onItemSelected","more","propTypes","showAll","imageAlt","imageSrc","availableSupplierIds","showHeader","businessOnly","onShowAllProviders","shortUrls","renderHasNoItems","noProvidersFoundForCriteria","smallImageUrl","heading","availableItems","isAvailable","isBusiness","showTextOnly","textContent","isBusinessOnly","onShowAll","SearchFilterContext","createContext","include","exclude","phone","BuildOptionString","prefix","BundleSelect","context","useContext","resources","optionsSelected","setOptionsSelected","stateArray","BuildInitalState","tvOptionsSelected","setTvOptionsSelected","tc","toString","showTvChannels","setShowTvChannels","selectpicker","os","updatePhoneBundle","updateTvBundle","updateLineRentalBundle","updateMobileBundle","showLineRental","showMobilePhoneBundle","Number","updateTvChannels","onChangeCallBack","selectedOptions","option","o","tvIncluded","onLoad","node","jQuery","OnTvChangeCallBack","buildChannelOptions","bundle","multiple","showAllBundles","phoneBundle","tvBundle","mobilePhoneBundle","hidden","mustHaveChannels","individualChannels","individualTvChannels","kidsChannels","kidsTvChannels","sportsChannels","sportsTvChannels","AdvancedTab","chooseContractTerms","chooseModem","choosePrepaidExpiry","chooseMegaAdvanced","byoModem","allContractTerms","contractTermSelectedOptions","setSelectedContractTerms","contractTerms","ct","modemSelectedOptions","setModemSelectedOptions","prepaidExpirySelectedOptions","setPrepaidExpirySelectedOptions","valueOf","megaAdvancedSelectedOptions","setMegaAdvancedSelectedOptions","returnArray","maxResultsPerSupplier","showLessResults","BuildMegaAdvancedState","DidUnmount","onModemChange","DidMount","dom","applySelectPickersStyle","updateContractTerms","isSimOnly","updatePrepaidExpiry","updateAdvancedOptions","OnChange","contractLength","contractTerm","modemType","anyModemLabel","homeModemsLabel","homeModemTypes","showMobileModems","mobileModemsLabel","mobileModemTypes","renderMobileBroadbandModems","prepaidExpiryValues","expiry","showMegaAdvancedFilters","superMegaAdvanced","selectOptions","megaAdvancedOptions","ConnectionType","rawChecked","onCheckedChanged","getDerivedStateFromProps","rawValue","checked","setState","htmlFor","ConnectionTab","allShortUrls","connectionTypeTiers","tier1ConnectionTypes","tier2ConnectionTypes","tier3ConnectionTypes","allUnselected","selectedShortUrls","wrapper","createRef","renderConnectionType","handleConnectionTypeValueChanged","toggleConnections","toggleTier1","toggleTier2","toggleTier3","toggleConnectionCategory","onSelectAllChange","renderConnectionTypeCategory","isChecked","AddItem","RemoveItem","connections","anyOneUnChecked","AddItems","RemoveItems","newValue","inArray","unSelectAll","index","selectAll","unavailableConnectionTypes","findIndex","connectionTypeCategory","titleClass","connectionTypeCategories","connectionTypeCategoriesClass","connectionTypesContentFragment","_ref","atLeastLabel","changeData","popoverRef","getLabel","SliderWithLabel","currentData","includedDataLabel","buttonsContentFragment","buttonsContainerRef","handleOnMount","defaultTo","minData","ModalDataSlider","currentSpeed","speedContentFragment","minValue","minValueProps","maxValue","maxValueProps","updateSpend","setMinValue","setMaxValue","max","lowestValue","biggestValue","anyPrice","handleOnValueUpdating","monthly","RangeSlider","updateUpfront","setRawValue","handleSliderValueUpdating","spendSlider","upfrontSlider","spendContentFragment","showMaxUpfrontSlider","onTierButtonClick","minSpend","maxSpend","spend","ModalSpendSlider","_extends","ModalUpfrontSlider","maximumUpfront","SuppliersTab","getInitialState","selectNone","onSupplierChecked","onPersonalChange","onBusinessChange","onSelectionChanged","availableShortUrls","personalShortUrls","isPersonal","businessShortUrls","isPersonalAvailable","isBusinessAvailable","customerType","concat","getIsAllSelected","supplierId","getSelectedUrlsForCustomerType","Set","typeChecked","typeShortUrls","otherTypeChecked","otherTypeShortUrls","availableSuppliers","hasAddress","providersInYourArea","providers","SuppliersList","isVerticallyAligned","unavailableSuppliers","unavailableSuppliersInYourArea","personal","business","PropTypes","isActive","checkActive","TabContent","isActiveProps","Function","ClassNames","mapDispatchToProps","modalState","broadband","activeTab","setCriteria","handleIsOpenChanged","handleOnCriteriaChanged","handleOnTabSelected","selectTab","getAttribute","applyFilters","onCriteriaChanged","handleAddressChange","addressChanged","handleSuppliersChanged","updateSelectedSuppliers","handleUpdateSpend","isTabActive","hideModal","totalConnectionTypes","tabMenuItems","hideSupplierFilter","faqContentFragment","AddressChangeTracker","speedSlider","dataSlider","includedData","dataContentFragment","allConnectionTypes","cancel","applyAll","ModalOpenEventName","productAreaState","handleShowModal","handleShowAllProviders","legacyActions","searchRetry","handleModalCriteriaChanged","selectedSuppliers","selectedSupplierKeys","isArray","getSupplierKey","Provider","filtersData","defaultSupplierAvailableText","showAllFilters","filters","errorUpdatingResults","pleaseTryAgain","retry","isInitialised","searchState","settings","QueryHelper","getQueryString","isEquivalent","compareTo","getClearQuery","query","SearchConnected","isProgress","setIsProgress","previousCriteria","usePrevious","triggerGetSearchResultsQuery","searchResultsQuery","useLazyGetSearchResultsQuery","selector","force","resultsUrl","handleAddressChanged","updateAddress","handleSpeedTestResultsChanged","detail","isFetching","resultsSearchCriteria","enforceAjax","initialValue","Search","initReact","BroadbandComponents","ReduxEnabled","ReactReduxContext","ReduxProvider","store","RouterEnabled","isInRouter","useInRouterContext","BrowserRouter","counter","elementId","initiallySelected","stringify","rawSelectedValues","refSelect","getContainerDom","initialAddress","componentDidMount","initBootstrapSelect","select","setSelectedValues","componentWillUnmount","componentDidUpdate","prevProps","optionGroupsAreSame","prevUntil","mapValues","mapValue","groups","renderItem","dataStyle","group","defaultProps","AddressMap","mapWrapperId","marker","isSmallScreen","onWindowResize","onResizeEnd","getMapContainer","renderStaticMap","async","mapboxgl","setView","AddressHelper","isEqual","resizeTimer","clearTimeout","innerWidth","dynamicMap","onMapRemove","initMap","onMapInit","getLocation","center","zoom","width","height","zIndex","renderToStaticMarkup","Map","accessToken","interactive","trackResize","attributionControl","addControl","AttributionControl","offset","setMarker","clearMarker","isCountry","markerIconUrl","backgroundImage","backgroundSize","backgroundRepeat","Marker","anchor","setLngLat","lng","lat","addTo","currentCenter","getCenter","newCenter","setCenter","getZoom","setZoom","panTo","targetLatLng","getOffsetLatLng","getOffset","targetPoint","project","sub","Point","x","y","unproject","wrapperRect","centerBetween","expected","top","bottom","start","end","latitude","longitude","countries","au","ca","mx","nz","uk","us","zoomLevel","unit","street","country","supported","coverageButton","offsetParent","contains","array","classList","coverageButtonRect","mainContentRect","handleValueChanged","_ref2","minIndex","maxIndex","_ref3","range","createHandle","SliderHandle","Rcslider","pushable","onAfterChange","step","tipFormatter","handle","SupplierListItem","renderCheckbox","rawSelectedShortUrls","supplierCheckedChanged","renderSupplierListItem","defaults","featuredResultLocationType","includeFeaturedResults","isPositiveNumber","enforceMaximumResultLimits","broadbandConfig","replaceSpaces","debug","useCache","products","generateResultsQueryString","hideTransactionLinks","encodeURIComponent","monetisedResultsOnly","defaultPageSizeConstant","replaceWith","arguments","AddressChangeTrackerComponent","onAddressChangedEventHandler","forwardRef","displayName","ReactDOM"],"sourceRoot":""}