{"version":3,"file":"main.min.js","sources":["Pages/Main/barbour-blackbrook-directions.ts","Pages/Main/clerk.js","Pages/Main/brands.ts","Pages/Product/ProductClass.ts","Pages/Product/StockLevel.ts","Pages/Root/IVerifyEmailResponse.ts","Pages/Root/sign-in-base.ts","Pages/Main/sign-in.ts","Pages/Main/hover-intent.ts","Pages/Main/menu.ts","Pages/Main/cms-toggle.ts","Pages/Main/deferred-loader.ts","Pages/Main/parcel-tracking.ts","Pages/Main/request-our-catalogue.ts","Pages/Returns/label.ts"],"sourcesContent":["export class BarbourBlackbrookDirections {\r\n public static Init(): void {\r\n new BarbourBlackbrookDirections();\r\n }\r\n\r\n constructor() {\r\n document.querySelector(\".view-direction\")\r\n .addEventListener(\"click\", (e) => this.onViewDirectionsClicked(e));\r\n document.getElementById(\"close-directions-box\")\r\n .addEventListener(\"click\", (e) => this.onCloseDirectionsClicked(e));\r\n }\r\n\r\n private onViewDirectionsClicked(e: Event): void {\r\n e.preventDefault();\r\n\r\n document.getElementById(\"mainContent\").style.zIndex = \"99999\";\r\n document.querySelector(\".blackbrook-direction\").classList.remove(\"hidden\");\r\n document.body.classList.add(\"cms-retailstore\");\r\n // topmenu and popup-zindex appear unused.\r\n //document.querySelector(\".topmenu\").classList.add(\"popup-zindex\");\r\n }\r\n\r\n private onCloseDirectionsClicked(e: Event): void {\r\n e.preventDefault();\r\n\r\n document.getElementById(\"mainContent\").style.zIndex = \"1\";\r\n document.querySelector(\".blackbrook-direction\").classList.add(\"hidden\");\r\n document.body.classList.remove(\"cms-retailstore\");\r\n // topmenu and popup-zindex appear unused.\r\n //document.querySelector(\".topmenu\").classList.remove(\"popup-zindex\");\r\n }\r\n}\r\n\r\nif (document.body.dataset.pageInit == \"blackbrook-directions\") {\r\n BarbourBlackbrookDirections.Init();\r\n}\r\n","// Start of Clerk.io E-commerce Personalisation tool - www.clerk.io\r\n\r\nlet clerkKey = document.body.dataset.clerkKey;\r\n\r\nif (clerkKey && clerkKey !== \"NONE\") {\r\n (function (w, d) {\r\n let e = d.createElement('script'); e.type = 'text/javascript'; e.async = true;\r\n e.src = 'https://cdn.clerk.io/clerk.js';\r\n let s = d.getElementsByTagName('script')[0]; s.parentNode.insertBefore(e, s);\r\n w.__clerk_q = w.__clerk_q || []; w.Clerk = w.Clerk || function () { w.__clerk_q.push(arguments) };\r\n })(window, document);\r\n\r\n Clerk('config', {\r\n key: clerkKey,\r\n formatters: {\r\n currency_selector: function (price_list) {\r\n const currency = document.body.dataset.currency;\r\n const destinationSalesTaxRate = document.body.dataset.destinationSalesTaxRate;\r\n\r\n // Parse the string into a dictionary of [currencyCode_SalesTaxRate] and formatted prices.\r\n let price_groups_obj = JSON.parse(price_list);\r\n let formattedPrice = price_groups_obj[currency + \"_\" + destinationSalesTaxRate];\r\n\r\n return formattedPrice;\r\n },\r\n fix_url: function (url) {\r\n const domain = window.location.origin;\r\n const localeUrlPrefix = document.body.dataset.localeUrlPrefix;\r\n const path_name = new URL(url).pathname;\r\n\r\n return `${domain}${localeUrlPrefix}${path_name}`;\r\n }\r\n }\r\n });\r\n}\r\n\r\n// End of Clerk.io E-commerce Personalisation tool - www.clerk.io\r\n","export class Brands {\r\n public static Init(): Brands {\r\n return new Brands();\r\n }\r\n\r\n constructor() {\r\n this.wireUpEventHandlers();\r\n }\r\n\r\n private wireUpEventHandlers() {\r\n document.querySelectorAll(\".alphabet-select ul li\").forEach((element) => {\r\n element.addEventListener(\"click\", (e) => this.onAlphabetClicked(e, element));\r\n });\r\n }\r\n\r\n private onAlphabetClicked(e: Event, linkClicked: Element): void {\r\n let currentLetter = linkClicked.textContent.charAt(0);\r\n let currentTitle = linkClicked.textContent;\r\n\r\n e.preventDefault();\r\n\r\n if (linkClicked.classList.contains(\"select-all\")) {\r\n document.querySelector(\".brands-list h2.c-selected-title\").textContent = currentTitle;\r\n\r\n document.querySelectorAll(\"ul.c-brand-column li\")\r\n .forEach((element: HTMLElement) => {\r\n element.classList.remove(\"hidden\");\r\n element.style.display = \"block\";\r\n });\r\n\r\n document.querySelectorAll(\".brands-list .brands-list-generated\")\r\n .forEach((element) => {\r\n element.remove();\r\n });\r\n } else if (linkClicked.classList.contains(\"empty\")) {\r\n //Do nothing\r\n } else if (linkClicked.classList.contains(\"select-number\")) { // These brands are not shown as number links but grouped under the # symbol.\r\n let brandNumberLinks = document.querySelectorAll(\"ul.c-brand-column li.item-number\");\r\n\r\n this.buildListFromBrandClass(currentTitle, brandNumberLinks);\r\n } else {\r\n let brandLinks = document.querySelectorAll(\"ul.c-brand-column li.item-\" + currentLetter);\r\n\r\n this.buildListFromBrandClass(currentTitle, brandLinks);\r\n }\r\n }\r\n\r\n private buildListFromBrandClass(currentTitle: string, brandLinks: NodeListOf) {\r\n\r\n document.querySelector(\".brands-list h2.c-selected-title\").textContent = currentTitle;\r\n\r\n document.querySelectorAll(\"ul.c-brand-column li\")\r\n .forEach((element: HTMLElement) => {\r\n element.classList.add(\"hidden\");\r\n });\r\n\r\n let brandListElement = document.querySelector(\".brands-list .brands-list-generated\");\r\n if (brandListElement) {\r\n brandListElement.remove();\r\n }\r\n\r\n document.querySelector(\".brands-list\")\r\n .insertAdjacentHTML(\"beforeend\", \"
\");\r\n\r\n brandListElement = document.querySelector(\".brands-list .brands-list-generated ul\");\r\n for (const brandLink of brandLinks) {\r\n brandListElement.insertAdjacentHTML(\"beforeend\", \"
  • \" + brandLink.innerHTML + \"
  • \");\r\n }\r\n }\r\n}\r\nif (document.body.dataset.pageInit == \"brands\") {\r\n Brands.Init();\r\n}","export enum ProductClass {\r\n PhysicalProduct = 0,\r\n GiftCard = 1\r\n}\r\n","export enum StockLevel {\r\n Stock_NotSelected = 0,\r\n Stock_InStock = 1,\r\n Stock_LowStock = 2,\r\n Stock_Enquiries = 3,\r\n Stock_Unavailable = 4\r\n}\r\n","export enum CustomerAccountState {\r\n DoesNotExist = 0,\r\n AccountDisabled = 1,\r\n Interactive = 2,\r\n NotInteractive = 3,\r\n UnknownAccountError = 4,\r\n}\r\n\r\nexport interface IVerifyEmailResponse {\r\n customerAccountState: CustomerAccountState;\r\n}\r\n\r\nexport enum SignInPanels {\r\n Email = 1,\r\n Password = 2,\r\n SetPassword = 3,\r\n Validation = 4,\r\n}\r\n","import { CustomerAccountState, IVerifyEmailResponse, SignInPanels } from \"./IVerifyEmailResponse\";\r\n\r\nexport class SignInBase {\r\n private continueElement = document.getElementById(\"continue\");\r\n private emailElement = document.getElementById(\"Email\") as HTMLInputElement;\r\n private readonly formSelector = \"#sign-in-form\";\r\n private backToEmailPanelElement = document.getElementById(\"back-to-email-panel-link\");\r\n private localeUrlPrefix: string;\r\n private passwordElement = document.getElementById(\"Password\") as HTMLInputElement;\r\n private setPasswordElement = document.getElementById(\"SetPassword\") as HTMLInputElement;\r\n private validationCodeElement = document.getElementById(\"ValidationCode\") as HTMLInputElement;\r\n\r\n constructor(private context: string, private newAccountUrl: string, private verifyLoginUrl: string, private setPasswordUrl: string) {\r\n this.backToEmailPanelElement.onclick = (ev) => this.onBackToEmailPanelClicked(ev);\r\n this.continueElement.onclick = async (ev) => await this.onContinueClickedAsync(ev);\r\n this.localeUrlPrefix = document.body.dataset.localeUrlPrefix;\r\n\r\n this.registerEnterKeyCallback(this.emailElement, () => { this.verifyEmail(); })\r\n this.registerEnterKeyCallback(this.passwordElement, async () => { await this.verifyLoginAsync(); })\r\n this.registerEnterKeyCallback(this.setPasswordElement, () => { this.setPassword(); })\r\n this.registerEnterKeyCallback(this.validationCodeElement, () => { this.validateAccount(); })\r\n }\r\n\r\n private verifyEmail(): void {\r\n\r\n if (!window.validationService.isFieldValid(this.emailElement)) {\r\n return;\r\n }\r\n\r\n window.FormSubmitToggle.DisableForm(this.formSelector);\r\n fetch(this.localeUrlPrefix + \"/ws/verify-email\", {\r\n body: JSON.stringify({ email: this.emailElement.value }),\r\n headers: { 'Content-Type': 'application/json' },\r\n method: \"post\",\r\n }).then((response: Response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n window.IssueLogger.log(\"Unable to validate email address.\", this.context);\r\n this.showValidationError(\"Unable to verify your email address.\", SignInPanels.Email);\r\n window.FormSubmitToggle.EnableForm(this.formSelector);\r\n }).then((data: IVerifyEmailResponse) => {\r\n if (!data) { // Server or transport error.\r\n window.IssueLogger.log(\"Server error validating email address.\", this.context);\r\n this.showValidationError(\"Unable to check your email address.\", SignInPanels.Email);\r\n window.FormSubmitToggle.EnableForm(this.formSelector);\r\n return;\r\n }\r\n\r\n if (data.customerAccountState === CustomerAccountState.Interactive) {\r\n let passwordLabel = document.getElementById(\"password-label\");\r\n\r\n passwordLabel.innerText = \"Please enter your password for \" + this.emailElement.value + \":\";\r\n this.setPanelVisibility(SignInPanels.Password);\r\n window.FormSubmitToggle.EnableForm(this.formSelector);\r\n }\r\n else if (data.customerAccountState === CustomerAccountState.DoesNotExist) {\r\n // No account by that email, move on to account create.\r\n window.location.href = this.newAccountUrl;\r\n }\r\n else if (data.customerAccountState === CustomerAccountState.NotInteractive) {\r\n this.setPanelVisibility(SignInPanels.Validation);\r\n window.FormSubmitToggle.EnableForm(this.formSelector);\r\n }\r\n else if (data.customerAccountState === CustomerAccountState.AccountDisabled) {\r\n this.setPanelVisibility(SignInPanels.Email);\r\n this.showValidationError(\"This account has been locked, please contact customer services for more information.\", SignInPanels.Email);\r\n window.FormSubmitToggle.EnableForm(this.formSelector);\r\n }\r\n else {\r\n window.FormSubmitToggle.EnableForm(this.formSelector);\r\n this.setPanelVisibility(SignInPanels.Email);\r\n this.showValidationError(\"We could not log you in, if this problem persists please contact customer services.\", SignInPanels.Email);\r\n }\r\n });\r\n }\r\n\r\n private showValidationError(errorText: string, panel: SignInPanels): void {\r\n this.setPanelError(errorText, SignInPanels.Email, panel === SignInPanels.Email);\r\n this.setPanelError(errorText, SignInPanels.Password, panel === SignInPanels.Password);\r\n this.setPanelError(errorText, SignInPanels.SetPassword, panel === SignInPanels.SetPassword);\r\n this.setPanelError(errorText, SignInPanels.Validation, panel === SignInPanels.Validation);\r\n }\r\n\r\n private setPanelError(text: string, panel: SignInPanels, isPanelActive: boolean): void {\r\n let elementId = \"email-error-message\";\r\n\r\n if (panel === SignInPanels.Password) {\r\n elementId = \"password-error-message\";\r\n }\r\n else if (panel === SignInPanels.SetPassword) {\r\n elementId = \"set-password-error-message\";\r\n }\r\n else if (panel === SignInPanels.Validation) {\r\n elementId = \"validation-error-message\";\r\n }\r\n\r\n let errorSpan = document.getElementById(elementId);\r\n errorSpan.innerText = text;\r\n\r\n if (isPanelActive) {\r\n errorSpan.classList.remove(\"field-validation-valid\");\r\n errorSpan.classList.add(\"field-validation-error\");\r\n }\r\n else {\r\n errorSpan.classList.remove(\"field-validation-error\");\r\n errorSpan.classList.add(\"field-validation-valid\");\r\n }\r\n }\r\n\r\n private onBackToEmailPanelClicked(ev): void {\r\n ev.preventDefault();\r\n this.setPanelVisibility(SignInPanels.Email);\r\n }\r\n\r\n // TODO: Standardise. This is based on the jQuery version and is the best one to use throughout the site.\r\n private isVisible(el: HTMLElement): boolean {\r\n return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\r\n }\r\n\r\n private async onContinueClickedAsync(ev): Promise {\r\n ev.preventDefault();\r\n\r\n if (this.isVisible(this.emailElement)) {\r\n if (window.validationService.isFieldValid(this.emailElement)) {\r\n this.verifyEmail();\r\n }\r\n }\r\n else if (this.isVisible(this.validationCodeElement)) {\r\n if (window.validationService.isFieldValid(this.validationCodeElement)) {\r\n this.validateAccount();\r\n }\r\n }\r\n else if (this.isVisible(this.setPasswordElement)) {\r\n if (window.validationService.isFieldValid(this.setPasswordElement)) {\r\n this.setPassword();\r\n }\r\n }\r\n else if (window.validationService.isFieldValid(this.passwordElement)) {\r\n await this.verifyLoginAsync();\r\n }\r\n }\r\n\r\n private async verifyLoginAsync(): Promise {\r\n\r\n if (!this.isVisible(this.passwordElement) && window.validationService.isFieldValid(this.passwordElement)) {\r\n // If password field not visible, then make it visible.\r\n this.setPanelVisibility(SignInPanels.Password);\r\n return;\r\n }\r\n\r\n try {\r\n let postData = {\r\n email: this.emailElement.value,\r\n password: this.passwordElement.value,\r\n returnUrl: window.UrlParser.GetParameterByName(\"ReturnUrl\")\r\n };\r\n\r\n window.FormSubmitToggle.DisableForm(this.formSelector);\r\n\r\n const response = await fetch(this.localeUrlPrefix + this.verifyLoginUrl, {\r\n body: JSON.stringify(postData),\r\n headers: { 'Content-Type': 'application/json' },\r\n method: \"post\",\r\n });\r\n\r\n if (response.ok) {\r\n const data = await response.json();\r\n\r\n if (!data) { // Server or transport error.\r\n await this.logAndShowErrorAsync(\"Unable to check your login due to an error.\", \"Unable to log in due to server error.\");\r\n return;\r\n }\r\n\r\n if (data.redirectUrl) {\r\n // Email / password combo works.\r\n window.location.href = data.redirectUrl;\r\n } else {\r\n // Failed to login.\r\n await this.logAndShowErrorAsync(data.errorText)\r\n }\r\n } else {\r\n await this.logAndShowErrorAsync(\"Unable to log you in due to an error.\", \"Unable to log in.\");\r\n }\r\n } catch (error) {\r\n await this.logAndShowErrorAsync(\"An unexpected error occurred.\", \"Fetch error: \" + error.message);\r\n }\r\n }\r\n\r\n private async logAndShowErrorAsync(userMessage: string, techMessage: string = \"\"): Promise {\r\n if (techMessage) {\r\n // Tech message is optional and only logged if there is a real error.\r\n window.IssueLogger.log(techMessage, this.context);\r\n }\r\n this.showValidationError(userMessage, SignInPanels.Password);\r\n await this.clearPasswordEntryAsync();\r\n window.FormSubmitToggle.EnableForm(this.formSelector);\r\n }\r\n\r\n private async clearPasswordEntryAsync(): Promise {\r\n // Reset the password field validation.\r\n let form = document.querySelector(this.formSelector) as HTMLFormElement;\r\n await window.validationService.validateForm(form);\r\n\r\n this.passwordElement.value = \"\";\r\n let passwordValidator = document.getElementById(\"password-main-validation\");\r\n passwordValidator.innerText = \"\";\r\n passwordValidator.classList.add(\"field-validation-valid\");\r\n passwordValidator.classList.remove(\"field-validation-error\");\r\n }\r\n\r\n private setPassword(): void {\r\n\r\n if (this.isVisible(this.setPasswordElement) && window.validationService.isFieldValid(this.setPasswordElement)) {\r\n\r\n let postData = {\r\n email: this.emailElement.value,\r\n newPassword: this.setPasswordElement.value,\r\n validationCode: this.validationCodeElement.value,\r\n };\r\n\r\n window.FormSubmitToggle.DisableForm(this.formSelector);\r\n fetch(this.localeUrlPrefix + this.setPasswordUrl, {\r\n body: JSON.stringify(postData),\r\n headers: { 'Content-Type': 'application/json' },\r\n method: \"post\",\r\n }).then((response: Response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n window.IssueLogger.log(\"Unable to set account active.\", this.context);\r\n this.showValidationError(\"Unable to set your password due to an error.\", SignInPanels.SetPassword);\r\n window.FormSubmitToggle.EnableForm(this.formSelector);\r\n }).then((data) => {\r\n if (!data) { // Server or transport error.\r\n window.IssueLogger.log(\"Unable to set account active due to server error.\", this.context);\r\n this.showValidationError(\"Unable to set your account up due to an error.\", SignInPanels.SetPassword);\r\n window.FormSubmitToggle.EnableForm(this.formSelector);\r\n return;\r\n }\r\n\r\n if (data.success) {\r\n window.location.href = data.redirectUrl;\r\n }\r\n else {\r\n this.showValidationError(\"Unable to set your password, please ensure it is more than 6 characters.\", SignInPanels.SetPassword);\r\n window.FormSubmitToggle.EnableForm(this.formSelector);\r\n }\r\n });\r\n }\r\n else {\r\n this.setPanelVisibility(SignInPanels.SetPassword);\r\n }\r\n }\r\n\r\n private validateAccount(): void {\r\n\r\n if (this.isVisible(this.validationCodeElement) && window.validationService.isFieldValid(this.validationCodeElement)) {\r\n\r\n let postData = {\r\n email: this.emailElement.value,\r\n validationCode: this.validationCodeElement.value,\r\n };\r\n\r\n window.FormSubmitToggle.DisableForm(this.formSelector);\r\n fetch(this.localeUrlPrefix + \"/ws/validate-account\", {\r\n body: JSON.stringify(postData),\r\n headers: { 'Content-Type': 'application/json' },\r\n method: \"post\",\r\n }).then((response: Response) => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n window.IssueLogger.log(\"Unable to validate account.\", this.context);\r\n this.showValidationError(\"Unable to validate your account due to an error.\", SignInPanels.Validation);\r\n window.FormSubmitToggle.EnableForm(this.formSelector);\r\n }).then((data) => {\r\n window.FormSubmitToggle.EnableForm(this.formSelector);\r\n if (!data) { // Server or transport error.\r\n window.IssueLogger.log(\"Unable to validate account due to server error.\", this.context);\r\n this.showValidationError(\"Unable to check your log in due to an error.\", SignInPanels.Validation);\r\n return;\r\n }\r\n\r\n if (data.accountValidated) {\r\n // Account validated OK, check password.\r\n this.setPanelVisibility(SignInPanels.SetPassword);\r\n }\r\n else {\r\n this.showValidationError(\"The validation code did not match, please check and try again.\", SignInPanels.Validation);\r\n }\r\n });\r\n }\r\n else {\r\n // If password field not visible, then make it visible.\r\n this.setPanelVisibility(SignInPanels.Validation);\r\n }\r\n }\r\n\r\n private setPanelVisibility(panelToMakeVisible: SignInPanels): void {\r\n let panelEmail = document.getElementById(\"sign-in-email\");\r\n let panelPassword = document.getElementById(\"sign-in-password\");\r\n let panelSetPassword = document.getElementById(\"sign-in-set-password\");\r\n let panelValidation = document.getElementById(\"sign-in-validation\");\r\n\r\n panelEmail.classList.add(\"hidden\");\r\n panelPassword.classList.add(\"hidden\");\r\n panelSetPassword.classList.add(\"hidden\");\r\n panelValidation.classList.add(\"hidden\");\r\n this.backToEmailPanelElement.classList.add(\"hidden\");\r\n\r\n if (panelToMakeVisible == SignInPanels.Email) {\r\n panelEmail.classList.remove(\"hidden\");\r\n this.emailElement.focus();\r\n }\r\n else if (panelToMakeVisible == SignInPanels.Password) {\r\n panelPassword.classList.remove(\"hidden\");\r\n this.backToEmailPanelElement.classList.remove(\"hidden\");\r\n this.passwordElement.focus();\r\n }\r\n else if (panelToMakeVisible == SignInPanels.SetPassword) {\r\n panelSetPassword.classList.remove(\"hidden\");\r\n this.backToEmailPanelElement.classList.remove(\"hidden\");\r\n this.setPasswordElement.focus();\r\n }\r\n else {\r\n panelValidation.classList.remove(\"hidden\");\r\n this.backToEmailPanelElement.classList.remove(\"hidden\");\r\n this.validationCodeElement.focus();\r\n }\r\n }\r\n\r\n private registerEnterKeyCallback(element: HTMLElement, callback: Function): void {\r\n element.addEventListener(\"keyup\", (ev) => {\r\n if (ev.key == \"Enter\") {\r\n if (window.FormSubmitToggle.IsFormEnabled(this.formSelector)) {\r\n callback();\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import { SignInBase } from \"../Root/sign-in-base\";\r\n\r\nexport class SignIn extends SignInBase {\r\n public static Init(): void {\r\n new SignIn();\r\n }\r\n\r\n constructor() {\r\n super(\"sign-in\", \"/register-customer\", \"/ws/verify-login\", \"/ws/set-password\");\r\n }\r\n}\r\n\r\nif (document.body.dataset.pageInit == \"sign-in-account\") {\r\n SignIn.Init();\r\n}\r\n","\r\n/**\r\n * Options for the hover intent class.\r\n */\r\nexport interface HoverIntentOptions {\r\n sensitivity?: number; // sensitivity threshold (must be 1 or higher)\r\n interval?: number; // milliseconds for onMouseOver polling interval\r\n timeout?: number; // milliseconds delay before onMouseOut\r\n}\r\n\r\n// Used by the mega menu to make navigation easier so that the mouse in / out events\r\n// are delayed. This helps when the user tracks the mouse from the menu parent to its children\r\n// and it goes over the parent menus siblings. If this wasn't in place, the parent menu would\r\n// disappear before the user got to the child elements.\r\n//\r\n// Usage with defaults;\r\n// const hover = new Outdoor.Pages.HoverIntent(element, onOverCallback, onOutCallback);\r\n// Usage with custom values applied over defaults;\r\n// const hover = new Outdoor.Pages.HoverIntent(element, onOverCallback, onOutCallback)\r\n// .configure({ sensitivity: 10, interval: 150 });\r\nexport class HoverIntent {\r\n private x: number = 0;\r\n private y: number = 0;\r\n private pX: number = 0;\r\n private pY: number = 0;\r\n private state: number = 0;\r\n private timer: number | null = null;\r\n\r\n // Default options.\r\n private options: HoverIntentOptions = {\r\n sensitivity: 3,\r\n interval: 100,\r\n timeout: 500,\r\n };\r\n\r\n constructor(private el: HTMLElement, private onOver: (e: MouseEvent) => void, private onOut: (e: MouseEvent) => void) {\r\n if (this.el) {\r\n this.el.addEventListener('mouseover', (e) => this.dispatchOver(e));\r\n this.el.addEventListener('mouseout', (e) => this.dispatchOut(e));\r\n }\r\n }\r\n\r\n private delay(e: MouseEvent): void {\r\n if (this.timer) {\r\n clearTimeout(this.timer);\r\n this.timer = null;\r\n }\r\n this.state = 0;\r\n this.onOut.call(this.el, e);\r\n }\r\n\r\n private tracker(e: MouseEvent): void {\r\n this.x = e.clientX;\r\n this.y = e.clientY;\r\n }\r\n\r\n private compare(e: MouseEvent): void {\r\n if (this.timer) {\r\n clearTimeout(this.timer);\r\n this.timer = null;\r\n }\r\n if ((Math.abs(this.pX - this.x) + Math.abs(this.pY - this.y)) < this.options.sensitivity) {\r\n this.state = 1;\r\n this.onOver.call(this.el, e);\r\n } else {\r\n this.pX = this.x;\r\n this.pY = this.y;\r\n this.timer = window.setTimeout(() => this.compare(e), this.options.interval);\r\n }\r\n }\r\n\r\n public configure(opt: Partial): HoverIntent {\r\n Object.assign(this.options, opt);\r\n return this;\r\n }\r\n\r\n private dispatchOver(e: MouseEvent): void {\r\n if (this.timer) {\r\n clearTimeout(this.timer);\r\n this.timer = null;\r\n }\r\n\r\n this.el.removeEventListener('mousemove', this.tracker.bind(this));\r\n\r\n if (this.state !== 1) {\r\n this.pX = e.clientX;\r\n this.pY = e.clientY;\r\n\r\n this.el.addEventListener('mousemove', this.tracker.bind(this));\r\n\r\n this.timer = window.setTimeout(() => this.compare(e), this.options.interval);\r\n }\r\n }\r\n\r\n private dispatchOut(e: MouseEvent): void {\r\n if (this.timer) {\r\n clearTimeout(this.timer);\r\n this.timer = null;\r\n }\r\n this.el.removeEventListener('mousemove', this.tracker.bind(this));\r\n\r\n if (this.state === 1) {\r\n this.timer = window.setTimeout(() => this.delay(e), this.options.timeout);\r\n }\r\n }\r\n\r\n public remove(): void {\r\n if (!this.el) {\r\n return;\r\n }\r\n this.el.removeEventListener('mouseover', (e) => this.dispatchOver(e));\r\n this.el.removeEventListener('mouseout', (e) => this.dispatchOut(e));\r\n }\r\n}\r\n","import { HoverIntent } from \"./hover-intent.js\";\r\n\r\nexport class Menu {\r\n private readonly mobileMenuTrigger = document.getElementsByClassName(\"header_mobile_menu\")[0];\r\n private readonly topMenu = document.getElementsByClassName(\"top_menu\")[0];\r\n private readonly topLevel: HTMLUListElement;\r\n private readonly mobileClose = document.getElementsByClassName(\"mobile_close\")[0];\r\n private readonly html = document.getElementsByTagName(\"html\")[0];\r\n\r\n public static Init(): void {\r\n new Menu();\r\n }\r\n\r\n constructor() {\r\n if (this.mobileMenuTrigger) { // Menu is not shown on the checkout pages.\r\n this.topLevel = this.topMenu.querySelector(\":scope > ul\");\r\n this.wireUpCountrySwitcher();\r\n this.wireUpTopMenuEvents();\r\n this.wireUpMobileEvents();\r\n }\r\n }\r\n\r\n private wireUpMobileEvents(): void {\r\n this.mobileMenuTrigger.addEventListener(\"click\", () => this.openMobileMenu());\r\n this.mobileClose.addEventListener(\"click\", (e) => this.closeMobileMenu(e));\r\n // We only have the top category menu at startup but still need to capture the top level clicks.\r\n this.wireUpMobileMenuEvents(this.topMenu);\r\n }\r\n\r\n private openMobileMenu(): void {\r\n this.topMenu.classList.add(\"active\");\r\n this.mobileMenuTrigger.classList.add(\"active\");\r\n this.html.classList.add(\"off_canvas\");\r\n }\r\n\r\n private closeMobileMenu(e?: Event): void {\r\n this.topMenu.classList.remove(\"active\");\r\n this.topLevel.classList.remove(\"active\");\r\n\r\n // Remove active class from all child elements of the menu in one go.\r\n let activeElements = this.topLevel.querySelectorAll(\".active\");\r\n activeElements.forEach(element => {\r\n element.classList.remove(\"active\");\r\n });\r\n\r\n this.mobileMenuTrigger.classList.remove(\"active\");\r\n this.html.classList.remove(\"off_canvas\");\r\n e?.preventDefault(); // Optional event parameter, can be triggered from code.\r\n }\r\n\r\n private onMobileSubNavTriggerPressed(e: Event): void {\r\n let el = e.target as Element;\r\n el.closest(\"div\").classList.add(\"hide_action\");\r\n el.parentElement.classList.add(\"active\");\r\n el.parentElement.parentElement.classList.add(\"active\");\r\n }\r\n\r\n private onMobileBackMenuPressed(e: Event): void {\r\n let el = e.target as Element;\r\n el.closest(\"div.hide_action\").classList.remove(\"hide_action\");\r\n el.closest(\"ul.active\").classList.remove(\"active\");\r\n el.closest(\"li.active\").classList.remove(\"active\");\r\n }\r\n\r\n private wireUpCountrySwitcher(): void {\r\n let switchLinks = >document.querySelectorAll(\".switch-currency\");\r\n\r\n for (const switchLink of switchLinks) {\r\n switchLink.addEventListener(\"click\", (e) => this.onCountrySwitcherClicked(e));\r\n }\r\n }\r\n\r\n private onCountrySwitcherClicked(e: MouseEvent): void {\r\n e.preventDefault();\r\n let clickedElement = e.currentTarget;\r\n let dropdown = clickedElement.nextElementSibling;\r\n\r\n dropdown.classList.toggle(\"hidden\");\r\n }\r\n\r\n private wireUpTopMenuEvents(): void {\r\n let config = { timeout: 200 };\r\n\r\n // Look for top level items that have a navigation trigger so that we avoid 'brands' which does not have content to load.\r\n const triggerElements = document.querySelectorAll(\".top_menu>ul>li span.subnav_trigger\") as NodeListOf;\r\n\r\n for (const spanElement of triggerElements) {\r\n // Link the hover to the parent li.\r\n const listElement = spanElement.parentElement as HTMLLIElement;\r\n\r\n // Wire up a delayed mouse over for top menu items in the desktop browser environment.\r\n new HoverIntent(listElement,\r\n () => this.loadOrShowCategoryMenu(listElement),\r\n () => this.makeMenuElementInactive(listElement))\r\n .configure(config);\r\n\r\n // Plus listen for clicks that will come from mobile browsers as they don't have mouse over.\r\n listElement.addEventListener(\"click\", () => this.loadOrShowCategoryMenu(listElement));\r\n }\r\n }\r\n\r\n /**\r\n * Wire up menu hover events for the newly loaded child menu elements of the passed top level category element.\r\n * This works only for the desktop environment where mouse events exist.\r\n * \r\n * Listens on menu items for a delayed mouse over and when fired, shows the categories below that level.\r\n * \r\n * @param contentDiv - The top level category parent container that the new menu list elements have just been loaded into.\r\n */\r\n private wireUpSubMenuEvents(contentDiv: HTMLDivElement): void {\r\n const listElements = contentDiv.querySelectorAll(\"ul>li\") as NodeListOf;\r\n\r\n for (let listElement of listElements) {\r\n // Wire up a delayed mouse over for sub menu items in the desktop browser environment.\r\n new HoverIntent(listElement,\r\n () => this.makeMenuElementActive(listElement),\r\n () => this.makeMenuElementInactive(listElement));\r\n }\r\n }\r\n\r\n /**\r\n * Wire up click events for the child menu elements of the passed element.\r\n * This is just for the mobile envoronment as we don't get mouse events there.\r\n *\r\n * @param parentElement - The parent container that the menu list elements exist in.\r\n * This will be the top level on page load and the second level when dynamic.\r\n */\r\n private wireUpMobileMenuEvents(parentElement: Element): void {\r\n const subnavTrigger = parentElement.getElementsByClassName(\"subnav_trigger\");\r\n for (const subnav of subnavTrigger) {\r\n subnav.addEventListener(\"click\", (e) => this.onMobileSubNavTriggerPressed(e));\r\n }\r\n\r\n const backMenu = parentElement.getElementsByClassName(\"back\");\r\n for (const subnav of backMenu) {\r\n subnav.addEventListener(\"click\", (e) => this.onMobileBackMenuPressed(e));\r\n }\r\n\r\n const closeMenu = parentElement.getElementsByClassName(\"close\");\r\n for (const subnav of closeMenu) {\r\n subnav.addEventListener(\"click\", (e) => this.closeMobileMenu(e));\r\n }\r\n }\r\n\r\n /**\r\n * Based on the link contained within the anchor in the passed list element,\r\n * will load the menu structure for a top level category from the server.\r\n * \r\n * If the menu has already been loaded (or is loading) then will just show it.\r\n * @param listElement\r\n */\r\n private loadOrShowCategoryMenu(listElement: HTMLLIElement): void {\r\n if (!listElement.dataset.alreadyFetched) {\r\n // We only fetch once per menu, even if it fails.\r\n listElement.dataset.alreadyFetched = \"true\";\r\n\r\n // Extract the URL for the category we moused over.\r\n let menuLink = listElement.querySelector(\"a\");\r\n let menuUrl = this.convertCategoryToMenuUrl(menuLink);\r\n\r\n // Level 2 already exists on page load so make that visible as a failover in case the replacement does not load.\r\n this.makeMenuElementActive(listElement);\r\n\r\n fetch(menuUrl)\r\n .then(response => {\r\n if (response.ok) {\r\n return response.text();\r\n } else {\r\n // Menu failed to load. If this was mobile then the UI will be blocked as the close button\r\n // won't have loaded. The only thing we can do is close the menu. It's annoying for the customer.\r\n this.closeMobileMenu(null);\r\n // Which is why we throw an error that won't be handled here (caught by our client side logging).\r\n throw new Error(`Failed to fetch category menu for url '${menuUrl}'. Status: ${response.status} / ${response.statusText}`);\r\n }\r\n })\r\n .then(html => {\r\n // Remove existing div as it'll contain categories with links but no sub-categories.\r\n let previousDiv = listElement.querySelector(\"div\");\r\n let previousDivActive = true;\r\n\r\n if (previousDiv) {\r\n // We should copy the state of the level 2 div as it might have been hidden in the time it takes to load from the server.\r\n previousDivActive = previousDiv.classList.contains(\"active\");\r\n previousDiv.remove();\r\n }\r\n\r\n listElement.insertAdjacentHTML('beforeend', html);\r\n\r\n let div: HTMLDivElement;\r\n if (previousDivActive) {\r\n div = this.makeMenuElementActive(listElement);\r\n }\r\n else {\r\n div = this.makeMenuElementInactive(listElement);\r\n }\r\n\r\n // We've just inserted a level 2 menu which may have level 3 and 4 items so need to add mouseover for it as well.\r\n this.wireUpSubMenuEvents(div);\r\n this.wireUpMobileMenuEvents(div);\r\n });\r\n }\r\n else {\r\n // Div may already exist, just make it active to show it again.\r\n listElement.querySelector(\"div\")?.classList.add(\"active\");\r\n }\r\n }\r\n\r\n /**\r\n * Turns a category URL into one from which menu HTML by dynamically retrieved.\r\n * @param menuLink The anchor tag to extract the category URL from.\r\n * @returns A url of the format /category1.menu or /fr/category1.menu.\r\n */\r\n private convertCategoryToMenuUrl(menuLink: HTMLAnchorElement): string {\r\n // Extract the URL from the anchor tag.\r\n // This will return us an absolute URL such as https://site.com/category1{.cat}\r\n const absoluteCategoryUrl = new URL(menuLink.href);\r\n\r\n // Turn this URL into a relative one so it becomes /category1{.cat}\r\n const relativeCategoryUrl = absoluteCategoryUrl.pathname;\r\n\r\n // Remove the extension from the URL if it exists (.cat, some sites do not have extensions).\r\n const extensionIndex = relativeCategoryUrl.lastIndexOf(\".\");\r\n\r\n // Strip off the extension if it exists.\r\n const urlWithoutExtension = extensionIndex !== -1 ? relativeCategoryUrl.substring(0, extensionIndex) : relativeCategoryUrl;\r\n\r\n // Return the URL with a .menu extension so it will route directly.\r\n // This handles the case where we are on a locale such as /fr/category1.menu as /fr will get stripped before the route is chosen.\r\n return urlWithoutExtension + \".menu\";\r\n }\r\n\r\n private makeMenuElementActive(listElement: Element): HTMLDivElement {\r\n let div = listElement.querySelector(\"div\");\r\n\r\n if (!this.isMobileMenuOpen()) {\r\n listElement.classList.add(\"active\");\r\n\r\n if (div) {\r\n div.classList.add(\"active\");\r\n }\r\n }\r\n\r\n // Mobile makes use of this too after adding content.\r\n return div;\r\n }\r\n\r\n private makeMenuElementInactive(listElement: HTMLLIElement): HTMLDivElement {\r\n let div = listElement.querySelector(\"div\");\r\n\r\n if (!this.isMobileMenuOpen()) {\r\n listElement.classList.remove(\"active\");\r\n\r\n if (div) {\r\n div.classList.remove(\"active\");\r\n }\r\n }\r\n\r\n return div;\r\n }\r\n\r\n private isMobileMenuOpen(): boolean {\r\n return this.mobileMenuTrigger.classList.contains(\"active\");\r\n }\r\n}\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", () => { Menu.Init(); });\r\n","export class ActiveToggle {\r\n\r\n constructor() {\r\n // For toggling mobile CMS links on most pages.\r\n this.wireUpToggle(\".cms-links h3\", \".cms-links\");\r\n }\r\n\r\n private wireUpToggle(clickSelector: string, elementToToggleSelector: string): void {\r\n let clickElement = document.querySelector(clickSelector);\r\n\r\n if (clickElement) {\r\n let toggleElement = document.querySelector(elementToToggleSelector);\r\n\r\n if (toggleElement) {\r\n clickElement.onclick = (e) => {\r\n toggleElement.classList.toggle(\"active\");\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nnew ActiveToggle();","\r\n export class HTMLScriptElementTracker extends HTMLScriptElement {\r\n public onloadDone: boolean = false;\r\n public onreadystatechange: (ev: Event) => any;\r\n public readyState: string;\r\n }\r\n\r\n export class DeferredLoader {\r\n\r\n public static InjectScript(scriptUrl: string, onLoadCallback: Function = null): HTMLScriptElementTracker {\r\n const element = document.createElement(\"script\");\r\n element.src = scriptUrl;\r\n element.async = true;\r\n\r\n if (onLoadCallback !== null) {\r\n element.onloadDone = false;\r\n element.onload = function () {\r\n if (!element.onloadDone) {\r\n element.onloadDone = true;\r\n onLoadCallback();\r\n }\r\n };\r\n element.onreadystatechange = function () {\r\n if ((\"loaded\" === element.readyState || \"complete\" === element.readyState) && !element.onloadDone) {\r\n element.onloadDone = true;\r\n onLoadCallback();\r\n }\r\n }\r\n }\r\n\r\n document.body.appendChild(element);\r\n return element;\r\n }\r\n }\r\n","import { DeferredLoader } from \"./deferred-loader\";\r\n\r\nexport class ParcelTracking {\r\n public busy = ko.observable(false);\r\n public errors = ko.observableArray();\r\n public orderDate = ko.observable();\r\n public orderNumber: KnockoutComputed;\r\n public orderPrefix = ko.observable();\r\n public orderPrefixText = ko.observable('');\r\n public orderSuffix = ko.observable();\r\n public postCode = ko.observable();\r\n public siteId = ko.observable(\"\");\r\n\r\n public static Init(): ParcelTracking {\r\n let viewModel = new ParcelTracking();\r\n\r\n ko.applyBindings(viewModel);\r\n\r\n return viewModel;\r\n }\r\n\r\n constructor() {\r\n this.orderNumber = ko.pureComputed(() => {\r\n return this.orderPrefix() + '-' + this.orderDate() + '-' + this.orderSuffix();\r\n });\r\n\r\n this.orderNumber = ko.pureComputed({\r\n read: () => {\r\n return this.orderPrefix() + '-' + this.orderDate() + '-' + this.orderSuffix();\r\n },\r\n write: (value) => {\r\n this.orderDate('');\r\n this.orderPrefix('');\r\n this.orderSuffix('');\r\n\r\n if (!value) {\r\n return;\r\n }\r\n\r\n let split = value.split('-');\r\n if (split.length !== 3) {\r\n return;\r\n }\r\n this.orderDate(split[1]);\r\n this.orderPrefix(split[0]);\r\n this.orderSuffix(split[2]);\r\n },\r\n owner: this\r\n });\r\n\r\n this.setOrderNumberFromQuerystring();\r\n let siteId = (document.getElementById(\"SiteId\")).value;\r\n this.siteId(siteId);\r\n this.orderPrefixText(`The order prefix should be OR${siteId} or OL${siteId}`);\r\n }\r\n\r\n public orderNumberLookup(): boolean {\r\n let form = document.getElementById(\"order-lookup-form\");\r\n let formValid = window.validationService.isValid(form);\r\n\r\n if (formValid) {\r\n let json = ko.toJSON({ orderNumber: this.orderNumber(), postCode: this.postCode() });\r\n this.busy(true);\r\n window.HttpRequest.PostJson('/ws/lookup-tracking-reference', json,\r\n (data) => { this.onOrderDetailsReceived(data) },\r\n (data) => { this.postError(data) });\r\n }\r\n return false;\r\n }\r\n\r\n private onOrderDetailsReceived(json) {\r\n let data = JSON.parse(json);\r\n let errorsFound = this.displayErrors(data);\r\n this.busy(false);\r\n\r\n if (errorsFound === false && data.encryptedOrderNumber) {\r\n let form = document.getElementById(\"order-lookup-form\");\r\n form.classList.add(\"hidden\");\r\n this.loadParcelPerformWidget(data.encryptedOrderNumber);\r\n }\r\n }\r\n\r\n private postError(data) {\r\n this.displayErrors(data);\r\n }\r\n\r\n private displayErrors(data): boolean {\r\n this.errors.removeAll();\r\n\r\n if (data.errors?.length) {\r\n for (const element of data.errors) {\r\n this.errors.push(element.message);\r\n }\r\n return true; // Errors found.\r\n }\r\n\r\n return false; // No errors found.\r\n }\r\n\r\n private setOrderNumberFromQuerystring(): void {\r\n let orderNumber = window.UrlParser.GetParameterByName('orderNumber');\r\n\r\n if (orderNumber) {\r\n this.orderNumber(orderNumber);\r\n }\r\n\r\n let postcode = window.UrlParser.GetParameterByName('postcode');\r\n\r\n if (postcode) {\r\n this.postCode(postcode);\r\n }\r\n }\r\n\r\n private loadParcelPerformWidget(encryptedOrderNumber: string): void {\r\n let widgetDiv = document.getElementById(\"pp-widget-root\");\r\n\r\n if (!widgetDiv) {\r\n return;\r\n }\r\n\r\n let trackProgress = document.getElementById(\"track-progress\");\r\n trackProgress.classList.remove(\"hidden\")\r\n\r\n // Rewrite the URL to be a direct link to the encrypted order number so the user can refresh or copy and paste it.\r\n let baseUrl = window.location.href.replace(location.search, \"\");\r\n const url = new URL(baseUrl);\r\n url.searchParams.set(\"pp_shipment_id\", encryptedOrderNumber);\r\n window.history.pushState({}, \"\", url);\r\n\r\n widgetDiv.dataset.shipmentId = encryptedOrderNumber;\r\n DeferredLoader.InjectScript(\"https://tracking.parcelperform.com/pp-widget.js\");\r\n }\r\n}\r\n\r\nif (document.body.dataset.pageInit == \"tracking\") {\r\n ParcelTracking.Init();\r\n}\r\n","export class RequestOurCatalogue {\r\n public static Init(): void {\r\n new RequestOurCatalogue();\r\n }\r\n\r\n constructor() {\r\n this.MapLoqateFields(\"Address\");\r\n\r\n }\r\n\r\n private MapLoqateFields(fieldPrefix: string): void {\r\n let options = {\r\n key: \"TT89-AM94-RX42-YM69\",\r\n suppressAutocomplete: false,\r\n };\r\n let fields = [\r\n { element: fieldPrefix + \"_Company\", field: \"Company\", mode: pca.fieldMode.DEFAULT },\r\n { element: fieldPrefix + \"_AddressLine1\", field: \"Line1\" },\r\n { element: fieldPrefix + \"_AddressLine2\", field: \"Line2\", mode: pca.fieldMode.POPULATE },\r\n { element: fieldPrefix + \"_District\", field: \"Line3\", mode: pca.fieldMode.POPULATE },\r\n { element: fieldPrefix + \"_Town\", field: \"City\", mode: pca.fieldMode.POPULATE },\r\n { element: fieldPrefix + \"_County\", field: \"Province\", mode: pca.fieldMode.POPULATE },\r\n { element: fieldPrefix + \"_PostalCode\", field: \"PostalCode\" },\r\n { element: fieldPrefix + \"_CountryCode3\", field: \"CountryName\", mode: pca.fieldMode.COUNTRY }\r\n ];\r\n new pca.Address(fields, options);\r\n }\r\n}\r\n\r\nif (document.body.dataset.pageInit == \"catalogue\") {\r\n RequestOurCatalogue.Init();\r\n}\r\n","export class Label {\r\n private downloadLinks = >document.getElementsByClassName(\"download-label\");\r\n\r\n public static Init(): Label {\r\n return new Label();\r\n }\r\n\r\n constructor() {\r\n this.setDownloadLinks(null, false, (e) => this.onDownloadLinkClicked(e));\r\n }\r\n\r\n private onDownloadLinkClicked(e: MouseEvent): void {\r\n e.preventDefault();\r\n\r\n let clickedLink = e.currentTarget;\r\n\r\n // Disable clicks for all buttons while we are downloading, but don't change their text.\r\n this.setDownloadLinks(null, true, (e) => this.doNothingOnClick(e));\r\n // Set this specific link to 'downloading'.\r\n this.setDownloadLink(clickedLink, \"Creating label\", true, (e) => this.doNothingOnClick(e));\r\n\r\n let errorElement = document.getElementById(\"label-error\");\r\n errorElement.classList.add(\"hidden\");\r\n\r\n window.HttpRequest.Get(clickedLink.href, \"blob\",\r\n (data) => { this.onLabelReceived(clickedLink, data) },\r\n () => { this.onLabelError(clickedLink) });\r\n }\r\n\r\n private hideDownloadLink(selector: string): void {\r\n const labelElement = document.querySelector(selector);\r\n\r\n if (labelElement) {\r\n labelElement.classList.add(\"hidden\");\r\n }\r\n }\r\n\r\n private onLabelReceived(clickedLink: HTMLAnchorElement, request: XMLHttpRequest): void {\r\n\r\n if (request && request.response) {\r\n\r\n // Hide the other download links now that they have a label.\r\n if (clickedLink.id === \"DownloadRoyalMail\") {\r\n this.hideDownloadLink(\"label[for=InPostTab]\");\r\n }\r\n else if (clickedLink.id === \"DownloadRoyalMailQR\") {\r\n this.hideDownloadLink(\"label[for=InPostTab]\");\r\n }\r\n else {\r\n this.hideDownloadLink(\"label[for=RoyalMailTab]\");\r\n this.hideDownloadLink(\"label[for=RoyalMailQRTab]\");\r\n }\r\n\r\n // Re-enable all download links (in case we downloaded one of the two RM labels).\r\n this.setDownloadLinks(null, false, (e) => this.onDownloadLinkClicked(e));\r\n // Set this specific link to 'downloaded'.\r\n this.setDownloadLink(clickedLink, \"Downloaded, download again\", false, (e) => this.onDownloadLinkClicked(e));\r\n\r\n let contentDisposition = request.getResponseHeader(\"content-disposition\");\r\n let contentType = request.getResponseHeader(\"content-type\");\r\n let matches = contentDisposition.match(/filename=(.+);/);\r\n let filename = \"returnslabel.pdf\";\r\n\r\n if (matches.length >= 2) {\r\n filename = matches[1];\r\n }\r\n\r\n // Create a new Blob object using the response data of the onload object.\r\n const blob = new Blob([request.response], { type: contentType });\r\n // Create a link element, hide it, direct it towards the blob, and then 'click' it programatically.\r\n let a = document.createElement(\"a\");\r\n a.style.display = \"none\";\r\n document.body.appendChild(a);\r\n // Create a DOMString representing the blob and point the link element towards it.\r\n let url = window.URL.createObjectURL(blob);\r\n a.href = url;\r\n a.download = filename;\r\n // Programatically click the link to trigger the download.\r\n a.click();\r\n // Release the reference to the file by revoking the Object URL.\r\n window.URL.revokeObjectURL(url);\r\n }\r\n else { // No data returned, error on the server.\r\n this.onLabelError(clickedLink);\r\n }\r\n }\r\n\r\n private onLabelError(link: HTMLAnchorElement): void {\r\n let errorElement = document.getElementById(\"label-error\");\r\n errorElement.classList.remove(\"hidden\");\r\n\r\n // Re-enable all download links (in case we downloaded one of the two RM labels).\r\n this.setDownloadLinks(null, false, (e) => this.onDownloadLinkClicked(e));\r\n // Set this specific link to retry.\r\n this.setDownloadLink(link, \"Retry download\", false, (e) => this.onDownloadLinkClicked(e));\r\n }\r\n\r\n private doNothingOnClick(e: MouseEvent): boolean {\r\n e.preventDefault();\r\n return false;\r\n }\r\n\r\n /**\r\n * Sets all document download links, used on page load or to disable all buttons at once.\r\n * @param text\r\n * @param addDownloadingClass\r\n * @param clickCallback\r\n */\r\n private setDownloadLinks(text: string, addDownloadingClass: boolean, clickCallback): void {\r\n for (const link of this.downloadLinks) {\r\n this.setDownloadLink(link, text, addDownloadingClass, clickCallback);\r\n }\r\n }\r\n\r\n /**\r\n * Sets a single download link. Used for when a single link has been clicked, downloaded or errored.\r\n * @param link\r\n * @param text\r\n * @param addDownloadingClass\r\n * @param clickCallback\r\n */\r\n private setDownloadLink(link: HTMLAnchorElement, text: string, addDownloadingClass: boolean, clickCallback: any): void {\r\n\r\n if (text !== null) { // Initialising, don't set the text.\r\n link.innerHTML = text;\r\n }\r\n\r\n if (addDownloadingClass) {\r\n link.classList.add(\"downloading-label\");\r\n }\r\n else {\r\n link.classList.remove(\"downloading-label\");\r\n }\r\n\r\n link.onclick = clickCallback;\r\n }\r\n}\r\n\r\nif (document.body.dataset.pageInit == \"label\") {\r\n Label.Init();\r\n}\r\n"],"names":["BarbourBlackbrookDirections","Init","constructor","document","querySelector","addEventListener","e","this","onViewDirectionsClicked","getElementById","onCloseDirectionsClicked","preventDefault","style","zIndex","classList","remove","body","add","dataset","pageInit","clerkKey","w","d","createElement","type","async","src","s","getElementsByTagName","parentNode","insertBefore","__clerk_q","Clerk","push","arguments","window","key","formatters","currency_selector","price_list","currency","destinationSalesTaxRate","JSON","parse","fix_url","url","location","origin","localeUrlPrefix","URL","pathname","Brands","wireUpEventHandlers","querySelectorAll","forEach","element","onAlphabetClicked","linkClicked","currentLetter","textContent","charAt","currentTitle","contains","display","brandNumberLinks","buildListFromBrandClass","brandLinks","brandListElement","insertAdjacentHTML","brandLink","innerHTML","ProductClass","StockLevel","CustomerAccountState","SignInPanels","SignInBase","context","newAccountUrl","verifyLoginUrl","setPasswordUrl","continueElement","emailElement","formSelector","backToEmailPanelElement","passwordElement","setPasswordElement","validationCodeElement","onclick","ev","onBackToEmailPanelClicked","onContinueClickedAsync","registerEnterKeyCallback","verifyEmail","verifyLoginAsync","setPassword","validateAccount","validationService","isFieldValid","FormSubmitToggle","DisableForm","fetch","stringify","email","value","headers","method","then","response","ok","json","IssueLogger","log","showValidationError","Email","EnableForm","data","customerAccountState","Interactive","innerText","setPanelVisibility","Password","DoesNotExist","href","NotInteractive","Validation","AccountDisabled","errorText","panel","setPanelError","SetPassword","text","isPanelActive","elementId","errorSpan","isVisible","el","offsetWidth","offsetHeight","getClientRects","length","postData","password","returnUrl","UrlParser","GetParameterByName","logAndShowErrorAsync","redirectUrl","error","message","userMessage","techMessage","clearPasswordEntryAsync","form","validateForm","passwordValidator","newPassword","validationCode","success","accountValidated","panelToMakeVisible","panelEmail","panelPassword","panelSetPassword","panelValidation","focus","callback","IsFormEnabled","SignIn","super","HoverIntent","onOver","onOut","x","y","pX","pY","state","timer","options","sensitivity","interval","timeout","dispatchOver","dispatchOut","delay","clearTimeout","call","tracker","clientX","clientY","compare","Math","abs","setTimeout","configure","opt","Object","assign","removeEventListener","bind","Menu","mobileMenuTrigger","getElementsByClassName","topMenu","mobileClose","html","topLevel","wireUpCountrySwitcher","wireUpTopMenuEvents","wireUpMobileEvents","openMobileMenu","closeMobileMenu","wireUpMobileMenuEvents","onMobileSubNavTriggerPressed","target","closest","parentElement","onMobileBackMenuPressed","switchLinks","switchLink","onCountrySwitcherClicked","currentTarget","nextElementSibling","toggle","config","triggerElements","spanElement","listElement","loadOrShowCategoryMenu","makeMenuElementInactive","wireUpSubMenuEvents","contentDiv","listElements","makeMenuElementActive","subnavTrigger","subnav","backMenu","closeMenu","alreadyFetched","_a","menuLink","menuUrl","convertCategoryToMenuUrl","Error","status","statusText","div","previousDiv","previousDivActive","relativeCategoryUrl","extensionIndex","lastIndexOf","substring","isMobileMenuOpen","ActiveToggle","wireUpToggle","clickSelector","elementToToggleSelector","clickElement","toggleElement","DeferredLoader","InjectScript","scriptUrl","onLoadCallback","onloadDone","onload","onreadystatechange","readyState","appendChild","ParcelTracking","viewModel","ko","applyBindings","busy","observable","errors","observableArray","orderDate","orderPrefix","orderPrefixText","orderSuffix","postCode","siteId","orderNumber","pureComputed","read","write","split","owner","setOrderNumberFromQuerystring","orderNumberLookup","isValid","toJSON","HttpRequest","PostJson","onOrderDetailsReceived","postError","errorsFound","displayErrors","encryptedOrderNumber","loadParcelPerformWidget","removeAll","postcode","widgetDiv","baseUrl","replace","search","searchParams","set","history","pushState","shipmentId","RequestOurCatalogue","MapLoqateFields","fieldPrefix","suppressAutocomplete","fields","field","mode","pca","fieldMode","DEFAULT","POPULATE","COUNTRY","Address","Label","downloadLinks","setDownloadLinks","onDownloadLinkClicked","clickedLink","doNothingOnClick","setDownloadLink","Get","onLabelReceived","onLabelError","hideDownloadLink","selector","labelElement","request","id","contentDisposition","getResponseHeader","contentType","matches","match","filename","blob","Blob","a","createObjectURL","download","click","revokeObjectURL","link","addDownloadingClass","clickCallback"],"mappings":"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"}