{"version":3,"file":"../pdp-hcp-finder.js","names":["$","isInitialized","searchPractitionersUrl","ipFinderUrl","postalCodeFromCoordsUrl","abortController","AbortController","$buyNowModal","$buyNowForm","find","$selectedPartEl","$postalCodeEl","$practitionersWithinRangeEl","$loadingSpinners","$searchBtn","$hasResultsContainer","$noResultsContainer","$practitionerResultsList","$errorContainer","$advancedOptionsToggleBtn","$buyNowAdvancedSearchContainer","$resultsCollapsableContainer","postalCodeEntered","resultsForPostalCode","resultsCollapsableContainer","bootstrap","Collapse","getOrCreateInstance","jQuery","validator","addMethod","value","element","params","_params$positivePatte","optional","positivePattern","regex","RegExp","result","exec","$validator","validate","onfocusout","valid","onkeyup","event","is","defaults","call","focuscleanup","errorElement","errorClass","rules","SelectedPart","required","PostalCode","sp_positive_pattern","PractitionersWithinRange","max","min","messages","errorPlacement","$errorEl","$inputEl","$validationContainer","closest","appendTo","id","parent","highlight","validClass","$element","$phoneTypeContainer","isIntendedUse","length","addClass","removeClass","$intendedUses","unhighlight","success","$label","invalidHandler","_iterator","_createForOfIteratorHelper","errorList","_step","s","n","done","errorEntry","$parent","settings","err","e","f","validatePractionerLookupFormHtml","form","focusInvalid","toggleResultsCollapsable","isCallbackQueued","lastShow","show","isTransitioning","hide","one","setTimeout","showLoadingSpinners","attr","hasSearchResults","postalCodeFieldEnableDisable","val","setAvailablePractionersHtml","data","undefined","Error","html","errors","console","error","eKey","concat","join","append","template","_iterator2","_step2","_find$hcpUrl","_find","_practitionerRecord$p","_practitionerRecord$a","_ref","_practitionerRecord$p2","_twWebsite","practitionerRecord","twWebsite","purchasingOptionsV2","x","salesChannel","hcpUrl","originalTWUrl","URL","urlWithCorrectPath","productSlug","partNo","href","viewModel","customerName","addressLine1","cityStateZip","city","stateProvince","postalCode","phoneNumber","website","distance","gaddress","encodeURIComponent","address","newElStr","bindViewModelToHtml","setPostalCodeHtml","getPractitionerLookupDataHtml","range","Number","parseInt","$selectedOption","isVeterinary","isNaN","partNumbers","page","pageSize","lookupPractitonersAsync","request","Request","signal","method","body","JSON","stringify","headers","response","fetch","then","r","ok","json","hasContentLengthHeader","has","hasContentTypeHeader","get","text","getCurrentPositionServerAsync","Promise","reject","status","refreshSearchResults","isFormValid","resetAbortController","lookupData","_objectSpread","catch","finally","htmlCopy","viewModelKeys","Object","keys","_iterator3","matchAll","_step3","matchArr","htmlKey","expression","fnBinder","Function","replacementHtml","includes","replace","abort","message","on","key","trigger","document"],"sources":["pdp-hcp-finder.js"],"sourcesContent":["//#region Typedefs\r\n\r\n/**\r\n * @typedef {object} HcpSearchResultsDtoPartial\r\n * @property {number} buyCount\r\n * @property {number} buyCount\r\n * @property {HcpSearchResult[]} value\r\n * @property {{[key: string]: string[]}} errors\r\n * @property {string} postalCode\r\n * @property {number} distance\r\n * @property {number} page\r\n */\r\n\r\n/**\r\n * @typedef {HcpSearchResultsDtoPartial & Record<'@odata.count', number> & Record<'value', HcpSearchResult[]>} HcpSearchResultsDto\r\n */\r\n\r\n/**\r\n * @typedef {object} HcpSearchResultResultsDtoPartial\r\n * @property {number} buyCount\r\n * @property {HcpSearchResult[]} value\r\n * @property {{[key: string]: string[]}} errors\r\n * @property {string} postalCode\r\n * @property {number} distance\r\n * @property {number} page\r\n */\r\n\r\n/**\r\n * @typedef {HcpSearchResultResultsDtoPartial & Record<'@odata.count', number> & Record<'@search.facets', HcpSearchFacetsResultsDto>} HcpSearchResultResultsDto\r\n */\r\n\r\n/**\r\n * @typedef {object} HcpSearchFacetsResultsDtoPartial\r\n * @property {HcpSearchFacetDto[]} marketCodes\r\n * @property {HcpSearchFacetDto[]} purchasingOptions\r\n */\r\n\r\n/**\r\n * @typedef {HcpSearchFacetsResultsDtoPartial & Record<'purchasingOptionsV2/salesChannel', HcpSearchFacetDto[]>} HcpSearchFacetsResultsDto\r\n */\r\n\r\n/**\r\n * @typedef {object} HcpSearchFacetDto\r\n * @property {number} count\r\n * @property {string} value\r\n * @property {boolean} selected\r\n */\r\n\r\n/**\r\n * @typedef {object} HcpSearchResult\r\n * @property {string} addressLine1\r\n * @property {string} addressLine2\r\n * @property {string} city\r\n * @property {string} country\r\n * @property {string} county\r\n * @property {string} customerId\r\n * @property {string} customerName\r\n * @property {string} email\r\n * @property {string} latitude\r\n * @property {string} longitude\r\n * @property {string[]} marketCodes\r\n * @property {string} phoneNumber\r\n * @property {string} postalCode\r\n * @property {string[]} purchasingOptions\r\n * @property {{[key: string]: HcpPurchasingOption}} purchasingOptionsV2\r\n * @property {string} stateProvince\r\n * @property {string} website\r\n * @property {number} distance\r\n * @property {string} address\r\n */\r\n\r\n/**\r\n * @typedef {object} HcpPurchasingOption\r\n * @property {string} hcpUrl\r\n * @property {string} salesChannel\r\n */\r\n\r\n//#endregion\r\n\r\n$(function () {\r\n //#region Fields\r\n\r\n // General variables.\r\n var isInitialized = false;\r\n var searchPractitionersUrl = \"/api/hcpfinder/search\";\r\n var ipFinderUrl = \"/api/hcpfinder/postalcode-from-ip\";\r\n var postalCodeFromCoordsUrl = \"/api/hcpfinder/postalcode-from-coords\";\r\n var abortController = new AbortController();\r\n\r\n // Element variables.\r\n var $buyNowModal = $(\"#BuyNowModal\");\r\n var $buyNowForm = $buyNowModal.find(\"form\");\r\n var $selectedPartEl = $buyNowModal.find(\"[name='SelectedPart']\");\r\n var $postalCodeEl = $buyNowModal.find(\"[name='PostalCode']\");\r\n var $practitionersWithinRangeEl = $buyNowModal.find(\"[name='PractitionersWithinRange']\");\r\n var $loadingSpinners = $buyNowModal.find(\".js-spinner-container\");\r\n var $searchBtn = $buyNowModal.find(\"[name='UpdatePractionerSearchResults']\");\r\n var $hasResultsContainer = $buyNowModal.find(\".js-has-results-container\");\r\n var $noResultsContainer = $buyNowModal.find(\".js-no-results-container\");\r\n var $practitionerResultsList = $buyNowModal.find(\".js-nearest-practitioners-list\");\r\n var $errorContainer = $buyNowModal.find(\".js-error-messages-container\");\r\n var $advancedOptionsToggleBtn = $buyNowModal.find(\".js-advanced-options-toggle\");\r\n var $buyNowAdvancedSearchContainer = $buyNowModal.find(\"#BuyNowAdvancedSearchContainer\");\r\n var $resultsCollapsableContainer = $buyNowModal.find(\"#ResultsCollapsableContainer\");\r\n var postalCodeEntered = null;\r\n var resultsForPostalCode = null;\r\n\r\n // Misc variables.\r\n var resultsCollapsableContainer = bootstrap.Collapse.getOrCreateInstance($resultsCollapsableContainer[0]);\r\n\r\n //#endregion\r\n\r\n //#region Validator\r\n\r\n // This will mark the element as invalid if the pattern does not match.\r\n // NOTE: Requires the parameters \"positivePattern\".\r\n jQuery.validator.addMethod(\"sp_positive_pattern\", function (value, element, params) {\r\n if (this.optional(element) == true) {\r\n return true;\r\n }\r\n\r\n if ((params.positivePattern ?? \"\") === \"\") {\r\n return false;\r\n }\r\n\r\n const regex = new RegExp(params.positivePattern, \"gim\");\r\n const result = regex.exec(value);\r\n\r\n return result !== null;\r\n }, \"Invalid characters.\");\r\n\r\n var $validator = $buyNowForm.validate({\r\n onfocusout: function (element) {\r\n $(element).valid();\r\n },\r\n onkeyup: function (element, event) {\r\n if ($(element).is(\".no-validate-on-key-down\")) {\r\n return;\r\n }\r\n\r\n $.validator.defaults.onkeyup.call(this, element, event);\r\n },\r\n focuscleanup: true,\r\n errorElement: \"label\",\r\n errorClass: \"alert-msg\",\r\n rules: {\r\n SelectedPart: {\r\n required: true,\r\n },\r\n PostalCode: {\r\n required: true,\r\n sp_positive_pattern: {\r\n positivePattern: \"^[0-9]{5}$\",\r\n },\r\n },\r\n PractitionersWithinRange: {\r\n required: true,\r\n max: 100,\r\n min: 5,\r\n },\r\n },\r\n messages: {\r\n PostalCode: {\r\n required: \"Postal code is required.\",\r\n sp_positive_pattern: \"Must be a valid 5 digit postal code.\",\r\n },\r\n },\r\n errorPlacement: function ($errorEl, $inputEl) {\r\n if ($inputEl.is(\"[type='radio']\")) {\r\n const $validationContainer = $inputEl.closest(\".custom-sp-label-wrapper\").find(\".validation\");\r\n $errorEl.appendTo($validationContainer);\r\n } else if ($inputEl[0].id == \"PostalCode\") {\r\n $errorEl.appendTo($('#PostalCodeErrors'))\r\n }\r\n else {\r\n $errorEl.appendTo($inputEl.parent());\r\n }\r\n },\r\n highlight: function (element, errorClass, validClass) {\r\n const $element = $(element);\r\n const $phoneTypeContainer = $element.closest(\".phone-types\");\r\n const isIntendedUse = $element.is(\"[name='IntendedUse']\");\r\n\r\n if ($phoneTypeContainer.length > 0) {\r\n if ((errorClass ?? \"\").length > 0) {\r\n $phoneTypeContainer.addClass(errorClass);\r\n }\r\n\r\n if ((validClass ?? \"\").length > 0) {\r\n $phoneTypeContainer.removeClass(validClass);\r\n }\r\n } else {\r\n if ((errorClass ?? \"\").length > 0) {\r\n $element.addClass(errorClass);\r\n }\r\n\r\n if ((validClass ?? \"\").length > 0) {\r\n $element.removeClass(validClass);\r\n }\r\n }\r\n\r\n if (isIntendedUse) {\r\n if ((errorClass ?? \"\").length > 0) {\r\n $intendedUses.addClass(errorClass);\r\n }\r\n\r\n if ((validClass ?? \"\").length > 0) {\r\n $intendedUses.removeClass(validClass);\r\n }\r\n }\r\n },\r\n unhighlight: function (element, errorClass, validClass) {\r\n const $element = $(element);\r\n const $phoneTypeContainer = $element.closest(\".phone-types\");\r\n const isIntendedUse = $element.is(\"[name='IntendedUse']\");\r\n\r\n if ($phoneTypeContainer.length > 0) {\r\n if ((errorClass ?? \"\").length > 0) {\r\n $phoneTypeContainer.removeClass(errorClass);\r\n }\r\n\r\n if ((validClass ?? \"\").length > 0) {\r\n $phoneTypeContainer.addClass(validClass);\r\n }\r\n } else {\r\n if ((errorClass ?? \"\").length > 0) {\r\n $element.removeClass(errorClass);\r\n }\r\n\r\n if ((validClass ?? \"\").length > 0) {\r\n $element.addClass(validClass);\r\n }\r\n }\r\n\r\n if (isIntendedUse) {\r\n if ((errorClass ?? \"\").length > 0) {\r\n $intendedUses.removeClass(errorClass);\r\n }\r\n\r\n if ((validClass ?? \"\").length > 0) {\r\n $intendedUses.addClass(validClass);\r\n }\r\n }\r\n },\r\n success: function ($label) {\r\n // Helper for removing the error class from the custom\r\n // radio container.\r\n $label\r\n .closest(\".custom-sp-label-wrapper\")\r\n .find(\".labelled-container.error\")\r\n .removeClass(\"error\");\r\n },\r\n invalidHandler: function (event, validator) {\r\n // Helper for adding the error class to the \r\n // radio container.\r\n for (let errorEntry of validator.errorList) {\r\n var $parent = $(errorEntry.element).closest(\".labelled-container\");\r\n\r\n if ($parent.length === 0) {\r\n continue;\r\n }\r\n\r\n $parent.addClass(validator.settings.errorClass);\r\n }\r\n },\r\n });\r\n\r\n //#endregion\r\n\r\n //#region Html Functions\r\n\r\n /**\r\n * @returns {boolean}\r\n */\r\n function validatePractionerLookupFormHtml() {\r\n var result = $validator.form();\r\n\r\n if (!result) {\r\n $validator.focusInvalid();\r\n }\r\n\r\n return result;\r\n }\r\n\r\n var toggleResultsCollapsable = (function () {\r\n var isCallbackQueued = false;\r\n var lastShow = false;\r\n\r\n /**\r\n * Able to toggle the collapsible even when transitioning.\r\n * @param {boolean} show\r\n * @returns {void}\r\n */\r\n return (show) => {\r\n lastShow = show;\r\n\r\n if (isCallbackQueued) {\r\n return;\r\n }\r\n\r\n var isTransitioning = $resultsCollapsableContainer.is(\".collapsing\");\r\n\r\n if (!isTransitioning) {\r\n lastShow\r\n ? resultsCollapsableContainer.show()\r\n : resultsCollapsableContainer.hide();\r\n return;\r\n } else {\r\n // Add event listener.\r\n $resultsCollapsableContainer.one(\"shown.bs.collapse hidden.bs.collapse\", function (e) {\r\n setTimeout(() => {\r\n lastShow\r\n ? resultsCollapsableContainer.show()\r\n : resultsCollapsableContainer.hide();\r\n isCallbackQueued = false;\r\n }, 1);\r\n });\r\n }\r\n }\r\n })();\r\n\r\n /**\r\n * @param {boolean} show\r\n * @returns {void}\r\n */\r\n function showLoadingSpinners(show) {\r\n if (show) {\r\n $loadingSpinners.removeClass(\"d-none\");\r\n $searchBtn.addClass(\"disabled\").attr(\"disabled\", \"disabled\");\r\n $selectedPartEl.addClass(\"disabled\").attr(\"disabled\", \"disabled\");\r\n $postalCodeEl.addClass(\"disabled\").attr(\"disabled\", \"disabled\");\r\n $practitionersWithinRangeEl.addClass(\"disabled\").attr(\"disabled\", \"disabled\");\r\n toggleResultsCollapsable(false);\r\n } else {\r\n $loadingSpinners.addClass(\"d-none\");\r\n $selectedPartEl.removeClass(\"disabled\").attr(\"disabled\", null);\r\n $postalCodeEl.removeClass(\"disabled\").attr(\"disabled\", null);\r\n $practitionersWithinRangeEl.removeClass(\"disabled\").attr(\"disabled\", null);\r\n toggleResultsCollapsable(true);\r\n\r\n var hasSearchResults = $practitionerResultsList.find(\".js-search-result\").length > 0;\r\n\r\n if (hasSearchResults) {\r\n // Has results.\r\n $noResultsContainer.addClass(\"d-none\");\r\n $hasResultsContainer.removeClass(\"d-none\");\r\n } else {\r\n // No results.\r\n $noResultsContainer.removeClass(\"d-none\");\r\n $hasResultsContainer.addClass(\"d-none\");\r\n }\r\n }\r\n }\r\n\r\n function postalCodeFieldEnableDisable(e) {\r\n if ($('#PostalCode').val().length >= 5 && $('#PostalCode').val().length < 9 && $('#PostalCode').val() != resultsForPostalCode) {\r\n postalCodeEntered = $('#PostalCode').val();\r\n $searchBtn.removeClass(\"disabled\").attr(\"disabled\", null);\r\n }\r\n else {\r\n $searchBtn.addClass(\"disabled\").attr(\"disabled\", \"disabled\");\r\n }\r\n }\r\n\r\n /**\r\n * @param {HcpSearchResultsDtoPartial & { partNo: string, productSlug: string }} data\r\n * @returns {void}\r\n */\r\n function setAvailablePractionersHtml(data) {\r\n if (data === null || data === undefined) {\r\n throw new Error(\"The argument \\\"data\\\" cannot be null nor undefined.\");\r\n }\r\n\r\n // Remove error messages.\r\n $errorContainer.html(\"\");\r\n\r\n // Show error messages if any.\r\n if (data.errors !== null && data.errors !== undefined) {\r\n console.error(data.errors);\r\n for (var eKey in data.errors) {\r\n var errors = data.errors[eKey];\r\n // Use the bindViewModelToHtml(...) function to create the html to append to the errors container.\r\n var $errorEl = $(`

${errors.join(\"
\")}

`);\r\n $errorContainer.append($errorEl);\r\n }\r\n }\r\n\r\n // Remove all the search results.\r\n $practitionerResultsList.html(\"\");\r\n\r\n var template = `\r\n
\r\n
\r\n
\r\n
\r\n

\r\n {{customerName}}\r\n

\r\n
\r\n \r\n
\r\n \r\n \r\n {{cityStateZip}}\r\n \r\n

\r\n \r\n {{distance}} mi\r\n

\r\n
\r\n
\r\n
\r\n
\r\n Order Here\r\n
\r\n
\r\n
\r\n
`;\r\n\r\n for (var practitionerRecord of data.value) {\r\n var twWebsite = (practitionerRecord.purchasingOptionsV2 ?? [])\r\n .find(x => x.salesChannel === \"TW\")\r\n ?.hcpUrl ?? \"\";\r\n\r\n if (twWebsite !== \"\") {\r\n var originalTWUrl = new URL(twWebsite);\r\n var urlWithCorrectPath = new URL(\"/products/\" + data.productSlug + \"?partNo=\" + data.partNo, originalTWUrl);\r\n twWebsite = urlWithCorrectPath.href;\r\n }\r\n var viewModel = {\r\n partNo: data.partNo,\r\n customerName: practitionerRecord.customerName,\r\n addressLine1: practitionerRecord.addressLine1 ?? \"\",\r\n cityStateZip: (practitionerRecord.city + ', ' + practitionerRecord.stateProvince + ' ' + practitionerRecord.postalCode) ?? \"\",\r\n phoneNumber: practitionerRecord.phoneNumber ?? \"\",\r\n website: twWebsite ?? \"\",\r\n distance: practitionerRecord.distance,\r\n gaddress: encodeURIComponent(practitionerRecord.address),\r\n };\r\n\r\n var newElStr = bindViewModelToHtml(viewModel, template);\r\n $practitionerResultsList.append(newElStr);\r\n }\r\n\r\n if (data.value.length === 0) {\r\n // Show no results.\r\n $noResultsContainer.removeClass(\"d-none\");\r\n $hasResultsContainer.addClass(\"d-none\");\r\n } else {\r\n // Show the results.\r\n $noResultsContainer.addClass(\"d-none\");\r\n $hasResultsContainer.removeClass(\"d-none\");\r\n }\r\n }\r\n\r\n /**\r\n * @param {string} postalCode\r\n * @returns {void}\r\n */\r\n function setPostalCodeHtml(postalCode) {\r\n $postalCodeEl.val(postalCode);\r\n }\r\n\r\n /**\r\n * @returns {{postalCode: string, range: number, partNumbers: string[], page: number, pageSize: number, isVeterinary: boolean}}\r\n */\r\n function getPractitionerLookupDataHtml() {\r\n var postalCode = $postalCodeEl.val();\r\n var range = Number.parseInt($practitionersWithinRangeEl.val());\r\n var partNo = $selectedPartEl.val();\r\n var $selectedOption = $selectedPartEl.find(\"option[value='\" + partNo + \"']\");\r\n if ($selectedOption.length == 0) {\r\n $selectedOption = $('#SelectedPart');\r\n }\r\n\r\n \r\n var isVeterinary = $selectedOption.attr(\"data-is-veterinary\") === \"true\";\r\n\r\n if (Number.isNaN(range)) {\r\n range = 5;\r\n }\r\n\r\n return {\r\n postalCode,\r\n range,\r\n partNumbers: [partNo],\r\n page: 0,\r\n pageSize: 5,\r\n isVeterinary: isVeterinary,\r\n };\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Api Functions\r\n\r\n /**\r\n * @param {object} data\r\n * @param {boolean} data.isVeterinary\r\n * @param {string} data.partNo\r\n * @param {string} data.postalCode\r\n * @param {number} data.range\r\n * @param {number} data.page\r\n * @param {number} data.pageSize\r\n * @returns {Promise}\r\n */\r\n function lookupPractitonersAsync(data) {\r\n if (data === undefined || data === null) {\r\n throw new Error(\"The argument \\\"data\\\" cannot be null nor undefined.\");\r\n }\r\n\r\n var request = new Request(searchPractitionersUrl, {\r\n signal: abortController.signal,\r\n method: \"POST\",\r\n body: JSON.stringify(data),\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n });\r\n\r\n /** @type {Response|null} */\r\n var response = null;\r\n\r\n return fetch(request)\r\n .then(r => {\r\n response = r;\r\n\r\n if (response.ok) {\r\n resultsForPostalCode = data.postalCode;\r\n return response.json();\r\n } else {\r\n var hasContentLengthHeader = response.headers.has(\"Content-Length\");\r\n var hasContentTypeHeader = response.headers.has(\"Content-Type\");\r\n\r\n if (!hasContentLengthHeader) {\r\n return \"Failed to determine the address from the ip address.\";\r\n } else if (hasContentTypeHeader && response.headers.get(\"Content-Type\") === \"application.json\") {\r\n return response.json();\r\n } else {\r\n return response.text();\r\n }\r\n }\r\n })\r\n .then(x => {\r\n if (response.ok) {\r\n $searchBtn.addClass(\"disabled\").attr(\"disabled\", \"disabled\");\r\n return x;\r\n } else {\r\n $searchBtn.removeClass(\"disabled\").attr(\"disabled\", null);\r\n throw new Error(x);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Retrieves the postal code of the users ip address.\r\n * @returns {Promise}\r\n */\r\n function getCurrentPositionServerAsync() {\r\n var request = new Request(ipFinderUrl);\r\n\r\n /** @type {Request} */\r\n var response = null;\r\n\r\n return fetch(request)\r\n .then(r => {\r\n response = r;\r\n\r\n if (response.ok) {\r\n return response.json();\r\n } else {\r\n var hasContentLengthHeader = response.headers.has(\"Content-Length\");\r\n var hasContentTypeHeader = response.headers.has(\"Content-Type\");\r\n\r\n if (!hasContentLengthHeader) {\r\n return Promise.reject(response.status);\r\n } else if (hasContentTypeHeader && response.headers.get(\"Content-Type\") === \"application.json\") {\r\n return response.json();\r\n } else {\r\n return response.text();\r\n }\r\n }\r\n })\r\n .then(x => {\r\n if (response.ok) {\r\n return x;\r\n } else {\r\n throw new Error(x);\r\n }\r\n });\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Misc Functions\r\n\r\n /**\r\n * Refreshes the search results.\r\n */\r\n function refreshSearchResults() {\r\n var isFormValid = validatePractionerLookupFormHtml();\r\n\r\n if (!isFormValid) {\r\n return;\r\n }\r\n\r\n resetAbortController();\r\n showLoadingSpinners(true);\r\n var lookupData = getPractitionerLookupDataHtml();\r\n var $selectedOption = $selectedPartEl.find(\"option[value='\" + lookupData.partNumbers[0] + \"']\");\r\n if ($selectedOption.length == 0) {\r\n $selectedOption = $('#SelectedPart');\r\n }\r\n var productSlug = $selectedOption.attr(\"data-product-slug\");\r\n\r\n lookupPractitonersAsync(lookupData)\r\n .then(data => setAvailablePractionersHtml({\r\n ...data,\r\n partNo: lookupData.partNumbers[0],\r\n productSlug: productSlug,\r\n }))\r\n .catch(function (e) {\r\n if (e === \"aborted\") {\r\n // No error handling needed.\r\n return;\r\n }\r\n\r\n console.error(e);\r\n })\r\n .finally(() => showLoadingSpinners(false));\r\n }\r\n\r\n /**\r\n * Populates the template.\r\n * @param {object} viewModel Must be an object, cannot be a primitive (like\r\n * a string).\r\n * @param {string} html \r\n * @returns {string}\r\n */\r\n function bindViewModelToHtml(viewModel, html) {\r\n let htmlCopy = html;\r\n const regex = /{{(.*?)}}/gi;\r\n const viewModelKeys = Object.keys(viewModel);\r\n\r\n for (let matchArr of html.matchAll(regex)) {\r\n const htmlKey = matchArr[0];\r\n const expression = \"return this.\" + matchArr[1];\r\n const fnBinder = new Function(expression);\r\n const replacementHtml = fnBinder.call(viewModel);\r\n\r\n while (htmlCopy.includes(htmlKey)) {\r\n htmlCopy = htmlCopy.replace(htmlKey, replacementHtml);\r\n }\r\n }\r\n\r\n return htmlCopy;\r\n }\r\n\r\n function resetAbortController() {\r\n if (abortController !== null && abortController !== undefined) {\r\n abortController.abort(\"aborted\");\r\n }\r\n\r\n abortController = new AbortController();\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Event Listeners\r\n\r\n // This just needs to run once, so using \"one\" instead of \"on\".\r\n $buyNowModal.one(\"show.bs.modal\", function (e) {\r\n if (isInitialized) {\r\n return;\r\n }\r\n\r\n isInitialized = true;\r\n showLoadingSpinners(true);\r\n\r\n getCurrentPositionServerAsync()\r\n .then(postalCode => {\r\n setPostalCodeHtml(postalCode);\r\n var isFormValid = $validator.form();\r\n\r\n if (!isFormValid) {\r\n $validator.focusInvalid();\r\n }\r\n\r\n // This should not happen in the initial request but\r\n // should still check all the same.\r\n if (!isFormValid) {\r\n // Short circuit.\r\n throw new Error(\"invalid form\");\r\n }\r\n\r\n var lookupData = getPractitionerLookupDataHtml();\r\n\r\n var $selectedOption = $selectedPartEl.find(\"option[value='\" + lookupData.partNumbers[0] + \"']\");\r\n if ($selectedOption.length == 0) {\r\n $selectedOption = $('#SelectedPart');\r\n }\r\n var productSlug = $selectedOption.attr(\"data-product-slug\");\r\n\r\n return lookupPractitonersAsync(lookupData).then(x => {\r\n return {\r\n ...x,\r\n partNo: lookupData.partNumbers[0],\r\n productSlug: productSlug,\r\n }\r\n });\r\n })\r\n .then(data => {\r\n resultsForPostalCode = data.postalCode\r\n setAvailablePractionersHtml(data);\r\n })\r\n .catch(function (e) {\r\n if (\"message\" in e && e.message === \"aborted\") {\r\n // No error handling needed.\r\n return;\r\n } else if (\"message\" in e && e.message === \"invalid form\") {\r\n // No error handling needed.\r\n return;\r\n }\r\n console.error(e);\r\n })\r\n .finally(() => showLoadingSpinners(false));\r\n });\r\n\r\n $buyNowModal.on(\"hide.bs.modal\", function (e) {\r\n resetAbortController();\r\n });\r\n\r\n $searchBtn.on(\"click\", function (e) {\r\n refreshSearchResults();\r\n });\r\n\r\n $selectedPartEl.on(\"change\", function (e) {\r\n refreshSearchResults();\r\n });\r\n\r\n $buyNowAdvancedSearchContainer.on(\"hide.bs.collapse\", function (e) {\r\n $advancedOptionsToggleBtn\r\n .find(\".js-toggle-text\")\r\n .text($advancedOptionsToggleBtn.data(\"collapsedText\"));\r\n\r\n $advancedOptionsToggleBtn\r\n .find(\".js-toggle-text + *\")\r\n /*.removeClass(\"rotate-180\");*/\r\n .removeClass(\"fa-rotate-180\");\r\n });\r\n\r\n $buyNowAdvancedSearchContainer.on(\"show.bs.collapse\", function (e) {\r\n $advancedOptionsToggleBtn\r\n .find(\".js-toggle-text\")\r\n .text($advancedOptionsToggleBtn.data(\"expandedText\"));\r\n\r\n $advancedOptionsToggleBtn\r\n .find(\".js-toggle-text + *\")\r\n //.addClass(\"rotate-180\");\r\n .addClass(\"fa-rotate-180\");\r\n });\r\n\r\n $(\"#PostalCode,#PractitionersWithinRange\").on(\"keypress\", function (e) {\r\n if (e.key === \"Enter\" && $('#PostalCode').val() != resultsForPostalCode) {\r\n $searchBtn.trigger(\"click\");\r\n }\r\n });\r\n\r\n\r\n\r\n $(document).on('blur', '#PostalCode', function (e) {\r\n postalCodeFieldEnableDisable(e);\r\n });\r\n\r\n $(document).on('input', '#PostalCode', function (e) {\r\n postalCodeFieldEnableDisable(e);\r\n });\r\n\r\n\r\n //#endregion\r\n});"],"mappings":"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"}