{"version":3,"file":"js/script.js","sources":["webpack://glencairn-crystal-theme/./src/Either.ts","webpack://glencairn-crystal-theme/./src/elements/ContinueAsGuest.tsx","webpack://glencairn-crystal-theme/./src/elements/CustomElement.ts","webpack://glencairn-crystal-theme/./src/elements/NewsletterSubscription.tsx","webpack://glencairn-crystal-theme/./src/elements/Quantity.tsx","webpack://glencairn-crystal-theme/./src/elements/ReadMoreButton.tsx","webpack://glencairn-crystal-theme/./src/elements/RedirectButton.tsx","webpack://glencairn-crystal-theme/./src/elements/SearchResult.tsx","webpack://glencairn-crystal-theme/./src/elements/SignInCheckout.tsx","webpack://glencairn-crystal-theme/./src/elements/SnapTabs.jsx","webpack://glencairn-crystal-theme/./src/elements/SortDropdown.tsx","webpack://glencairn-crystal-theme/./src/elements/ViewMoreProducts.tsx","webpack://glencairn-crystal-theme/./src/elements/account/Login.tsx","webpack://glencairn-crystal-theme/./src/elements/account/Register.tsx","webpack://glencairn-crystal-theme/./src/elements/cart/AddToCart.tsx","webpack://glencairn-crystal-theme/./src/elements/cart/CountinueShopping.tsx","webpack://glencairn-crystal-theme/./src/elements/cart/RemoveFromCart.tsx","webpack://glencairn-crystal-theme/./src/elements/checkout/ApplyGiftCard.tsx","webpack://glencairn-crystal-theme/./src/elements/checkout/BillingAddressCheckbox.tsx","webpack://glencairn-crystal-theme/./src/elements/checkout/Checkout.tsx","webpack://glencairn-crystal-theme/./src/elements/checkout/CheckoutTabs.tsx","webpack://glencairn-crystal-theme/./src/elements/checkout/CompanyNameCheckbox.tsx","webpack://glencairn-crystal-theme/./src/elements/checkout/ContinueToPayment.tsx","webpack://glencairn-crystal-theme/./src/elements/checkout/DeliveryOptionPicker.tsx","webpack://glencairn-crystal-theme/./src/elements/checkout/EditCheckoutStep.tsx","webpack://glencairn-crystal-theme/./src/elements/checkout/GiftCardCheckbox.tsx","webpack://glencairn-crystal-theme/./src/elements/checkout/ReviewOrderButton.tsx","webpack://glencairn-crystal-theme/./src/elements/coupons/ApplyCoupon.tsx","webpack://glencairn-crystal-theme/./src/elements/coupons/CouponCheckbox.tsx","webpack://glencairn-crystal-theme/./src/elements/coupons/RemoveCoupon.tsx","webpack://glencairn-crystal-theme/./src/fetch.ts","webpack://glencairn-crystal-theme/./src/images/close.ts","webpack://glencairn-crystal-theme/./src/images/remove.ts","webpack://glencairn-crystal-theme/./src/jsx-runtime.ts","webpack://glencairn-crystal-theme/./src/notices.tsx","webpack://glencairn-crystal-theme/./src/scroll-timeline.js","webpack://glencairn-crystal-theme/./src/stylesheet.tsx","webpack://glencairn-crystal-theme/./src/utils.tsx","webpack://glencairn-crystal-theme/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_apply_decs_2203_r.js","webpack://glencairn-crystal-theme/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_define_property.js","webpack://glencairn-crystal-theme/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_identity.js","webpack://glencairn-crystal-theme/./src/index.ts"],"sourcesContent":["export type Either = Left | Right;\n\nexport const Either = {\n\ttry(f: () => R): Either {\n\t\ttry {\n\t\t\treturn Either.right(f());\n\t\t} catch (error) {\n\t\t\treturn Either.left(error as L);\n\t\t}\n\t},\n\n\ttryCatch(options: {\n\t\ttry: () => R,\n\t\tcatch: (error: unknown) => L,\n\t}): Either {\n\t\ttry {\n\t\t\treturn Either.right(options.try());\n\t\t} catch (error) {\n\t\t\treturn Either.left(options.catch(error));\n\t\t}\n\t},\n\n\ttryPromise(promise: Promise): Promise> {\n\t\treturn promise.then(Either.right, Either.left as (left: unknown) => Either);\n\t},\n\n\tasync mapAsync(self: Promise>, f: (right: R) => Promise): Promise> {\n\t\tconst either = await self;\n\t\tswitch (either._tag) {\n\t\t\tcase \"Left\": return either as Left;\n\t\t\tcase \"Right\": return Either.right(await f(either.right));\n\t\t}\n\t},\n\n\tasync flatMapAsync(self: Promise>, f: (right: R) => Promise>): Promise> {\n\t\tconst either = await self;\n\t\tswitch (either._tag) {\n\t\t\tcase \"Left\": return either as Left;\n\t\t\tcase \"Right\": return await f(either.right);\n\t\t}\n\t},\n\n\tleft(left: L): Either {\n\t\tconst a = Object.create(LeftProto);\n\t\ta.left = left;\n\t\treturn a;\n\t},\n\n\tright(right: R): Either {\n\t\tconst a = Object.create(RightProto);\n\t\ta.right = right;\n\t\treturn a;\n\t},\n\n\tisEither(input: unknown): input is Either {\n\t\treturn typeof input === \"object\" && input !== null && TypeId in input;\n\t},\n};\n\ninterface EitherBase {\n\treadonly [TypeId]: {\n\t\treadonly _R: (_: never) => R,\n\t\treadonly _L: (_: never) => L,\n\t};\n\n\tisLeft(this: Either): this is Left;\n\tisRight(this: Either): this is Right;\n\tmap(this: Either, f: (right: R) => R2): Either;\n\tmapAsync(this: Either, f: (right: R) => Promise): Promise>;\n\tflatMap(this: Either, f: (right: R) => Either): Either;\n\tflatMapAsync(this: Either, f: (right: R) => Promise>): Promise>;\n\tmatch(this: Either, options: {\n\t\treadonly onLeft: (left: L) => B,\n\t\treadonly onRight: (right: R) => C,\n\t}): B | C;\n\tgetOrElse(this: Either, onLeft: (left: L) => R2): R | R2;\n\tgetOrNull(this: Either): R | null;\n\tgetOrUndefined(this: Either): R | undefined;\n\tgetOrThrowWith(this: Either, onLeft: (left: L) => unknown): R;\n}\n\nexport interface Left extends EitherBase {\n\treadonly _tag: \"Left\";\n\treadonly left: L;\n}\n\nexport interface Right extends EitherBase {\n\treadonly _tag: \"Right\";\n\treadonly right: R;\n}\n\nconst TypeId = Symbol.for(\"Either\");\ntype TypeId = typeof TypeId;\n\nconst CommonProto = {\n\t[TypeId]: {\n\t\t_R: (_: never) => _,\n\t\t_L: (_: never) => _,\n\t},\n\n\tisLeft(this: Either) {\n\t\treturn this._tag === \"Left\";\n\t},\n\n\tisRight(this: Either) {\n\t\treturn this._tag === \"Right\";\n\t},\n\n\tmap(this: Either, f: (right: R) => R2) {\n\t\tswitch (this._tag) {\n\t\t\tcase \"Left\": return this;\n\t\t\tcase \"Right\": return Either.right(f(this.right));\n\t\t}\n\t},\n\n\tmapAsync(this: Either, f: (right: R) => Promise) {\n\t\tswitch (this._tag) {\n\t\t\tcase \"Left\": return Promise.resolve(this);\n\t\t\tcase \"Right\": return f(this.right).then(Either.right);\n\t\t}\n\t},\n\n\tflatMap(this: Either, f: (right: R) => Either) {\n\t\tswitch (this._tag) {\n\t\t\tcase \"Left\": return this;\n\t\t\tcase \"Right\": return f(this.right);\n\t\t}\n\t},\n\n\tflatMapAsync(this: Either, f: (right: R) => Promise>) {\n\t\tswitch (this._tag) {\n\t\t\tcase \"Left\": return Promise.resolve(this);\n\t\t\tcase \"Right\": return f(this.right);\n\t\t}\n\t},\n\n\tmatch(this: Either, options: {\n\t\treadonly onLeft: (left: L) => B,\n\t\treadonly onRight: (right: R) => C,\n\t}) {\n\t\tswitch (this._tag) {\n\t\t\tcase \"Left\": return options.onLeft(this.left);\n\t\t\tcase \"Right\": return options.onRight(this.right);\n\t\t}\n\t},\n\n\tgetOrElse(this: Either, onLeft: (left: L) => R2) {\n\t\tswitch (this._tag) {\n\t\t\tcase \"Left\": return onLeft(this.left);\n\t\t\tcase \"Right\": return this.right;\n\t\t}\n\t},\n\n\tgetOrNull(this: Either) {\n\t\tswitch (this._tag) {\n\t\t\tcase \"Left\": return null;\n\t\t\tcase \"Right\": return this.right;\n\t\t}\n\t},\n\n\tgetOrUndefined(this: Either) {\n\t\tswitch (this._tag) {\n\t\t\tcase \"Left\": return undefined;\n\t\t\tcase \"Right\": return this.right;\n\t\t}\n\t},\n\n\tgetOrThrowWith(this: Either, onLeft: (left: L) => unknown) {\n\t\tswitch (this._tag) {\n\t\t\tcase \"Left\": throw onLeft(this.left);\n\t\t\tcase \"Right\": return this.right;\n\t\t}\n\t},\n};\n\nconst LeftProto = Object.assign(Object.create(CommonProto), {\n\t_tag: \"Left\",\n});\n\nconst RightProto = Object.assign(Object.create(CommonProto), {\n\t_tag: \"Right\",\n});\n","import { makeStylesheetLink } from \"../stylesheet\";\n\nexport class ContinueAsGuest extends HTMLElement {\n\tshadow: ShadowRoot;\n\tbutton: HTMLButtonElement;\n\n\tonClick: () => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.shadow = this.attachShadow({ mode: \"open\" });\n\n\t\tthis.button = as HTMLButtonElement;\n\n\t\tthis.onClick = onClick.bind(this);\n\n\t\tthis.shadow.append(\n\t\t\tthis.button,\n\t\t\tmakeStylesheetLink()\n\t\t);\n\t}\n\n\tconnectedCallback() {\n\t\tthis.button.addEventListener(\"click\", this.onClick.bind(this));\n\t\tupdateDisplay();\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.button.removeEventListener(\"click\", this.onClick.bind(this));\n\t}\n\n}\n\nasync function onClick(this: ContinueAsGuest) {\n\tconst authSection = document.getElementById(\"auth-section\");\n\tconst checkoutSection = document.getElementById(\"checkout-section\");\n\n\tif (authSection && checkoutSection) {\n\t\tauthSection.style.display = \"none\";\n\t\tcheckoutSection.style.display = \"flex\";\n\n\t\tlocalStorage.setItem(\"checkoutAsGuest\", \"true\");\n\t}\n}\n\n\nfunction updateDisplay() {\n\tconst checkoutAsGuest = localStorage.getItem(\"checkoutAsGuest\");\n\n\tconst authSection = document.getElementById(\"auth-section\");\n\tconst checkoutSection = document.getElementById(\"checkout-section\");\n\n\tif (checkoutAsGuest === \"true\" && authSection && checkoutSection) {\n\t\tauthSection.style.display = \"none\";\n\t\tcheckoutSection.style.display = \"flex\";\n\t}\n}\n","import { makeStylesheetLink } from \"@self/stylesheet\";\n\nexport abstract class CustomElement extends HTMLElement {\n\n\tpublic shadow: ShadowRoot;\n\n\tconstructor(...nodes: (Node | string)[]) {\n\t\tsuper();\n\t\tthis.shadow = this.attachShadow({ mode: \"open\" });\n\t\tthis.shadow.append(makeStylesheetLink(), ...nodes);\n\t}\n}\n\nexport const customElement = (name: string) => (value: Function, context: ClassDecoratorContext) => {\n\tcontext.addInitializer(function () {\n\t\tcustomElements.define(name, this);\n\t});\n};\n\nexport const bound = (value: Function, context: ClassMethodDecoratorContext) => {\n\tcontext.addInitializer(function (this: any) {\n\t\tthis[context.name] = value.bind(this);\n\t});\n};\n","import { noticeFailure, noticeSuccess } from \"@self/notices\";\nimport { makeStylesheetLink } from \"../stylesheet\";\nimport { genId } from \"@self/utils\";\n\nexport class NewsletterSubscription extends HTMLElement {\n\tshadow: ShadowRoot;\n\tbutton: HTMLButtonElement;\n\tinput: HTMLInputElement;\n\tcheckbox: HTMLInputElement;\n\n\tonClick: () => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.shadow = this.attachShadow({ mode: \"open\" });\n\n\t\tthis.button = as HTMLButtonElement;\n\n\t\tthis.input = as HTMLInputElement\n\n\t\tthis.checkbox = as HTMLInputElement;\n\n\t\tthis.onClick = onClick.bind(this);\n\n\t\tthis.shadow.append(\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{this.input}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t{this.button}\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{this.checkbox}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
,\n\t\t\tmakeStylesheetLink(),\n\t\t);\n\t}\n\n\tconnectedCallback() {\n\t\tthis.button.addEventListener(\"click\", this.onClick.bind(this));\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.button.removeEventListener(\"click\", this.onClick.bind(this));\n\t}\n\n}\n\nasync function onClick(this: NewsletterSubscription) {\n\n\tconst matchEmailFormat = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n\tconst email = this.input.value;\n\tconst consentToTerms = this.checkbox.checked;\n\n\tif (!email.match(matchEmailFormat)) {\n\t\tnoticeFailure(\"Please provide vaild email address\");\n\t\treturn;\n\t}\n\n\tif (!consentToTerms) {\n\t\tnoticeFailure(\"Please accept our Terms & Conditions\");\n\t\treturn;\n\t}\n\n\ttry {\n\n\t\tconst data = new URLSearchParams({\n\t\t\taction: \"mailchimp_set_user_by_email\",\n\t\t\t/* scurity: this.dataset.nonce!, */\n\t\t\temail: email,\n\t\t\tsubscribed: \"1\",\n\t\t});\n\n\t\tconst res = await fetch(this.dataset.endpoint!, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: data,\n\t\t});\n\n\t\tconst json = await res.json();\n\n\t\tif (json === null || typeof json !== \"object\" || !(\"result\" in json) || !(\"applied\" in json) || !(\"notices_html\" in json) || typeof json.notices_html !== \"string\") {\n\t\t\tnoticeFailure(\"There was an unexpected error.\");\n\t\t\treturn;\n\t\t} else {\n\t\t\tconst notices = new DOMParser().parseFromString(json.notices_html, \"text/html\");\n\t\t\tconst noticeText = notices.documentElement.textContent ?? \"\";\n\t\t\t(json.applied === \"yes\" ? noticeSuccess : noticeFailure)(noticeText);\n\t\t}\n\n\t} catch (error) {\n\t\tif (error instanceof TypeError) {\n\t\t\tnoticeFailure(\"Couldn't connect. Are you online?\");\n\t\t} else {\n\t\t\tnoticeFailure(\"There was an unexpected error.\")\n\t\t}\n\t}\n\n\n}\n","import { Either } from \"@self/Either\";\nimport { fetch } from \"@self/fetch\";\nimport { noticeFailure } from \"@self/notices\";\nimport { ObservedAttributes } from \"@self/utils\";\nimport { bound, CustomElement, customElement } from \"./CustomElement\";\n\n@customElement(\"gct-quantity\")\nexport class Quantity extends CustomElement {\n\n\tstatic get observedAttributes() {\n\t\treturn [\"min\", \"max\", \"value\", \"disabled\"] as const;\n\t}\n\n\tinput: HTMLInputElement;\n\tincrement: HTMLButtonElement;\n\tdecrement: HTMLButtonElement;\n\n\tget value() { return Number(this.getAttribute(\"value\")); }\n\tset value(value: number) { this.setAttribute(\"value\", String(value)); }\n\n\tget min() {\n\t\tconst attr = this.getAttribute(\"min\");\n\t\treturn attr !== null && attr !== \"\" ? Number(attr) : null;\n\t}\n\n\tset min(value: number | null) {\n\t\tif (value !== null) {\n\t\t\tthis.setAttribute(\"min\", String(value));\n\t\t} else {\n\t\t\tthis.removeAttribute(\"min\");\n\t\t}\n\t}\n\n\tget max() {\n\t\tconst attr = this.getAttribute(\"max\");\n\t\treturn attr !== null && attr !== \"\" ? Number(attr) : null;\n\t}\n\n\tset max(value: number | null) {\n\t\tif (value !== null) {\n\t\t\tthis.setAttribute(\"max\", String(value));\n\t\t} else {\n\t\t\tthis.removeAttribute(\"max\");\n\t\t}\n\t}\n\n\tget disabled() { return this.hasAttribute(\"disabled\"); }\n\n\tset disabled(value: boolean) {\n\t\tif (value) {\n\t\t\tthis.setAttribute(\"disabled\", \"\");\n\t\t} else {\n\t\t\tthis.removeAttribute(\"disabled\");\n\t\t}\n\t}\n\n\tconstructor() {\n\t\tconst input = as HTMLInputElement;\n\n\t\tconst increment = \"}\n\t\t/> as HTMLButtonElement;\n\n\t\tconst decrement = \"}\n\t\t/> as HTMLButtonElement;\n\n\t\tsuper(decrement, input, increment);\n\n\t\tconst min = this.getAttribute(\"min\");\n\t\tif (min !== null) input.min = min;\n\n\t\tconst max = this.getAttribute(\"max\");\n\t\tif (max !== null) input.max = max;\n\n\t\tconst value = this.getAttribute(\"value\");\n\t\tif (value !== null) input.value = value;\n\n\t\tconst disabled = this.getAttribute(\"disabled\");\n\t\tif (disabled !== null) {\n\t\t\tinput.disabled = true;\n\t\t\tincrement.disabled = true;\n\t\t\tdecrement.disabled = true;\n\t\t}\n\n\t\tthis.input = input;\n\t\tthis.increment = increment;\n\t\tthis.decrement = decrement;\n\t}\n\n\tconnectedCallback() {\n\t\tthis.input.addEventListener(\"change\", this.onChange);\n\t\tthis.decrement.addEventListener(\"click\", this.onDecrement);\n\t\tthis.increment.addEventListener(\"click\", this.onIncrement);\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.input.removeEventListener(\"change\", this.onChange);\n\t\tthis.decrement.removeEventListener(\"click\", this.onDecrement);\n\t\tthis.increment.removeEventListener(\"click\", this.onIncrement);\n\t}\n\n\tattributeChangedCallback(name: ObservedAttributes, _oldValue: string | null, newValue: string | null) {\n\t\tswitch (name) {\n\t\t\tcase \"min\":\n\t\t\t\tthis.input.min = newValue ?? \"\";\n\t\t\t\tbreak;\n\t\t\tcase \"max\":\n\t\t\t\tthis.input.max = newValue ?? \"\";\n\t\t\t\tbreak;\n\t\t\tcase \"value\":\n\t\t\t\tthis.input.value = newValue ?? \"\";\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst quantity = this.value;\n\t\tconst min = this.min ?? -Infinity;\n\t\tconst max = this.max ?? Infinity;\n\n\t\tif (name === \"disabled\" && newValue !== null) {\n\t\t\tthis.input.disabled = true;\n\t\t\tthis.decrement.disabled = true;\n\t\t\tthis.increment.disabled = true;\n\t\t} else {\n\t\t\tthis.input.disabled = false;\n\t\t\tthis.decrement.disabled = quantity <= min;\n\t\t\tthis.increment.disabled = quantity >= max;\n\t\t}\n\t}\n\n\tasync postQuantityChange(quantity: number) {\n\t\ttry {\n\t\t\tconst {\n\t\t\t\tcartItemKey,\n\t\t\t\tendpoint,\n\t\t\t\tnonce,\n\t\t\t} = this.dataset;\n\n\t\t\tif (cartItemKey === undefined || endpoint === undefined || nonce === undefined) {\n\t\t\t\tthis.value = quantity;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.disabled = true;\n\n\t\t\tconst data = new URLSearchParams({\n\t\t\t\t[`cart[${cartItemKey}][qty]`]: String(quantity),\n\t\t\t\tupdate_cart: \"Update Cart\",\n\t\t\t\t\"woocommerce-cart-nonce\": nonce,\n\t\t\t});\n\n\t\t\tconst html = await Either.flatMapAsync(\n\t\t\t\tfetch(endpoint, {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\tbody: data,\n\t\t\t\t\tcredentials: \"include\",\n\t\t\t\t}),\n\t\t\t\t(res) => res.text(),\n\t\t\t);\n\n\t\t\tif (html.isRight()) {\n\t\t\t\tconst newDocument = new DOMParser().parseFromString(html.right, \"text/html\");\n\n\t\t\t\tdocument.body.innerHTML = newDocument.body.innerHTML;\n\t\t\t\tthis.value = quantity;\n\t\t\t} else {\n\t\t\t\tconsole.error(html.left);\n\t\t\t\tnoticeFailure(\"Couldn't connect. Are you online?\");\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tnoticeFailure(\"There was an unexpected error.\");\n\t\t} finally {\n\t\t\tthis.disabled = false;\n\t\t}\n\t}\n\n\t@bound\n\tasync onChange() {\n\t\tconst quantity = Number.parseInt(this.input.value, 10);\n\t\tif (!Number.isNaN(quantity) && quantity >= 0) {\n\t\t\tawait this.postQuantityChange(quantity);\n\t\t}\n\t}\n\n\t@bound\n\tasync onDecrement() {\n\t\tawait this.postQuantityChange(this.value - 1);\n\t}\n\n\t@bound\n\tasync onIncrement() {\n\t\tawait this.postQuantityChange(this.value + 1);\n\t}\n}\n","import { makeStylesheetLink } from \"../stylesheet\";\n\nexport class ReadMoreButton extends HTMLElement {\n\tbutton: HTMLDivElement;\n\texpanded: boolean;\n\toriginalText: string;\n\ttruncatedText: string;\n\tshadow: ShadowRoot;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.shadow = this.attachShadow({ mode: \"open\" });\n\n\t\tthis.expanded = false;\n\t\tthis.originalText = \"\";\n\t\tthis.truncatedText = \"\";\n\n\t\tthis.button =
as HTMLDivElement;\n\t\tthis.button.textContent = \"Read More\";\n\t\tthis.button.className = \"gct-read-more\";\n\n\t\tthis.shadow.append(\n\t\t\tthis.button,\n\t\t\tmakeStylesheetLink(),\n\t\t);\n\n\t\tthis.toggleText = this.toggleText.bind(this);\n\t}\n\n\tconnectedCallback() {\n\t\tconst article = document.getElementById(\"short-description\");\n\n\t\tif (article) {\n\t\t\tthis.originalText = article.innerHTML.trim();\n\t\t\tthis.truncatedText = this.truncateText(this.originalText, 160);\n\t\t\tarticle.innerHTML = this.truncatedText;\n\t\t\tthis.button.addEventListener(\"click\", this.toggleText);\n\t\t} else {\n\t\t\tconsole.warn('Element with id=\"short-description\" not found.');\n\t\t}\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.button.removeEventListener(\"click\", this.toggleText);\n\t}\n\n\ttruncateText(text: string, maxLength: number): string {\n\t\tconst stripHtmlTags = (html: string): string => {\n\t\t\treturn html.replace(/<[^>]*>/g, \"\");\n\t\t};\n\n\t\tconst plainText = stripHtmlTags(text);\n\n\t\tif (plainText.length <= maxLength) {\n\t\t\treturn text;\n\t\t}\n\n\t\tlet truncatedText = plainText.slice(0, maxLength);\n\t\tconst lastSpaceIndex = truncatedText.lastIndexOf(\" \");\n\t\tif (lastSpaceIndex > 0) {\n\t\t\ttruncatedText = truncatedText.slice(0, lastSpaceIndex);\n\t\t}\n\n\t\tconst applyTruncationToHtml = (html: string, truncatedPlainText: string): string => {\n\t\t\tlet result = \"\";\n\t\t\tlet currentTextLength = 0;\n\t\t\tconst tagStack: string[] = [];\n\t\t\tlet insideTag = false;\n\n\t\t\tfor (let i = 0; i < html.length; i++) {\n\t\t\t\tconst char = html[i];\n\n\t\t\t\tif (char === \"<\") {\n\t\t\t\t\tinsideTag = true;\n\t\t\t\t\tresult += char;\n\t\t\t\t} else if (char === \">\") {\n\t\t\t\t\tinsideTag = false;\n\t\t\t\t\tresult += char;\n\t\t\t\t} else if (!insideTag) {\n\n\t\t\t\t\tif (currentTextLength < truncatedPlainText.length) {\n\t\t\t\t\t\tresult += char;\n\t\t\t\t\t\tcurrentTextLength++;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tresult += char;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twhile (tagStack.length > 0) {\n\t\t\t\tresult += ``;\n\t\t\t}\n\n\t\t\treturn result + \"...\";\n\t\t};\n\n\t\treturn applyTruncationToHtml(text, truncatedText);\n\t}\n\n\ttoggleText() {\n\t\tconst article = document.getElementById(\"short-description\");\n\t\tif (!article) return;\n\n\t\tthis.expanded = !this.expanded;\n\n\t\tif (this.expanded) {\n\t\t\tarticle.innerHTML = this.originalText;\n\t\t\tthis.button.textContent = \"Read Less\";\n\t\t} else {\n\t\t\tarticle.innerHTML = this.truncatedText;\n\t\t\tthis.button.textContent = \"Read More\";\n\t\t}\n\t}\n}\n\n","import { makeStylesheetLink } from \"../stylesheet\";\n\nexport class RedirectButton extends HTMLElement {\n\n\tshadow: ShadowRoot;\n\n\tbutton: HTMLButtonElement;\n\n\tonClick: () => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.shadow = this.attachShadow({ mode: \"open\" });\n\n\t\tthis.button = as HTMLButtonElement;\n\n\t\tthis.onClick = onClick.bind(this);\n\n\t\tthis.shadow.append(\n\t\t\tthis.button,\n\t\t\tmakeStylesheetLink()\n\t\t);\n\t}\n\n\tconnectedCallback() {\n\t\tthis.button.addEventListener(\"click\", this.onClick.bind(this));\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.button.removeEventListener(\"click\", this.onClick.bind(this));\n\t}\n\n}\n\nasync function onClick(this: SignInCheckout) {\n\tconst authSection = document.getElementById(\"auth-section\");\n\tconst checkoutSection = document.getElementById(\"checkout-section\");\n\n\tif (authSection && checkoutSection) {\n\t\tauthSection.style.display = \"flex\";\n\t\tcheckoutSection.style.display = \"none\";\n\n\t\tlocalStorage.setItem(\"checkoutAsGuest\", \"false\");\n\t}\n}\n","import { customElement } from \"./CustomElement\";\n\nimport \"../scroll-timeline.js\";\n\n@customElement(\"gct-snap-tabs\")\nexport class SnapTabs extends HTMLElement {\n\n\tconstructor() {\n\t\tsuper();\n\n\t\t/** @type {HTMLElement} */\n\t\tthis.section = null;\n\t\t/** @type {HTMLElement} */\n\t\tthis.nav = null;\n\t\t/** @type {readonly HTMLAnchorElement[]} */\n\t\tthis.navItems = Object.freeze([]);\n\t\t/** @type {HTMLSpanElement} */\n\t\tthis.indicator = null;\n\n\t\t/** @type {any} */\n\t\tthis.scrollTimeline = undefined;\n\t\t/** @type {number | undefined} */\n\t\tthis.scrollEndTimer = undefined;\n\n\t\tthis.setup = this.setup.bind(this);\n\t\tthis.onClick = this.onClick.bind(this);\n\t\tthis.onScroll = this.onScroll.bind(this);\n\t\tthis.determineActiveTabSection = this.determineActiveTabSection.bind(this);\n\t}\n\n\tsetup() {\n\t\tconst { matches: motionAllowed } = window.matchMedia(\"(prefers-reduced-motion: no-preference)\");\n\n\t\tthis.section = this.querySelector(\"section\");\n\t\tthis.nav = this.querySelector(\"header > nav\");\n\t\tthis.navItems = Array.from(this.nav.querySelectorAll(\"a\"));\n\t\tthis.indicator = this.querySelector(\".gct-snap-indicator\");\n\n\t\tthis.scrollTimeline = new ScrollTimeline({\n\t\t\tscrollSource: this.section,\n\t\t\torientation: \"inline\",\n\t\t\tfill: \"both\",\n\t\t});\n\n\t\tthis.scrollEndTimer = undefined;\n\n\t\tthis.navItems.forEach((item) => {\n\t\t\titem.animate({\n\t\t\t\tfontWeight: this.navItems.map((i) => i === item ? \"600\" : \"normal\"),\n\t\t\t}, {\n\t\t\t\tduration: 100,\n\t\t\t\tfill: \"both\",\n\t\t\t\ttimeline: this.scrollTimeline,\n\t\t\t});\n\t\t});\n\n\t\tif (motionAllowed) {\n\t\t\tthis.indicator.animate({\n\t\t\t\ttransform: this.navItems.map((i) => `translateX(${i.offsetLeft}px)`),\n\t\t\t\twidth: this.navItems.map((i) => `${i.offsetWidth}px`),\n\t\t\t}, {\n\t\t\t\tduration: 100,\n\t\t\t\tfill: \"both\",\n\t\t\t\ttimeline: this.scrollTimeline,\n\t\t\t});\n\t\t}\n\n\t\tthis.nav.addEventListener(\"click\", this.onClick);\n\t\tthis.section.addEventListener(\"scroll\", this.onScroll);\n\n\t\tthis.determineActiveTabSection();\n\t}\n\n\tconnectedCallback() {\n\t\tsetTimeout(this.setup);\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.nav.removeEventListener(\"click\", this.onClick);\n\t\tthis.section.removeEventListener(\"scroll\", this.onScroll);\n\t}\n\n\t/** @param {MouseEvent} event */\n\tonClick(event) {\n\t\tif (event.target.nodeName !== \"A\") return;\n\t\tevent.preventDefault();\n\t\tthis.setActiveTab(event.target);\n\t}\n\n\tonScroll() {\n\t\tclearTimeout(this.scrollEndTimer);\n\t\tthis.scrollEndTimer = setTimeout(this.determineActiveTabSection, 100);\n\t}\n\n\t/** @param {HTMLAnchorElement} navItem */\n\tsetActiveTab(navItem) {\n\t\tthis.querySelector(\"a[active]\")?.removeAttribute(\"active\");\n\t\tnavItem.setAttribute(\"active\", \"\");\n\n\t\tconst sectionId = navItem.getAttribute(\"href\").replace('#', '');\n\t\tconst sectionElement = this.section.querySelector(`#${sectionId}`);\n\n\t\tif (sectionElement) {\n\t\t\tconst scrollPosition = sectionElement.offsetLeft;\n\t\t\tthis.section.scrollTo({\n\t\t\t\tleft: scrollPosition,\n\t\t\t\tbehavior: \"smooth\",\n\t\t\t});\n\t\t}\n\n\t\tnavItem.scrollIntoView({\n\t\t\tbehavior: \"auto\",\n\t\t\tblock: \"center\",\n\t\t\tinline: \"center\",\n\t\t});\n\t}\n\n\tdetermineActiveTabSection() {\n\t\tconst i = this.section.scrollLeft / this.section.clientWidth;\n\t\tconst navItem = this.navItems[i];\n\n\t\tif (navItem !== undefined) {\n\t\t\tthis.setActiveTab(navItem);\n\t\t}\n\t}\n}\n","import { noticeFailure } from \"@self/notices\";\nimport { makeStylesheetLink } from \"../stylesheet\";\n\nexport class SortDropdown extends HTMLElement {\n\tshadow: ShadowRoot;\n\tselect: HTMLSelectElement;\n\n\tonSortChange: () => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.shadow = this.attachShadow({ mode: \"open\" });\n\n\t\tthis.select = as HTMLSelectElement;\n\n\t\tthis.onSortChange = onSortChange.bind(this);\n\n\t\tthis.shadow.append(\n\t\t\tthis.select,\n\t\t\tmakeStylesheetLink()\n\t\t);\n\n\t}\n\n\tconnectedCallback() {\n\t\tthis.select.addEventListener(\"change\", this.onSortChange.bind(this));\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.select.removeEventListener(\"change\", this.onSortChange.bind(this));\n\t}\n}\n\nasync function onSortChange(this: SortDropdown) {\n\tconst selectedValue = this.select.value;\n\n\tconst currentUrl = new URL(this.dataset.url!);\n\n\tif (selectedValue) {\n\t\tcurrentUrl.searchParams.set(\"orderby\", selectedValue);\n\t} else {\n\t\tcurrentUrl.searchParams.delete(\"orderby\");\n\t}\n\n\tconsole.log(currentUrl);\n\n\ttry {\n\t\tconst response = await fetch(currentUrl.toString());\n\t\tif (!response.ok) {\n\t\t\tnoticeFailure(\"There was an unexpected error.\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst html = await response.text();\n\t\tconst doc = new DOMParser().parseFromString(html, \"text/html\");\n\n\t\tconst newContent = doc.getElementById(\"product-loop-archive\");\n\t\tconst oldContent = document.getElementById(\"product-loop-archive\");\n\n\t\tif (newContent && oldContent) {\n\t\t\toldContent.innerHTML = newContent.innerHTML;\n\t\t}\n\n\t\tconst viewMoreButton = document.querySelector(\"gct-view-more\");\n\t\tif (viewMoreButton) {\n\n\t\t\tif (parseInt(viewMoreButton.getAttribute(\"data-page\")?? \"1\") > 1) {\n\t\t\t\tviewMoreButton.setAttribute(\"data-page\", \"1\");\n\t\t\t\tconst button = viewMoreButton.shadowRoot?.getElementById(\"view-more-products\");\n\t\t\t\tif (button) button.style.display = \"flex\";\n\t\t\t}\n\n\t\t}\n\t} catch (error) {\n\t\tnoticeFailure(\"There was an unexpected error.\");\n\t}\n}\n","import { makeStylesheetLink } from \"@self/stylesheet\";\n\nexport class ViewMoreProducts extends HTMLElement {\n shadow: ShadowRoot;\n button: HTMLButtonElement;\n\n constructor() {\n super();\n\n this.shadow = this.attachShadow({ mode: \"open\" });\n\n\t\tthis.button = as HTMLButtonElement;\n\n this.button.addEventListener(\"click\", onloadMoreProducts.bind(this));\n\n this.shadow.append(\n\t\t\tthis.button,\n\t\t\tmakeStylesheetLink()\n\t\t);\n }\n\n\tconnectedCallback() {\n\t\tthis.button.addEventListener(\"change\", onloadMoreProducts.bind(this));\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.button.removeEventListener(\"change\", onloadMoreProducts.bind(this));\n\t}\n\n\n}\n\nasync function onloadMoreProducts(this: ViewMoreProducts) {\n\tconst currentPage = parseInt(this.dataset.page?? \"1\");\n\tconst maxProductsPerPage = parseInt(this.dataset.productsPerPage?? \"20\");\n\n\ttry {\n\n\t\tthis.button.disabled = true;\n\n\t\tlet urlString : string;\n\n\n\t\t//Search params\n\t\tconst searchParamIndex = this.dataset.url!.indexOf('?s=');\n\n\t\tif (searchParamIndex !== -1) {\n\t\t\tconst baseUrl = this.dataset.url!.substring(0, searchParamIndex);\n\t\t\tconst searchParams = this.dataset.url!.substring(searchParamIndex);\n\t\t\turlString = `${baseUrl}page/${currentPage+1}${searchParams}`;\n\t\t} else {\n\t\t\turlString =`${this.dataset.url!}page/${currentPage+1}`\n\t\t}\n\n\t\t//Sort by\n\t\tconst currentUrl = new URL(urlString);\n\n\t\tconst sortDropdown = document.querySelector(\"gct-sort-dropdown\");\n\n\t\tconst dropdownValue = (sortDropdown?.shadowRoot?.getElementById(\"sort-dropdown\") as HTMLSelectElement).value;\n\n\t\tif (dropdownValue !== \"default\") currentUrl.searchParams.set(\"orderby\", dropdownValue);\n\n\t\tconsole.log(currentUrl.toString());\n\n\t\tconst response = await fetch(currentUrl.toString());\n\n\t\tconst html = await response.text();\n\n\t\tconst doc = new DOMParser().parseFromString(html, 'text/html');\n\n\t\tconst newProducts = doc.getElementsByName(\"product-content-tile\");\n\n\t\tconst newProductsArray = Array.from(newProducts);\n\n\t\tconst oldContent = document.getElementById(\"product-loop-archive\");\n\n\t\tnewProductsArray.forEach(product => {\n\t\t\toldContent!.appendChild(product);\n\t\t});\n\n\t\tthis.setAttribute(\"data-page\", `${currentPage+1}`);\n\n\t\tif (newProductsArray.length < maxProductsPerPage) {\n\t\t\tthis.button.style.display = 'none';\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('Error loading more products:', error);\n\t} finally {\n\t\tthis.button.disabled = false;\n\t}\n}\n","import { noticeFailure } from \"@self/notices\";\nimport { makeStylesheetLink } from \"@self/stylesheet\";\n\nexport class LogIn extends HTMLElement {\n\n\tshadow: ShadowRoot;\n\n\temail: HTMLInputElement;\n\tpassword: HTMLInputElement;\n\n\tbutton: HTMLButtonElement;\n\n\tform: HTMLFormElement;\n\n\tforgotPasswordLink: HTMLAnchorElement;\n\n\tonClick: (event: Event) => void;\n\n\tstatic get observedAttributes() {\n\t\treturn [\"email\", \"password\"] as const;\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.shadow = this.attachShadow({ mode: \"open\" });\n\n\t\tthis.email = as HTMLInputElement;\n\n\t\tthis.password = as HTMLInputElement;\n\n\t\tthis.button = (\n\t\t\t\n\t\t) as HTMLButtonElement;\n\n\t\tthis.forgotPasswordLink = (\n\t\t\t\n\t\t\t\tHave you forgotten your password?\n\t\t\t\n\t\t) as HTMLAnchorElement;\n\n\t\tthis.onClick = onClick.bind(this);\n\n\t\tthis.form = (\n\t\t\t
\n\t\t\t\t

Log in to your account

\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{this.email}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{this.password}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{this.button}\n\t\t\t\t\t{this.forgotPasswordLink}\n\t\t\t\t
\n\t\t\t
\n\t\t) as HTMLFormElement;\n\n\t\tthis.shadow.append(\n\t\t\tthis.form,\n\t\t\tmakeStylesheetLink(),\n\t\t);\n\t}\n\n\tconnectedCallback() {\n\t\tthis.forgotPasswordLink.href = this.dataset.forgotPasswordUrl ?? \"#\";\n\t\tthis.form.addEventListener(\"submit\", this.onClick);\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.form.removeEventListener(\"submit\", this.onClick);\n\t}\n}\n\nasync function onClick(this: LogIn, event: Event) {\n\tevent.preventDefault();\n\n\ttry {\n\t\tthis.button.disabled = true;\n\t\tthis.email.disabled = true;\n\t\tthis.password.disabled = true;\n\n\t\tconst email = this.email.value;\n\t\tconst password = this.password.value;\n\n\t\tconst data = new URLSearchParams({\n\t\t\tlog: email,\n\t\t\tpwd: password,\n\t\t\tredirect_to: this.dataset.redirectTo!\n\t\t});\n\n\t\tdata.append(\"_wpnonce\", this.dataset.nonce || \"\");\n\t\tdata.append(\"woocommerce-login\", \"1\");\n\n\t\tconst res = await fetch(this.dataset.endpoint!, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: data,\n\t\t\tcredentials: \"include\",\n\t\t});\n\n\t\tif (res.ok) {\n\t\t\twindow.location.href = this.dataset.redirectTo!;\n\t\t} else {\n\t\t\tnoticeFailure(\"Login failed. Please try again.\");\n\t\t}\n\t} catch (error) {\n\t\tif (error instanceof TypeError) {\n\t\t\tnoticeFailure(\"Couldn't connect. Are you online?\");\n\t\t} else {\n\t\t\tnoticeFailure(\"There was an unexpected error.\")\n\t\t}\n\t} finally {\n\t\tthis.button.disabled = false;\n\t\tthis.email.disabled = false;\n\t\tthis.password.disabled = false;\n\t}\n}\n","import { makeStylesheetLink } from \"../../stylesheet\";\n\nexport class Register extends HTMLElement {\n\n\tshadow: ShadowRoot;\n\n\tbutton: HTMLButtonElement;\n\n\tonClick: () => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.shadow = this.attachShadow({ mode: \"open\" });\n\n\t\tthis.button = (\n\t\t\t\n\t\t\t\tRegister\n\t\t\t\n\t\t) as HTMLButtonElement;\n\n\t\tthis.onClick = onClick.bind(this);\n\n\t\tthis.shadow.append(\n\t\t\tthis.button,\n\t\t\tmakeStylesheetLink(),\n\t\t);\n\t}\n\n\tconnectedCallback() {\n\t\tthis.button.addEventListener(\"click\", this.onClick);\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.button.removeEventListener(\"click\", this.onClick);\n\t}\n}\n\nasync function onClick(this: Register) {\n\ttry {\n\t\tthis.button.disabled = true;\n\n\t\tconst registerUrl = this.dataset.registerUrl!;\n\n\t\twindow.location.href = registerUrl;\n\n\t} finally {\n\t\tthis.button.disabled = false;\n\t}\n}\n","import { Either } from \"@self/Either\";\nimport { fetch, NetworkError } from \"@self/fetch\";\nimport { noticeFailure } from \"@self/notices\";\nimport { ObservedAttributes, showMinicart } from \"@self/utils\";\nimport { bound, CustomElement, customElement } from \"../CustomElement\";\nimport { Quantity } from \"../Quantity\";\n\ntype FormDataFilter = (formData: FormData) => void | PromiseLike;\n\n@customElement(\"gct-add-to-cart\")\nexport class AddToCart extends CustomElement {\n\n\tstatic get observedAttributes() {\n\t\treturn [\"min\", \"max\", \"value\", \"disabled\"] as const;\n\t}\n\n\tquantity: Quantity;\n\tbutton: HTMLButtonElement;\n\n\tfilters: FormDataFilter[];\n\n\tconstructor() {\n\t\tconst quantity = as Quantity;\n\t\tconst button = as HTMLButtonElement;\n\n\t\tsuper(\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tQuanity:\n\t\t\t\t\t
\n\t\t\t\t\t\t{quantity}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t{button}\n\t\t\t
\n\t\t);\n\n\t\tconst min = this.getAttribute(\"min\");\n\t\tconst max = this.getAttribute(\"max\");\n\t\tconst value = this.getAttribute(\"value\");\n\t\tconst disabled = this.getAttribute(\"disabled\");\n\n\t\tif (min !== null) {\n\t\t\tquantity.setAttribute(\"min\", min);\n\t\t}\n\t\tif (max !== null) {\n\t\t\tquantity.setAttribute(\"max\", max);\n\t\t}\n\t\tif (value !== null) {\n\t\t\tquantity.setAttribute(\"value\", value);\n\t\t}\n\t\tif (disabled !== null) {\n\t\t\tquantity.setAttribute(\"disabled\", \"\");\n\t\t\tbutton.setAttribute(\"disabled\", \"\");\n\t\t}\n\n\t\tthis.quantity = quantity;\n\t\tthis.button = button;\n\n\t\tthis.filters = [];\n\t}\n\n\tconnectedCallback() {\n\t\tthis.button.addEventListener(\"click\", this.onClick);\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.button.removeEventListener(\"click\", this.onClick);\n\t}\n\n\tattributeChangedCallback(name: ObservedAttributes, _oldValue: string | null, newValue: string | null) {\n\t\tswitch (name) {\n\t\t\tcase \"disabled\":\n\t\t\t\tif (newValue !== null) {\n\t\t\t\t\tthis.button.setAttribute(name, newValue);\n\t\t\t\t} else {\n\t\t\t\t\tthis.button.removeAttribute(name);\n\t\t\t\t}\n\t\t\t// fallthrough\n\t\t\tcase \"min\":\n\t\t\tcase \"max\":\n\t\t\tcase \"value\":\n\t\t\t\tif (newValue !== null) {\n\t\t\t\t\tthis.quantity.setAttribute(name, newValue);\n\t\t\t\t} else {\n\t\t\t\t\tthis.quantity.removeAttribute(name);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t@bound\n\tasync onClick() {\n\t\ttry {\n\t\t\tthis.button.disabled = true;\n\n\t\t\tconst data = new FormData();\n\t\t\tdata.set(\"product_id\", this.dataset.variationId ?? this.dataset.productId!);\n\t\t\tdata.set(\"quantity\", String(this.quantity.value));\n\n\t\t\tfor (const filter of this.filters) {\n\t\t\t\tawait Promise.resolve(filter(data));\n\t\t\t}\n\n\t\t\tconst json = await Either.flatMapAsync(\n\t\t\t\tfetch(this.dataset.endpoint!, {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\tbody: data,\n\t\t\t\t\tcredentials: \"include\",\n\t\t\t\t}),\n\t\t\t\t(res) => res.json(),\n\t\t\t);\n\n\t\t\tif (json.isRight()) {\n\t\t\t\t/* TODO In case of an error, we get object in the shape of:\n\t\t\t\t * { error: true, product_url: string }\n\t\t\t\t * When that happens, we need to fetch the product URL, extract\n\t\t\t\t * any notices from it and then show them.\n\t\t\t\t */\n\t\t\t\tconst fragment = new DOMParser().parseFromString((json.right as any).fragments[\"div.widget_shopping_cart_content\"], \"text/html\");\n\t\t\t\tconst children = fragment.children[0].children;\n\n\t\t\t\tconst minicart = document.getElementById(\"mini-cart-container\");\n\t\t\t\tif (minicart !== null) {\n\t\t\t\t\tminicart.replaceChildren(...children);\n\t\t\t\t\tshowMinicart();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.error(json.left);\n\t\t\t\tif (json.left instanceof NetworkError) {\n\t\t\t\t\tnoticeFailure(\"Couldn't connect. Are you online?\");\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tnoticeFailure(\"There was an unexpected error.\");\n\t\t} finally {\n\t\t\tthis.button.disabled = false;\n\t\t}\n\t}\n}\n","import { hideMinicart } from \"@self/utils\";\nimport { makeStylesheetLink } from \"../../stylesheet\";\nimport remove from \"@self/images/remove\";\n\nexport class ContinueShopping extends HTMLElement {\n\n\tshadow: ShadowRoot;\n\n\tbutton: HTMLButtonElement;\n\n\tonClick: () => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.shadow = this.attachShadow({ mode: \"open\" });\n\n\t\tthis.button = (\n\t\t\t\n\t\t\t\n\t\t) as HTMLButtonElement;\n\n\t\tthis.onClick = onClick.bind(this);\n\n\t\tthis.shadow.append(\n\t\t\tthis.button,\n\t\t\tmakeStylesheetLink()\n\t\t);\n\t}\n\n\tconnectedCallback() {\n\t\tthis.button.addEventListener(\"click\", this.onClick);\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.button.removeEventListener(\"click\", this.onClick);\n\t}\n}\n\nfunction onClick(this: ContinueShopping) {\n\thideMinicart();\n}\n","import close from \"@self/images/close\";\nimport { noticeFailure, noticeSuccess } from \"@self/notices\";\nimport { makeStylesheetLink } from \"@self/stylesheet\";\n\nexport class RemoveFromCart extends HTMLElement {\n\n\tshadow: ShadowRoot;\n\n\tbutton: HTMLButtonElement;\n\n\tonClick: () => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.shadow = this.attachShadow({ mode: \"open\" });\n\n\t\tthis.button = as HTMLButtonElement;\n\n\t\tthis.onClick = onClick.bind(this);\n\n\t\tthis.shadow.append(this.button, makeStylesheetLink());\n\t}\n\n\tconnectedCallback() {\n\t\tthis.button.addEventListener(\"click\", this.onClick);\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.button.removeEventListener(\"click\", this.onClick);\n\t}\n}\n\nasync function onClick(this: RemoveFromCart) {\n\ttry {\n\t\tthis.button.disabled = true;\n\n\t\tconst res = await fetch(this.dataset.endpoint!, {\n\t\t\tmethod: \"POST\",\n\t\t\tcredentials: \"include\",\n\t\t});\n\n\t\tconst html = await res.text();\n\t\tconst newDocument = new DOMParser().parseFromString(html, \"text/html\");\n\t\tdocument.body.innerHTML = newDocument.body.innerHTML;\n\n\t\tnoticeSuccess(\"Product removed.\");\n\t} catch (error) {\n\t\tif (error instanceof TypeError) {\n\t\t\tnoticeFailure(\"Couldn't connect. Are you online?\");\n\t\t} else {\n\t\t\tnoticeFailure(\"There was an unexpected error.\")\n\t\t}\n\t} finally {\n\t\tthis.button.disabled = false;\n\t}\n}\n","import { noticeFailure, noticeSuccess } from \"@self/notices\";\nimport { makeStylesheetLink } from \"@self/stylesheet\";\nimport { genId } from \"@self/utils\";\n\nexport class ApplyGiftCard extends HTMLElement {\n\n\tshadow: ShadowRoot;\n\n\tinput: HTMLInputElement;\n\tbutton: HTMLButtonElement;\n\n\tstatic get observedAttributes() {\n\t\treturn [\"value\"] as const;\n\t}\n\n\tonClick: () => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.shadow = this.attachShadow({ mode: \"open\" });\n\n\t\tthis.button = (\n\t\t\t\n\t\t\t\tApply\n\t\t\t\n\t\t) as HTMLButtonElement;\n\n\t\tconst id = genId();\n\n\t\tthis.input = as HTMLInputElement;\n\n\t\tthis.onClick = onClick.bind(this);\n\n\t\tthis.shadow.append(\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{this.input}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t{this.button}\n\t\t\t
,\n\t\t\tmakeStylesheetLink(),\n\t\t);\n\t}\n\n\tconnectedCallback() {\n\t\tthis.button.addEventListener(\"click\", this.onClick);\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.button.removeEventListener(\"click\", this.onClick);\n\t}\n}\n\nasync function onClick(this: ApplyGiftCard) {\n\ttry {\n\t\tthis.button.disabled = true;\n\t\tthis.input.disabled = true;\n\n\t\tthis.button.disabled = true;\n\t\tthis.input.disabled = true;\n\n\t\tconst giftCardCode = this.input.value;\n\n\t\tconst data = new URLSearchParams({\n\t\t\taction: \"apply_gift_card_to_session\",\n\t\t\tsecurity: this.dataset.nonce!,\n\t\t\twc_gc_cart_code: giftCardCode,\n\t\t\twc_gc_is_checkout: \"true\",\n\t\t});\n\n\t\tconst res = await fetch(this.dataset.endpoint!, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: data,\n\t\t});\n\n\t\tconst json = await res.json();\n\n\t\tif (json === null || typeof json !== \"object\" || !(\"result\" in json) || !(\"applied\" in json) || !(\"notices_html\" in json) || typeof json.notices_html !== \"string\") {\n\t\t\tnoticeFailure(\"There was an unexpected error.\");\n\t\t\treturn;\n\t\t} else {\n\t\t\tconst notices = new DOMParser().parseFromString(json.notices_html, \"text/html\");\n\t\t\tconst noticeText = notices.documentElement.textContent ?? \"\";\n\t\t\t(json.applied === \"yes\" ? noticeSuccess : noticeFailure)(noticeText);\n\t\t}\n\t} catch (error) {\n\t\tif (error instanceof TypeError) {\n\t\t\tnoticeFailure(\"Couldn't connect. Are you online?\");\n\t\t} else {\n\t\t\tnoticeFailure(\"There was an unexpected error.\")\n\t\t}\n\t} finally {\n\t\tthis.button.disabled = false;\n\t\tthis.input.disabled = false;\n\t}\n}\n","import { genId, ObservedAttributes } from \"@self/utils\";\nimport { bound, CustomElement, customElement } from \"../CustomElement\";\n\n@customElement(\"gct-billing-address-checkbox\")\nexport class BillingCheckbox extends CustomElement {\n\n\tstatic get observedAttributes() {\n\t\treturn [\"checked\", \"disabled\", \"target\"] as const;\n\t}\n\n\tinput: HTMLInputElement;\n\n\tget checked() { return this.hasAttribute(\"checked\"); }\n\n\tset checked(value: boolean) {\n\t\tif (value) {\n\t\t\tthis.setAttribute(\"checked\", \"\");\n\t\t} else {\n\t\t\tthis.removeAttribute(\"checked\")\n\t\t}\n\t}\n\n\tget disabled() { return this.hasAttribute(\"disabled\"); }\n\n\tset disabled(value: boolean) {\n\t\tif (value) {\n\t\t\tthis.setAttribute(\"disabled\", \"\");\n\t\t} else {\n\t\t\tthis.removeAttribute(\"disabled\");\n\t\t}\n\t}\n\n\tget target() { return this.getAttribute(\"target\"); }\n\n\tset target(value: string | null) {\n\t\tif (value !== null) {\n\t\t\tthis.setAttribute(\"target\", value);\n\t\t} else {\n\t\t\tthis.removeAttribute(\"target\");\n\t\t}\n\t}\n\n\tconstructor() {\n\t\tconst id = genId();\n\n\t\tconst input = as HTMLInputElement;\n\n\t\tsuper(\n\t\t\t
\n\t\t\t\t{input}\n\t\t\t\t\n\t\t\t
\n\t\t);\n\n\t\tinput.checked = this.hasAttribute(\"checked\");\n\t\tinput.disabled = this.hasAttribute(\"disabled\");\n\n\t\tthis.input = input;\n\t}\n\n\tconnectedCallback() {\n\t\twindow.addEventListener(\"DOMContentLoaded\", this.externalDomInit, { once: true });\n\t\tthis.externalDomInit();\n\n\t\tthis.input.addEventListener(\"change\", this.onChange);\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.input.removeEventListener(\"change\", this.onChange);\n\t}\n\n\t@bound\n\texternalDomInit() {\n\t\tsetTargetVisibility(this.target, !this.checked);\n\t}\n\n\tattributeChangedCallback(name: ObservedAttributes, oldValue: string | null, newValue: string | null) {\n\t\tswitch (name) {\n\t\t\tcase \"checked\": {\n\t\t\t\tconst checked = newValue !== null;\n\t\t\t\tthis.input.checked = checked;\n\t\t\t\tsetTargetVisibility(this.target, !this.checked);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"disabled\":\n\t\t\t\tthis.input.disabled = newValue !== null;\n\t\t\t\tbreak;\n\t\t\tcase \"target\": {\n\t\t\t\tsetTargetVisibility(oldValue, true);\n\t\t\t\tsetTargetVisibility(newValue, !this.checked);\n\t\t\t}\n\t\t}\n\t}\n\n\t@bound\n\tonChange() {\n\t\tthis.checked = this.input.checked;\n\t}\n}\n\nfunction setTargetVisibility(target: string | null, visible: boolean): void {\n\tif (target === null) return;\n\n\tconst targetElement = document.querySelector(target);\n\tif (targetElement !== null) {\n\t\ttargetElement.style.display = visible ? \"\" : \"none\";\n\t}\n}\n","import { noticeFailure } from \"@self/notices\";\nimport { bound, customElement } from \"../CustomElement\";\nimport { BillingCheckbox } from \"./BillingAddressCheckbox\";\n\n/* NOTE This is an equivalent of WooCommerce's checkout.js. For reference, open\n * assets/js/frontend/checkout.js in WooCommerce plugin directory.\n */\n\ninterface UpdateCheckoutAction {\n\treadonly updateShippingMethod: boolean;\n}\n\nexport interface WcCheckoutParams {\n\treadonly ajax_url: string;\n\treadonly apply_coupon_nonce: string;\n\treadonly checkout_url: string;\n\treadonly debug_mode: string;\n\treadonly i18n_checkout_error: string;\n\treadonly is_checkout: string;\n\treadonly option_guest_checkout: string;\n\treadonly remove_coupon_nonce: string;\n\treadonly update_order_review_nonce: string;\n\treadonly wc_ajax_url: string;\n}\n\nexport interface WcAddressI18nParams {\n\treadonly locale: string;\n\treadonly locale_fields: string;\n}\n\nexport interface WcCountrySelectParams {\n\treadonly countries: string;\n\treadonly i18n_ajax_error: string;\n\treadonly i18n_input_too_long_1: string;\n\treadonly i18n_input_too_long_n: string;\n\treadonly i18n_input_too_short_1: string;\n\treadonly i18n_input_too_short_n: string;\n\treadonly i18n_load_more: string;\n\treadonly i18n_no_matches: string;\n\treadonly i18n_searching: string;\n\treadonly i18n_select_state_text: string;\n\treadonly i18n_selection_too_long_1: string;\n\treadonly i18n_selection_too_long_n: string;\n}\n\nexport interface WcFormField {\n\treadonly autocomplete: string;\n\treadonly class: readonly string[];\n\treadonly label: string;\n\treadonly priority: number;\n\treadonly required: boolean;\n\treadonly label_class?: string;\n\treadonly hidden?: boolean;\n\treadonly placeholder?: string;\n\treadonly type?: string;\n\treadonly validate?: readonly string[];\n}\n\nexport interface WcFormFieldWithKey extends WcFormField {\n\treadonly key: string;\n}\n\nexport interface WcFormFields {\n\treadonly [key: string]: WcFormField;\n}\n\nexport interface WcCountries {\n\treadonly [countryCode: string]:\n\t| readonly []\n\t| { readonly [stateCode: string]: string };\n}\n\nexport namespace WcAddressI18nParams {\n\texport interface Locale {\n\t\treadonly default: WcFormFields;\n\t\treadonly [countryCode: string]: { readonly [key: string]: Partial };\n\t}\n\n\texport interface LocaleFields {\n\t\treadonly [key: string]: string;\n\t}\n}\n\nexport interface Option {\n\treadonly value: string;\n\treadonly name: string;\n}\n\ndeclare global {\n\tconst wc_checkout_params: WcCheckoutParams;\n\tconst wc_address_i18n_params: WcAddressI18nParams;\n\tconst wc_country_select_params: WcCountrySelectParams;\n}\n\n/**\n * NOTE DO NOT EXPECT THIS TO EXIST\n */\ndeclare const jQuery: (selector: string) => any;\n\nfunction getLocalizedFields(countryCode: string): ReadonlyMap {\n\tconst locale = JSON.parse(wc_address_i18n_params.locale) as WcAddressI18nParams.Locale;\n\n\tconst fields = new Map();\n\tconst overrides = locale[countryCode];\n\n\tfor (const key in locale.default) {\n\t\tconst field: WcFormFieldWithKey = {\n\t\t\t...locale.default[key],\n\t\t\t...overrides?.[key],\n\t\t\tkey,\n\t\t};\n\n\t\tfields.set(key, Object.freeze(field));\n\t}\n\n\treturn fields;\n}\n\nfunction getStatesFor(countryCode: string): readonly Option[] {\n\tconst countries = JSON.parse(wc_country_select_params.countries) as WcCountries;\n\n\tconst states = Object.entries(countries[countryCode] ?? {}).map(([value, name]) => Object.freeze({ value, name }));\n\treturn Object.freeze(states);\n}\n\n@customElement(\"gct-checkout\")\nexport class Checkout extends HTMLElement {\n\n\tform: HTMLFormElement;\n\tupdateTimer: number | undefined;\n\txhr: AbortController | undefined;\n\n\tprocessing: boolean;\n\tpaymentTokenChecked: boolean;\n\tapplePaySdkInitialized: boolean;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.form = null!;\n\t\tthis.updateTimer = undefined;\n\t\tthis.xhr = undefined;\n\n\t\tthis.processing = false;\n\t\tthis.paymentTokenChecked = false;\n\t\tthis.applePaySdkInitialized = false;\n\t}\n\n\t@bound\n\tsetup() {\n\t\tthis.form = this.querySelector(\"form\")!;\n\n\t\tthis.form.addEventListener(\"submit\", this.submit);\n\n\t\t(document.getElementById(\"delivery-option\") as HTMLInputElement).addEventListener(\"click\", this.triggerUpdateCheckout);\n\t\t(document.getElementById(\"pickup-option\") as HTMLInputElement).addEventListener(\"click\", this.triggerUpdateCheckout);\n\t\t(this.form.elements.namedItem(\"shipping_country\") as HTMLSelectElement).addEventListener(\"change\", this.onCountryChange);\n\t\t(this.form.elements.namedItem(\"shipping_country\") as HTMLSelectElement).addEventListener(\"change\", this.triggerUpdateCheckout);\n\t\t(this.form.elements.namedItem(\"billing_country\") as HTMLSelectElement).addEventListener(\"change\", this.onCountryChange);\n\n\t\tthis.initPaymentMethods();\n\t\tthis.updateCheckout();\n\n\t\t/* BLINK HACK\n\t\t *\n\t\t * Blink downloads an additional script from\n\t\t * https://secure.blinkpayment.co.uk/assets/js/apple-pay-api.js which\n\t\t * calls `.submit()` on the form when the Apple Pay transaction is\n\t\t * authorized (line 144). This would skip the entire logic in our\n\t\t * `submit` method.\n\t\t */\n\t\tthis.form.submit = () => {\n\t\t\tthis.submit(new SubmitEvent(\"submit\"));\n\t\t};\n\t}\n\n\t@bound\n\tpaymentMethodSelected(event: MouseEvent) {\n\t\tevent.stopPropagation();\n\t}\n\n\tconnectedCallback() {\n\t\tsetTimeout(this.setup, 1000);\n\n\t\tdocument.addEventListener(\"click\", this.onClickGlobal);\n\t}\n\n\tinitPaymentMethods() {\n\t\tconst paymentMethods = Array.from(this.form.querySelectorAll(\"input[name=payment_method]\") as NodeListOf);\n\n\t\tfor (const input of paymentMethods) {\n\t\t\tinput.addEventListener(\"click\", this.paymentMethodSelected);\n\t\t\tinput.addEventListener(\"change\", this.triggerUpdateCheckout);\n\t\t}\n\n\t\t// If there are none selected, select the first\n\t\tlet current = paymentMethods.find((p) => p.checked);\n\t\tif (current === undefined) {\n\t\t\tcurrent = paymentMethods[0];\n\t\t\tcurrent.checked = true;\n\t\t}\n\n\t\tcurrent.click();\n\t}\n\n\t@bound\n\ttriggerUpdateCheckout() {\n\t\tthis.updateCheckout();\n\t}\n\n\tgetValue(name: string): string {\n\t\tconst element = this.form.elements.namedItem(name) as HTMLInputElement | RadioNodeList | null;\n\t\tif (element) {\n\t\t\t// Force a string, just in case the element is not an input and .value is undefined\n\t\t\treturn String(element.value ?? \"\");\n\t\t} else {\n\t\t\treturn \"\";\n\t\t}\n\t}\n\n\tsetInputValue(name: string, value: string) {\n\t\tconst element = this.form.elements.namedItem(name) as HTMLInputElement | null;\n\t\tif (element !== null) {\n\t\t\telement.value = value;\n\t\t}\n\t}\n\n\tupdateCheckout(args?: UpdateCheckoutAction) {\n\t\t// Small timeout to prevent multiple requests when several fields update at the same time\n\t\tthis.resetUpdateCheckoutTimer();\n\t\tthis.updateTimer = setTimeout(this.updateCheckoutAction, 5, args);\n\t}\n\n\tresetUpdateCheckoutTimer() {\n\t\tclearTimeout(this.updateTimer);\n\t\tthis.updateTimer = undefined;\n\t}\n\n\t@bound\n\tasync updateCheckoutAction(args: UpdateCheckoutAction = { updateShippingMethod: true }) {\n\t\tif (this.xhr !== undefined) {\n\t\t\tthis.xhr.abort(new Error(\"Aborted\"));\n\t\t\tthis.xhr = undefined;\n\t\t}\n\n\t\tconst shippingCountry = (document.getElementById(\"shipping_country\") as HTMLInputElement | null)?.value ?? \"\";\n\t\tconst shippingState = (document.getElementById(\"shipping_state\") as HTMLSelectElement | null)?.value ?? \"\";\n\t\tconst shippingPostcode = (document.getElementById(\"shipping_postcode\") as HTMLInputElement | null)?.value ?? \"\";\n\t\tconst shippingCity = (document.getElementById(\"shipping_city\") as HTMLInputElement | null)?.value ?? \"\";\n\t\tconst shippingAddress = (document.getElementById(\"shipping_address_1\") as HTMLInputElement | null)?.value ?? \"\";\n\t\tconst shippingAddress2 = (document.getElementById(\"shipping_address_2\") as HTMLInputElement | null)?.value ?? \"\";\n\n\t\tlet billingCountry = shippingCountry;\n\t\tlet billingState = shippingState;\n\t\tlet billingPostcode = shippingPostcode;\n\t\tlet billingCity = shippingCity;\n\t\tlet billingAddress = shippingAddress;\n\t\tlet billingAddress2 = shippingAddress2;\n\n\t\tconst billingCheckbox = this.form.querySelector(\"gct-billing-address-checkbox\");\n\n\t\t/* NOTE This is not exactly the same as WooCommerce's checkbox. Our says\n\t\t * \"Billing address same as delivery address\". This means that when it's\n\t\t * unchecked, we must use billing-specific inputs for billing data.\n\t\t */\n\t\tif (billingCheckbox === null || !billingCheckbox.checked) {\n\t\t\tbillingCountry = (document.getElementById(\"billing_country\") as HTMLInputElement | null)?.value ?? \"\";\n\t\t\tbillingState = (document.getElementById(\"billing_state\") as HTMLSelectElement | null)?.value ?? \"\";\n\t\t\tbillingPostcode = (document.getElementById(\"billing_postcode\") as HTMLInputElement | null)?.value ?? \"\";\n\t\t\tbillingCity = (document.getElementById(\"billing_city\") as HTMLInputElement | null)?.value ?? \"\";\n\t\t\tbillingAddress = (document.getElementById(\"billing_address_1\") as HTMLInputElement | null)?.value ?? \"\";\n\t\t\tbillingAddress2 = (document.getElementById(\"billing_address_2\") as HTMLInputElement | null)?.value ?? \"\";\n\t\t}\n\n\t\tlet hasFullAddress = true;\n\t\tfor (const input of this.form.querySelectorAll(\"input[data-required], select[data-required]\") as NodeListOf) {\n\t\t\tif (input.value === \"\") {\n\t\t\t\thasFullAddress = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tconst pickup = this.getValue(\"shipping_method[0]\").includes(\"local_pickup\");\n\n\t\t// Assume no files\n\t\tconst formData = Array.from(new FormData(this.form).entries()) as [string, string][];\n\n\t\tconst paymentMethod = this.getValue(\"payment_method\");\n\n\t\tconst requestData = new FormData();\n\t\trequestData.set(\"security\", wc_checkout_params.update_order_review_nonce);\n\t\trequestData.set(\"payment_method\", paymentMethod);\n\t\trequestData.set(\"country\", billingCountry);\n\t\trequestData.set(\"state\", billingState);\n\t\trequestData.set(\"postcode\", billingPostcode);\n\t\trequestData.set(\"city\", billingCity);\n\t\trequestData.set(\"address\", billingAddress);\n\t\trequestData.set(\"address_2\", billingAddress2);\n\t\trequestData.set(\"s_country\", pickup ? \"GB\" : shippingCountry);\n\t\trequestData.set(\"s_state\", pickup ? \"\" : shippingState);\n\t\trequestData.set(\"s_postcode\", pickup ? \"G75 0YG\" : shippingPostcode);\n\t\trequestData.set(\"s_city\", pickup ? \"East Kilbride\" : shippingCity);\n\t\trequestData.set(\"s_address\", pickup ? \"1–11 Langlands Avenue\" : shippingAddress);\n\t\trequestData.set(\"s_address_2\", pickup ? \"Kelvin South Business Park\" : shippingAddress2);\n\t\trequestData.set(\"has_full_address\", (pickup || hasFullAddress).toString());\n\t\trequestData.set(\"post_data\", new URLSearchParams(formData).toString());\n\n\t\tif (args.updateShippingMethod) {\n\t\t\trequestData.set(\"shipping_method[0]\", this.getValue(\"shipping_method[0]\"));\n\t\t}\n\n\t\tthis.xhr = new AbortController();\n\n\t\tconst spinner = document.getElementById(\"checkout-spinner\");\n\t\tspinner?.classList.remove(\"gct-d-none\");\n\n\t\tconst res = await fetch(this.dataset.endpoint!, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: requestData,\n\t\t\tsignal: this.xhr.signal,\n\t\t});\n\n\t\tconst responseData = await res.json();\n\n\t\tthis.xhr = undefined;\n\n\t\tif (typeof responseData === \"object\" && responseData !== null) {\n\t\t\tif (\"reload\" in responseData && responseData.reload === true) {\n\t\t\t\twindow.location.reload();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\"fragments\" in responseData && typeof responseData.fragments === \"object\" && responseData.fragments !== null) {\n\t\t\t\tconst { fragments } = responseData;\n\t\t\t\tif (\".woocommerce-checkout-payment\" in fragments && typeof fragments[\".woocommerce-checkout-payment\"] === \"string\") {\n\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\tconst parsedFragment = parser.parseFromString(fragments[\".woocommerce-checkout-payment\"], \"text/html\");\n\n\t\t\t\t\tconst scriptElements = Array.from(parsedFragment.getElementsByTagName(\"script\"));\n\t\t\t\t\tscriptElements.forEach((e) => e.remove());\n\n\t\t\t\t\t// BLINK HACK (one of their scripts expects `$` to be defined globally)\n\t\t\t\t\t(window as any).$ = jQuery;\n\n\t\t\t\t\tconst container = document.getElementById(\"gct-payment\")!;\n\t\t\t\t\tcontainer.replaceChildren(...parsedFragment.body.childNodes);\n\t\t\t\t\tfor (const scriptElement of scriptElements) {\n\n\t\t\t\t\t\t/* NOTE We add the SDK script from Apple only once,\n\t\t\t\t\t\t * because otherwise it tries to redefine a custom\n\t\t\t\t\t\t * element, causing an error. Either way, the Apple Pay\n\t\t\t\t\t\t * button seems to work, but by doing it this way we get\n\t\t\t\t\t\t * rid of console clutter.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tconst url = new URL(scriptElement.src);\n\t\t\t\t\t\tif (url.origin === \"https://applepay.cdn-apple.com\" && scriptElement.src.endsWith(\"apple-pay-sdk.js\")) {\n\t\t\t\t\t\t\tif (this.applePaySdkInitialized) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.applePaySdkInitialized = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst newScriptElement = document.createElement(\"script\");\n\t\t\t\t\t\tnewScriptElement.async = scriptElement.async;\n\t\t\t\t\t\tnewScriptElement.defer = scriptElement.defer;\n\t\t\t\t\t\t//newScriptElement.integrity = scriptElement.integrity;\n\t\t\t\t\t\tnewScriptElement.crossOrigin = scriptElement.crossOrigin;\n\t\t\t\t\t\tnewScriptElement.src = scriptElement.src;\n\t\t\t\t\t\tcontainer.appendChild(newScriptElement);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (\".woocommerce-checkout-review-order-table\" in fragments && typeof fragments[\".woocommerce-checkout-review-order-table\"] === \"string\") {\n\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\tconst parsedFragment = parser.parseFromString(fragments[\".woocommerce-checkout-review-order-table\"], \"text/html\");\n\n\t\t\t\t\tconst container = document.getElementById(\"gct-order-review\")!;\n\t\t\t\t\tcontainer.replaceChildren(...parsedFragment.body.childNodes);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.initPaymentMethods();\n\t\t}\n\n\t\tspinner?.classList.add(\"gct-d-none\");\n\n\t\t// Blink integration (following the logic in updated_checkout in Blink's custom.js)\n\n\t\tif (paymentMethod === \"blink\") {\n\t\t\tconst paymentBy = this.getValue(\"payment_by\");\n\t\t\tif (paymentBy === \"credit-card\") {\n\t\t\t\tdocument.getElementById(\"cc_customer_email\")?.classList.add(\"gct-d-none\");\n\t\t\t\tdocument.querySelectorAll(\".blink-form__label.field-label\").forEach((e) => {\n\t\t\t\t\tif (e.textContent?.trim() === \"Email\") {\n\t\t\t\t\t\te.classList.add(\"gct-d-none\");\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\ttry {\n\t\t\t\t\tconst auto = {\n\t\t\t\t\t\tautoSetup: true,\n\t\t\t\t\t\tautoSubmit: true,\n\t\t\t\t\t};\n\n\t\t\t\t\tconst $formCard = jQuery('form[name=\"blink-credit\"]');\n\t\t\t\t\tconst hf = $formCard.hostedForm(auto);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(\"An error occured:\", error);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.form.length && paymentBy === \"open-banking\") {\n\t\t\t\tthis.setInputValue(\"user_name\", this.getValue(\"billing_first_name\") + \" \" + this.getValue(\"billing_last_name\"));\n\t\t\t\tthis.setInputValue(\"user_email\", this.getValue(\"billing_email\"));\n\t\t\t}\n\n\t\t\tif (this.form.length && paymentBy === \"direct-debit\") {\n\t\t\t\tthis.setInputValue(\"given_name\", this.getValue(\"billing_first_name\") + \" \" + this.getValue(\"billing_last_name\"));\n\t\t\t\tthis.setInputValue(\"email\", this.getValue(\"billing_email\"));\n\t\t\t\tthis.setInputValue(\"family_name\", \"\");\n\t\t\t\tthis.setInputValue(\"account_holder_name\", \"\");\n\t\t\t}\n\n\t\t\tif (document.getElementById(\"blinkGooglePay\") !== null) {\n\t\t\t\tconst scriptElement = document.querySelector(\"#blinkGooglePay script[src=\\\"https://pay.google.com/gp/p/js/pay.js\\\"]\") as HTMLScriptElement | null;\n\t\t\t\tif (scriptElement !== null) {\n\t\t\t\t\tconst onload = scriptElement.getAttribute(\"onload\") ?? \"\";\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\teval(onload);\n\t\t\t\t\t\t} catch { }\n\t\t\t\t\t}, 1000);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\"Google Pay script element not found\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst prefix = billingCheckbox !== null && billingCheckbox.checked ? \"shipping_\" : \"billing_\";\n\t\t\tsetEachInputValue(\"customer_name\", this.getValue(`${prefix}first_name`) + \" \" + this.getValue(`${prefix}last_name`));\n\t\t\tsetEachInputValue(\"customer_email\", this.getValue(\"billing_email\")); // NOTE There is no shipping email, only billing\n\t\t\tsetEachInputValue(\"customer_address\", this.getValue(`${prefix}address_1`) + \", \" + this.getValue(`${prefix}address_2`));\n\t\t\tsetEachInputValue(\"customer_postcode\", this.getValue(`${prefix}postcode`));\n\t\t\tsetEachInputValue(\"device_timezone\", \"0\");\n\t\t\tsetEachInputValue(\"device_capabilities\", \"javascript\");\n\t\t\tsetEachInputValue(\"device_accept_language\", window?.navigator?.language || \"\");\n\t\t\tsetEachInputValue(\"device_screen_resolution\", \"0x0x0\");\n\t\t\tsetEachInputValue(\"remote_address\", \"0.0.0.0\");\n\n\t\t\tsetupApplePayButtonObserver();\n\t\t}\n\n\t\t// End of Blink integration\n\t}\n\n\t@bound\n\tasync submit(event: SubmitEvent) {\n\t\tthis.resetUpdateCheckoutTimer();\n\t\tevent.preventDefault();\n\n\t\tif (this.processing) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst spinner = document.getElementById(\"checkout-spinner\");\n\t\tlet keepSpinner = false;\n\n\t\ttry {\n\t\t\tthis.processing = true;\n\t\t\tspinner?.classList.remove(\"gct-d-none\");\n\n\t\t\tconst pickup = this.getValue(\"shipping_method[0]\").includes(\"local_pickup\");\n\t\t\tif (pickup) {\n\t\t\t\tthis.setInputValue(\"shipping_country\", \"GB\");\n\t\t\t\tthis.setInputValue(\"shipping_state\", \"\");\n\t\t\t\tthis.setInputValue(\"shipping_postcode\", \"G75 0YG\");\n\t\t\t\tthis.setInputValue(\"shipping_city\", \"East Kilbride\");\n\t\t\t\tthis.setInputValue(\"shipping_address_1\", \"1–11 Langlands Avenue\");\n\t\t\t\tthis.setInputValue(\"shipping_address_2\", \"Kelvin South Business Park\");\n\t\t\t}\n\n\t\t\tconst billingCheckbox = this.form.querySelector(\"gct-billing-address-checkbox\");\n\n\t\t\tconst data = new FormData(this.form);\n\n\t\t\t/* NOTE This is not exactly the same as WooCommerce's checkbox. Our says\n\t\t\t * \"Billing address same as delivery address\". This means that when it's\n\t\t\t * checked, we must use shipping-specific inputs for billing data.\n\t\t\t *\n\t\t\t */\n\t\t\tif (billingCheckbox !== null && billingCheckbox.checked) {\n\t\t\t\t/* NOTE We rely on FormData.set instead of this.setInputValue,\n\t\t\t\t * because billing inputs may have a different country, which\n\t\t\t\t * would require recreating the state/county input. Also, we\n\t\t\t\t * don't want to erase whatever the user put in before ticking\n\t\t\t\t * the checkbox in case the checkout fails and the user goes\n\t\t\t\t * back to change some things.\n\t\t\t\t */\n\t\t\t\tdata.set(\"billing_first_name\", this.getValue(\"shipping_first_name\"));\n\t\t\t\tdata.set(\"billing_last_name\", this.getValue(\"shipping_last_name\"));\n\t\t\t\tdata.set(\"billing_company\", this.getValue(\"shipping_company\"));\n\t\t\t\tdata.set(\"billing_country\", this.getValue(\"shipping_country\"));\n\t\t\t\tdata.set(\"billing_address_1\", this.getValue(\"shipping_address_1\"));\n\t\t\t\tdata.set(\"billing_address_2\", this.getValue(\"shipping_address_2\"));\n\t\t\t\tdata.set(\"billing_city\", this.getValue(\"shipping_city\"));\n\t\t\t\tdata.set(\"billing_state\", this.getValue(\"shipping_state\"));\n\t\t\t\tdata.set(\"billing_postcode\", this.getValue(\"shipping_postcode\"));\n\t\t\t\tdata.set(\"billing_phone\", this.getValue(\"shipping_phone\"));\n\t\t\t}\n\n\t\t\t// Blink integration\n\n\t\t\t/* NOTE We use FormData.get instead of this.getValue to take into\n\t\t\t * account the billing checkbox logic, which happens above.\n\t\t\t */\n\t\t\tsetEachInputValue(\"customer_name\", data.get(\"billing_first_name\") as string + \" \" + data.get(\"billing_last_name\") as string);\n\t\t\tsetEachInputValue(\"customer_email\", data.get(\"billing_email\") as string);\n\t\t\tsetEachInputValue(\"customer_address\", data.get(\"billing_address_1\") as string + \", \" + data.get(\"billing_address_2\") as string);\n\t\t\tsetEachInputValue(\"customer_postcode\", data.get(\"billing_postcode\") as string);\n\n\t\t\tif (this.getValue(\"payment_by\") === \"credit-card\") {\n\t\t\t\tdocument.getElementById(\"blink-credit-submit\")?.click();\n\n\t\t\t\twhile (true) {\n\t\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, 100));\n\n\t\t\t\t\tconst childForm = document.querySelector(\"form[name=blink-credit]\") as HTMLFormElement;\n\t\t\t\t\tconst paymentTokenElement = childForm.elements.namedItem(\"paymentToken\") as HTMLInputElement | null;\n\n\t\t\t\t\tif (paymentTokenElement === null) {\n\t\t\t\t\t\tconsole.log(\"Waiting for payment token...\");\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst childFormData = Array.from(new FormData(childForm).entries()) as [string, string][];\n\t\t\t\t\tconst paymentData = new URLSearchParams(childFormData).toString();\n\t\t\t\t\tdata.set(\"credit-card-data\", paymentData);\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// End of Blink integration\n\n\t\t\tconst res = await fetch(wc_checkout_params.checkout_url, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tbody: new URLSearchParams(data as any),\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/x-www-form-urlencoded\",\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tconst responseText = await res.text();\n\t\t\tconst responseData = parseResponseText(responseText);\n\n\t\t\tif (responseData !== null) {\n\t\t\t\tif (\"result\" in responseData) {\n\t\t\t\t\tif (responseData.result === \"success\") {\n\t\t\t\t\t} else if (responseData.result === \"failure\") {\n\t\t\t\t\t\tlet message = \"Order failed\";\n\t\t\t\t\t\tif (\"messages\" in responseData && typeof responseData.messages === \"string\") {\n\t\t\t\t\t\t\tconst document = new DOMParser().parseFromString(responseData.messages, \"text/html\");\n\t\t\t\t\t\t\tconst textContent = document.body.textContent;\n\t\t\t\t\t\t\tif (textContent) {\n\t\t\t\t\t\t\t\tmessage = textContent;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tawait noticeFailure(message);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (\"redirect\" in responseData && typeof responseData.redirect === \"string\") {\n\t\t\t\t\tkeepSpinner = true;\n\t\t\t\t\tif (-1 === responseData.redirect.indexOf(\"https://\") || -1 === responseData.redirect.indexOf(\"http://\")) {\n\t\t\t\t\t\t(window as any).location = responseData.redirect;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t(window as any).location = decodeURI(responseData.redirect);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (\"fragments\" in responseData && typeof responseData.fragments === \"object\" && responseData.fragments !== null) {\n\t\t\t\t\tconst { fragments } = responseData;\n\t\t\t\t\tif (\"form.woocommerce-checkout\" in fragments && typeof fragments[\"form.woocommerce-checkout\"] === \"string\") {\n\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\tconst parsedFragment = parser.parseFromString(fragments[\"form.woocommerce-checkout\"], \"text/html\");\n\n\t\t\t\t\t\t// TODO Extract notice text from parsedFragment and call noticeFailure\n\t\t\t\t\t\t// console.dir(parsedFragment);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {\n\t\t\tawait noticeFailure(\"Order failed\");\n\t\t} finally {\n\t\t\tif (!keepSpinner) {\n\t\t\t\tthis.processing = false;\n\t\t\t\tspinner?.classList.add(\"gct-d-none\");\n\t\t\t}\n\t\t}\n\t}\n\n\t@bound\n\tonClickGlobal(event: MouseEvent) {\n\t\tconst target = event.target as Element | null;\n\n\t\tif (target?.matches(\"#gpay-button-online-api-id\")) {\n\t\t\tthis.setInputValue(\"payment_by\", \"google-pay\");\n\t\t}\n\n\t\tif (target?.matches(\"#selectBatch\")) {\n\t\t\tif ((document.getElementById(\"credit-card\") as HTMLInputElement).checked) {\n\t\t\t\tthis.setInputValue(\"payment_by\", \"credit-card\");\n\t\t\t}\n\n\t\t\tif ((document.getElementById(\"direct-debit\") as HTMLInputElement).checked) {\n\t\t\t\tthis.setInputValue(\"payment_by\", \"direct-debit\");\n\t\t\t}\n\n\t\t\tif ((document.getElementById(\"open-banking\") as HTMLInputElement).checked) {\n\t\t\t\tthis.setInputValue(\"payment_by\", \"open-banking\");\n\t\t\t}\n\t\t}\n\t}\n\n\t@bound\n\tonCountryChange(event: Event) {\n\t\tconst target = event.currentTarget as HTMLSelectElement;\n\t\tconst countryCode = target.value;\n\n\t\tconst addressTypePrefix =\n\t\t\ttarget.name === \"shipping_country\" ? \"shipping_\"\n\t\t\t\t: target.name === \"billing_country\" ? \"billing_\"\n\t\t\t\t\t: null;\n\n\t\tif (addressTypePrefix === null) {\n\t\t\tconsole.error(`Unknown address type for country select named ${target.name}`);\n\t\t\treturn;\n\t\t}\n\n\t\tconst fields = getLocalizedFields(countryCode);\n\t\tconst states = getStatesFor(countryCode);\n\n\t\tconst root = addressTypePrefix === \"billing_\"\n\t\t\t? document.getElementById(\"checkout-billing\")!\n\t\t\t: document.getElementById(\"checkout-delivery\")!;\n\n\t\t// --- CHANGE STATE OPTIONS ---\n\n\t\tconst stateField = fields.get(\"state\")!;\n\n\t\tconst actualStateType =\n\t\t\tstates.length > 0 ? \"select\"\n\t\t\t\t: stateField.hidden === true ? \"hidden\"\n\t\t\t\t\t: \"text\";\n\n\t\tconst prevStateInput = this.form.elements.namedItem(addressTypePrefix + \"state\") as HTMLSelectElement | HTMLInputElement;\n\t\t// Hidden inputs have no parent container\n\t\tconst prevStateContainer = prevStateInput.type === \"hidden\" ? prevStateInput : prevStateInput.parentNode! as HTMLElement;\n\n\t\tconst nextStateInput = makeStateInput({\n\t\t\ttype: actualStateType,\n\t\t\taddressTypePrefix,\n\t\t\trequired: stateField.required ?? false,\n\t\t\tlabel: stateField.label,\n\t\t\toptions: states,\n\t\t});\n\n\t\tprevStateContainer.remove();\n\t\troot.appendChild(nextStateInput);\n\n\t\t// --- SORT FIELDS ----\n\n\t\tsortChildren(root, (a, b) => {\n\t\t\tconst aname = ((a.querySelector(\"[name]\") as { name: string } | null)?.name ?? \"\").slice(addressTypePrefix.length);\n\t\t\tconst bname = ((b.querySelector(\"[name]\") as { name: string } | null)?.name ?? \"\").slice(addressTypePrefix.length);\n\n\t\t\tconst aprio = fields.get(aname)?.priority ?? Infinity;\n\t\t\tconst bprio = fields.get(bname)?.priority ?? Infinity;\n\n\t\t\tconst diff = aprio - bprio;\n\n\t\t\treturn Number.isNaN(diff) ? 0 : diff;\n\t\t});\n\n\t\t// --- APPLY PROPERTIES ---\n\n\t\t/* Properties applied:\n\t\t * - label (as label's textContent)\n\t\t * - required (as boolean data-required attribute on the input)\n\t\t * - hidden (as gct-d-none class on the container; hiding also resets value to \"\")\n\t\t */\n\n\t\tfor (const field of fields.values()) {\n\t\t\tconst name = addressTypePrefix + field.key;\n\n\t\t\t// NOTE Inputs have IDs identical to their names\n\t\t\tconst input = document.getElementById(name) as HTMLInputElement | HTMLSelectElement | null;\n\t\t\tconst label = root.querySelector(`label[for=${name}]`) as HTMLLabelElement | null;\n\n\t\t\tif (input !== null) {\n\t\t\t\tconst container = input.type === \"hidden\" ? input : input.parentNode as HTMLElement;\n\n\t\t\t\tif (field.required) {\n\t\t\t\t\tinput.dataset.required = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tdelete input.dataset.required;\n\t\t\t\t}\n\n\t\t\t\tif (field.hidden === true) {\n\t\t\t\t\tcontainer.classList.add(\"gct-d-none\");\n\t\t\t\t\tinput.value = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tcontainer.classList.remove(\"gct-d-none\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (label !== null) {\n\t\t\t\tlet { label: textContent } = field;\n\t\t\t\tif (!field.required) {\n\t\t\t\t\ttextContent += \" (optional)\";\n\t\t\t\t}\n\t\t\t\tlabel.textContent = textContent;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction sortChildren(root: HTMLElement, compareFn: (a: HTMLElement, b: HTMLElement) => number): void {\n\tconst childNodes = Array.from(root.children) as HTMLElement[];\n\tchildNodes.sort(compareFn);\n\troot.replaceChildren(...childNodes);\n}\n\nfunction parseResponseText(text: string): object | null {\n\ttry {\n\t\tconst json: unknown = JSON.parse(text);\n\t\tif (typeof json === \"object\" && json !== null) {\n\t\t\treturn json;\n\t\t}\n\t} catch { }\n\n\t/* Here's the deal: SOMETIMES instead of JSON you get an HTML as a\n\t * response followed by the actual JSON (and the Content-Type in the\n\t * response is still application/json). When that happens, we have to\n\t * extract the JSON by scanning for it with regex.\n\t *\n\t * NOTE This is not made up, this is actually in WooCommerce's frontend\n\t * code (search for \"dataFilter\" in\n\t * woocommerce/assets/js/frontend/checkout.js).\n\t */\n\n\tconst fixedTextCandidate = text.match(/{\"result.*}/);\n\n\tif (fixedTextCandidate === null) {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst json: unknown = JSON.parse(fixedTextCandidate[0]);\n\t\tif (typeof json === \"object\" && json !== null) {\n\t\t\treturn json;\n\t\t}\n\t} catch { }\n\n\treturn null;\n}\n\nfunction setupApplePayButtonObserver() {\n\n\tconst overrideApplePayButtonClicked = () => {\n\t\tconst originalOnApplePayButtonClicked = (window as any).onApplePayButtonClicked;\n\t\t(window as any).onApplePayButtonClicked = function (this: any, ...args: any[]) {\n\t\t\t((document.querySelector(\"gct-checkout > form\") as HTMLFormElement).elements.namedItem(\"payment_by\") as HTMLInputElement).value = \"apple-pay\";\n\t\t\tif (typeof originalOnApplePayButtonClicked === \"function\") {\n\t\t\t\toriginalOnApplePayButtonClicked.apply(this, args);\n\t\t\t}\n\t\t};\n\t};\n\n\tconst checkApplePayButton = () => {\n\t\tif (typeof (window as any).onApplePayButtonClicked === \"function\") {\n\t\t\tobserver.disconnect();\n\t\t\toverrideApplePayButtonClicked();\n\t\t}\n\t};\n\n\tconst observer = new MutationObserver(checkApplePayButton);\n\tobserver.observe(document, { childList: true, subtree: true });\n}\n\nfunction setEachInputValue(name: string, value: string) {\n\tdocument.querySelectorAll(`input[name=\"${name}\"]`).forEach((e) => (e as HTMLInputElement).value = value);\n}\n\nnamespace makeStateInput {\n\texport interface CommonArgs {\n\t\treadonly addressTypePrefix: \"shipping_\" | \"billing_\";\n\t}\n\n\texport interface HiddenArgs extends CommonArgs {\n\t\treadonly type: \"hidden\";\n\t}\n\n\texport interface TextArgs extends CommonArgs {\n\t\treadonly type: \"text\";\n\t\treadonly required: boolean;\n\t\treadonly label: string;\n\t}\n\n\texport interface SelectArgs extends CommonArgs {\n\t\treadonly type: \"select\";\n\t\treadonly required: boolean;\n\t\treadonly label: string;\n\t\treadonly options: readonly Option[];\n\t}\n\n\texport type Args =\n\t\t| HiddenArgs\n\t\t| TextArgs\n\t\t| SelectArgs\n\t\t;\n}\n\nfunction makeStateInput(args: makeStateInput.Args): HTMLElement {\n\tconst name = `${args.addressTypePrefix}state`;\n\tswitch (args.type) {\n\t\tcase \"select\": {\n\t\t\tconst select = (\n\t\t\t\t\n\t\t\t) as HTMLSelectElement;\n\n\t\t\tif (args.required) {\n\t\t\t\tselect.dataset.required = \"\";\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t
\n\t\t\t\t\t{select}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t);\n\t\t}\n\t\tcase \"text\":\n\t\t\tconst input = (\n\t\t\t\t\n\t\t\t) as HTMLInputElement;\n\n\t\t\tif (args.required) {\n\t\t\t\tinput.dataset.required = \"\";\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t);\n\t\tcase \"hidden\":\n\t\t\treturn ;\n\t}\n}\n","import { udpdateReview } from \"../../utils\";\n\nexport function implementTablist(container: Element) {\n\n\tlet firstTab: HTMLElement | null = null;\n\tlet lastTab: HTMLElement | null = null;\n\n\n\tconst tabs: HTMLElement[] = Array.from(container.querySelectorAll(\"[role=tab]\"));\n\n\tconst tabpanels: HTMLElement[] = [];\n\n\tfor (const tab of tabs) {\n\t\tconst tabpanel = document.getElementById(tab.getAttribute(\"aria-controls\")!);\n\n\t\ttab.tabIndex = -1;\n\t\ttab.setAttribute(\"aria-selected\", \"false\");\n\t\ttabpanels.push(tabpanel!);\n\n\t\ttab.addEventListener(\"keydown\", onKeyDown);\n\t\ttab.addEventListener(\"click\", onClick);\n\n\t\tif (firstTab === null) firstTab = tab;\n\t\tlastTab = tab;\n\t}\n\n\tsetSelectedTab(firstTab as HTMLElement, false);\n\n\tfunction onKeyDown(event: KeyboardEvent) {\n\t\tconst target = event.currentTarget as HTMLElement;\n\n\t\tif(target.classList.contains(\"gct-checkout-tab-disabled\")) return;\n\t\t/* if(target.id !== \"bnt-review\" && !validateDeliveryForm()) return;\n\t\tif(target.id !== \"bnt-review\" && !validateBillingForm()) return; */\n\t\tif(target.id === \"bnt-review\") udpdateReview();\n\n\t\tswitch (event.key) {\n\t\t\tcase \"ArrowUp\":\n\t\t\t\tsetSelectedToPreviousTab(target);\n\t\t\t\tbreak;\n\t\t\tcase \"ArrowDown\":\n\t\t\t\tsetSelectedToNextTab(target);\n\t\t\t\tbreak;\n\t\t\tcase \"Home\":\n\t\t\t\tsetSelectedTab(firstTab as HTMLElement);\n\t\t\t\tbreak;\n\t\t\tcase \"End\":\n\t\t\t\tsetSelectedTab(lastTab as HTMLElement);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t}\n\n\tfunction onClick(event: Event) {\n\t\tconst tab = event.target as HTMLElement;\n\t\tif(tab.classList.contains(\"gct-checkout-tab-disabled\")) return;\n\t\t/* if(tab.id !== \"bnt-review\" && !validateDeliveryForm()) return;\n\t\tif(tab.id !== \"bnt-review\" && !validateBillingForm()) return; */\n\t\tif(tab.id === \"bnt-review\") udpdateReview();\n\t\tsetSelectedTab(tab);\n\t}\n\n\n\tfunction setSelectedTab(currentTab: HTMLElement, setFocus: boolean = true) {\n\t\tfor (let i = 0; i < tabs.length; ++i) {\n\t\t\tconst tab = tabs[i];\n\t\t\tif (currentTab === tab) {\n\t\t\t\ttab.setAttribute(\"aria-selected\", \"true\");\n\t\t\t\ttab.tabIndex = 0;\n\t\t\t\ttabpanels[i].classList.remove(\"gct-d-none\");\n\t\t\t\ttab.classList.add(\"gct-checkout-tab\");\n\t\t\t\tif (setFocus) tab.focus();\n\t\t\t} else {\n\t\t\t\ttab.setAttribute(\"aria-selected\", \"false\");\n\t\t\t\ttab.tabIndex = -1;\n\t\t\t\ttabpanels[i].classList.add(\"gct-d-none\");\n\t\t\t\ttab.classList.remove(\"gct-checkout-tab\");\n\t\t\t}\n\t\t}\n\t}\n\n\n\tfunction setSelectedToPreviousTab(currentTab: HTMLElement) {\n\t\tif (currentTab === firstTab) {\n\t\t\tsetSelectedTab(lastTab as HTMLInputElement);\n\t\t} else {\n\t\t\tconst index = tabs.indexOf(currentTab);\n\t\t\tsetSelectedTab(tabs[index - 1]);\n\t\t}\n\t}\n\n\tfunction setSelectedToNextTab(currentTab: HTMLElement) {\n\t\tif (currentTab === lastTab) {\n\t\t\tsetSelectedTab(firstTab as HTMLElement);\n\t\t} else {\n\t\t\tconst index = tabs.indexOf(currentTab);\n\t\t\tsetSelectedTab(tabs[index + 1]);\n\t\t}\n\t}\n}\n","import { makeStylesheetLink } from \"@self/stylesheet\";\nimport { genId } from \"@self/utils\";\n\nexport class CompanyCheckbox extends HTMLElement {\n\tshadow: ShadowRoot;\n\tinput: HTMLInputElement;\n\tonClick: () => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.shadow = this.attachShadow({ mode: \"open\" });\n\n\t\tconst id = genId();\n\n\t\tthis.input = as HTMLInputElement;\n\n\t\tthis.onClick = onClick.bind(this);\n\n\t\tthis.shadow.append(\n\t\t\t
\n\t\t\t\t{this.input}\n\t\t\t\t\n\t\t\t
,\n\t\t\tmakeStylesheetLink(),\n\t\t);\n\t}\n\n\tconnectedCallback() {\n\t\tthis.input.checked = this.dataset.checked !== undefined;\n\t\tthis.input.addEventListener(\"click\", this.onClick);\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.input.removeEventListener(\"click\", this.onClick);\n\t}\n}\n\nfunction onClick(this: CompanyCheckbox) {\n\tconst target = this.dataset.target!;\n\n\tconst input = document.getElementById(target) as HTMLInputElement;\n\tconst container = input.parentNode as HTMLDivElement;\n\n\tif (this.input.checked) {\n\t\tcontainer.style.display = \"\";\n\t} else {\n\t\tcontainer.style.display = \"none\";\n\t\tinput.value = \"\";\n\t}\n}\n","import { makeStylesheetLink } from \"../../stylesheet\";\nimport { validateDeliveryForm } from \"../../utils\";\nimport { Checkout } from \"./Checkout\";\n\nexport class ContinueToPayment extends HTMLElement {\n\n\tshadow: ShadowRoot;\n\tbutton: HTMLButtonElement;\n\n\tonClick: () => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.shadow = this.attachShadow({ mode: \"open\" });\n\n\t\tthis.button = as HTMLButtonElement;\n\t\tthis.onClick = onClick.bind(this);\n\n\t\tthis.shadow.append(this.button, makeStylesheetLink());\n\t}\n\n\tconnectedCallback() {\n\t\tthis.button.addEventListener(\"click\", this.onClick);\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.button.removeEventListener(\"click\", this.onClick);\n\t}\n}\n\nasync function onClick(this: ContinueToPayment) {\n\ttry {\n\t\tthis.button.disabled = true;\n\n\t\tif (!validateDeliveryForm()) return;\n\n\t\tconst deliveryTab = document.getElementById(\"panel-delivery\");\n\t\tconst paymentTab = document.getElementById(\"panel-payment\");\n\n\t\tif (deliveryTab) deliveryTab.classList.add(\"gct-d-none\");\n\t\tif (paymentTab) paymentTab.classList.remove(\"gct-d-none\");\n\n\t\tconst paymentFormLink = document.getElementById(\"btn-payment\");\n\t\tif (paymentFormLink) {\n\t\t\tpaymentFormLink.classList.remove(\"gct-checkout-tab-disabled\");\n\t\t\tpaymentFormLink.classList.add(\"gct-checkout-tab\");\n\t\t}\n\n\t\tconst deliveryFormLink = document.getElementById(\"btn-delivery\");\n\t\tif (deliveryFormLink) {\n\t\t\tdeliveryFormLink.classList.remove(\"gct-checkout-tab\");\n\t\t}\n\n\t\twindow.scrollTo(0, 0);\n\n\t\t/* TODO HACK: Blink doesn't work when refreshed while on different tab,\n\t\t * so we force a refresh when going to it. We only need to do it the\n\t\t * first time and at first we can get to billing tab only through this\n\t\t * button.\n\t\t */\n\t\tconst checkout = document.querySelector(\"gct-checkout\");\n\t\tcheckout?.triggerUpdateCheckout();\n\t} finally {\n\t\tthis.button.disabled = false;\n\t}\n}\n","import { LOCAL_PICKUP_FIELD_NAMES } from \"@self/utils\";\nimport { bound } from \"../CustomElement\";\nimport { BillingCheckbox } from \"./BillingAddressCheckbox\";\n\nexport class DeliveryOptionPicker extends HTMLElement {\n\tpreviousBillingCheckbox: boolean | null;\n\tdeliveryOption: HTMLInputElement;\n\tpickupOption: HTMLInputElement;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.previousBillingCheckbox = null;\n\t\tthis.deliveryOption = document.getElementById(\"delivery-option\") as HTMLInputElement;\n\t\tthis.pickupOption = document.getElementById(\"pickup-option\") as HTMLInputElement;\n\t}\n\n\tconnectedCallback() {\n\t\tthis.deliveryOption.addEventListener(\"change\", this.onChange);\n\t\tthis.pickupOption.addEventListener(\"change\", this.onChange);\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.deliveryOption.removeEventListener(\"change\", this.onChange);\n\t\tthis.pickupOption.removeEventListener(\"change\", this.onChange);\n\t}\n\n\t@bound\n\tonChange(event: Event) {\n\t\tconst shippingOption = (event.currentTarget as HTMLElement).id;\n\n\t\tconst deliveryQuestion = document.getElementById(\"delivery-question\")!;\n\t\tconst shopInfo = document.getElementById(\"shop-location\")!;\n\n\t\tconst checkoutDeliveryElement = document.getElementById(\"checkout-delivery\") as HTMLElement;\n\t\tconst deliveryInputs = checkoutDeliveryElement.querySelectorAll(\"select, input\") as NodeListOf;\n\n\t\tconst billingCheckbox = document.querySelector(\"gct-billing-address-checkbox\");\n\n\t\tif (shippingOption === \"pickup-option\") {\n\n\t\t\tfor (const input of deliveryInputs) {\n\t\t\t\tif (input.type === \"hidden\") continue;\n\n\t\t\t\tconst container = input.parentNode as HTMLElement;\n\t\t\t\tcontainer.classList[LOCAL_PICKUP_FIELD_NAMES.includes(input.name) ? \"remove\" : \"add\"](\"gct-d-none\");\n\t\t\t}\n\n\t\t\tif (billingCheckbox !== null) {\n\t\t\t\tthis.previousBillingCheckbox = billingCheckbox?.checked;\n\t\t\t\tbillingCheckbox.disabled = true;\n\t\t\t\tbillingCheckbox.checked = false;\n\t\t\t}\n\n\t\t\tdeliveryQuestion.innerText = \"Who will be picking up your order?\";\n\t\t\tshopInfo.classList.remove(\"gct-d-none\");\n\t\t} else if (shippingOption === \"delivery-option\") {\n\n\t\t\tfor (const input of deliveryInputs) {\n\t\t\t\tif (input.type === \"hidden\") continue;\n\n\t\t\t\tconst container = input.parentNode as HTMLElement;\n\t\t\t\tcontainer.classList.remove(\"gct-d-none\");\n\t\t\t}\n\n\t\t\tif (billingCheckbox !== null) {\n\t\t\t\tbillingCheckbox.disabled = false;\n\t\t\t\tbillingCheckbox.checked = this.previousBillingCheckbox ?? true;\n\t\t\t\tthis.previousBillingCheckbox = null;\n\t\t\t}\n\n\t\t\tdeliveryQuestion.innerText = \"Where should we send your order?\";\n\t\t\tshopInfo.classList.add(\"gct-d-none\");\n\t\t}\n\t}\n}\n","import { makeStylesheetLink } from \"@self/stylesheet\";\n\nexport class EditCheckoutStep extends HTMLElement {\n\n\tshadow: ShadowRoot;\n\n\tbutton: HTMLButtonElement;\n\n\tonClick: () => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.shadow = this.attachShadow({ mode: \"open\" });\n\n\t\tthis.button = as HTMLButtonElement;\n\t\tthis.onClick = onClick.bind(this);\n\n\t\tthis.shadow.append(this.button, makeStylesheetLink());\n\t}\n\n\tconnectedCallback() {\n\t\tthis.button.addEventListener(\"click\", this.onClick);\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.button.removeEventListener(\"click\", this.onClick);\n\t}\n}\n\nasync function onClick(this: EditCheckoutStep) {\n\ttry {\n\t\tthis.button.disabled = true;\n\n\t\tconst currentTab = document.getElementById(\"panel-review\");\n\t\tconst destTab = document.getElementById(this.dataset.destTab!);\n\n\t\tif (currentTab && destTab) {\n\t\t\tcurrentTab.classList.add(\"gct-d-none\");\n\t\t\tdestTab.classList.remove(\"gct-d-none\");\n\t\t}\n\n\t\tconst reviewTab = document.getElementById(\"btn-review\");\n\t\tif (reviewTab) reviewTab.classList.remove(\"gct-checkout-tab\");\n\t\tconst activeTab = document.getElementById(this.dataset.destLink!);\n\t\tif (activeTab) activeTab.classList.add(\"gct-checkout-tab\");\n\n\t} finally {\n\t\tthis.button.disabled = false;\n\t}\n}\n","import { makeStylesheetLink } from \"@self/stylesheet\";\nimport { genId } from \"@self/utils\";\n\nexport class GiftCardCheckbox extends HTMLElement {\n\tshadow: ShadowRoot;\n\tinput: HTMLInputElement;\n\tonClick: () => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.shadow = this.attachShadow({ mode: \"open\" });\n\n\t\tthis.onClick = onClick.bind(this);\n\n\t\tconst id = genId();\n\n\t\tthis.input = as HTMLInputElement;\n\n\t\tthis.shadow.append(\n\t\t\t
\n\t\t\t\t{this.input}\n\t\t\t\t\n\t\t\t
,\n\t\t\tmakeStylesheetLink(),\n\t\t);\n\t}\n\n\tconnectedCallback() {\n\t\tthis.input.addEventListener(\"click\", this.onClick);\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.input.removeEventListener(\"click\", this.onClick);\n\t}\n}\n\nfunction onClick(this: GiftCardCheckbox) {\n\tconst giftCard = document.getElementById(\"gift-card-code\");\n\tif (giftCard) {\n\t\tif (this.input.checked) {\n\t\t\tgiftCard.style.display = \"flex\";\n\t\t} else {\n\t\t\tgiftCard.style.display = \"none\";\n\t\t}\n\t}\n}\n","import { makeStylesheetLink } from \"@self/stylesheet\";\nimport { udpdateReview, validateBillingForm } from \"@self/utils\";\n\nexport class ReviewOrderButton extends HTMLElement {\n\n\tshadow: ShadowRoot;\n\n\tbutton: HTMLButtonElement;\n\n\tonClick: () => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.shadow = this.attachShadow({ mode: \"open\" });\n\n\t\tthis.button = as HTMLButtonElement;\n\t\tthis.onClick = onClick.bind(this);\n\n\t\tthis.shadow.append(this.button, makeStylesheetLink());\n\t}\n\n\tconnectedCallback() {\n\t\tthis.button.addEventListener(\"click\", this.onClick);\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.button.removeEventListener(\"click\", this.onClick);\n\t}\n}\n\nasync function onClick(this: ReviewOrderButton) {\n\ttry {\n\t\tthis.button.disabled = true;\n\n\t\tif (!validateBillingForm()) return;\n\n\t\tudpdateReview();\n\n\t\tconst paymentTab = document.getElementById(\"panel-payment\");\n\t\tconst reviewOrderTab = document.getElementById(\"panel-review\");\n\n\t\tif (paymentTab) paymentTab.classList.add(\"gct-d-none\");\n\t\tif (reviewOrderTab) reviewOrderTab.classList.remove(\"gct-d-none\");\n\n\t\tconst reviewFormLink = document.getElementById(\"btn-review\");\n\t\tif (reviewFormLink) {\n\t\t\treviewFormLink.classList.remove(\"gct-checkout-tab-disabled\");\n\t\t\treviewFormLink.classList.add(\"gct-checkout-tab\");\n\t\t}\n\n\t\tconst paymentFormLink = document.getElementById(\"btn-payment\");\n\t\tif (paymentFormLink) {\n\t\t\tpaymentFormLink.classList.remove(\"gct-checkout-tab\");\n\t\t}\n\n\t\twindow.scrollTo(0, 0);\n\t} finally {\n\t\tthis.button.disabled = false;\n\t}\n}\n","import { noticeFailure, noticeSuccess } from \"@self/notices\";\nimport { makeStylesheetLink } from \"@self/stylesheet\";\n\nexport class ApplyCoupon extends HTMLElement {\n\n\tshadow: ShadowRoot;\n\n\tinput: HTMLInputElement;\n\tbutton: HTMLButtonElement;\n\n\tstatic get observedAttributes() {\n\t\treturn [\"value\"] as const;\n\t}\n\n\tonClick: () => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.shadow = this.attachShadow({ mode: \"open\" });\n\n\t\tthis.button = (\n\t\t\t\n\t\t) as HTMLButtonElement;\n\n\t\tthis.onClick = onClick.bind(this);\n\n\t\tthis.input = as HTMLInputElement;\n\n\t\tthis.shadow.append(\n\t\t\t
\n\t\t\t\t{this.input}\n\t\t\t\t{this.button}\n\t\t\t
,\n\t\t\tmakeStylesheetLink(),\n\t\t);\n\t}\n\n\tconnectedCallback() {\n\t\tthis.button.addEventListener(\"click\", this.onClick);\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.button.removeEventListener(\"click\", this.onClick);\n\t}\n}\n\nasync function onClick(this: ApplyCoupon) {\n\ttry {\n\t\tthis.button.disabled = true;\n\t\tthis.input.disabled = true;\n\n\t\tconst couponCode = this.input.value;\n\n\t\tconst data = new URLSearchParams({\n\t\t\tapply_coupon: \"Apply coupon\",\n\t\t\tcoupon_code: couponCode,\n\t\t\t\"woocommerce-cart-nonce\": this.dataset.nonce!,\n\t\t});\n\n\t\tconst res = await fetch(this.dataset.endpoint!, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: data,\n\t\t\tcredentials: \"include\",\n\t\t});\n\n\t\tconst html = await res.text();\n\t\tconst newDocument = new DOMParser().parseFromString(html, \"text/html\");\n\t\tdocument.body.innerHTML = newDocument.body.innerHTML;\n\n\t\tnoticeSuccess(\"Coupon applied.\");\n\t} catch (error) {\n\t\tif (error instanceof TypeError) {\n\t\t\tnoticeFailure(\"Couldn't connect. Are you online?\");\n\t\t} else {\n\t\t\tnoticeFailure(\"There was an unexpected error.\")\n\t\t}\n\t} finally {\n\t\tthis.button.disabled = false;\n\t\tthis.input.disabled = false;\n\t}\n}\n\n","import { makeStylesheetLink } from \"@self/stylesheet\";\nimport { genId } from \"@self/utils\";\n\nexport class CouponCheckbox extends HTMLElement {\n\n\tshadow: ShadowRoot;\n\tinput: HTMLInputElement;\n\tonClick: () => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.shadow = this.attachShadow({ mode: \"open\" });\n\n\t\tconst id = genId();\n\n\t\tthis.input = as HTMLInputElement;\n\n\t\tthis.onClick = onClick.bind(this);\n\n\t\tthis.shadow.append(\n\t\t\t
\n\t\t\t\t{this.input}\n\t\t\t\t\n\t\t\t
,\n\t\t\tmakeStylesheetLink(),\n\t\t);\n\t}\n\n\tconnectedCallback() {\n\t\tthis.input.addEventListener(\"click\", this.onClick);\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.input.removeEventListener(\"click\", this.onClick);\n\t}\n}\n\nfunction onClick(this: CouponCheckbox) {\n\tconst applyCoupon = document.getElementById(\"coupon-code\");\n\tif (applyCoupon) {\n\t\tif (this.input.checked) {\n\t\t\tapplyCoupon.style.display = \"block\";\n\t\t\tapplyCoupon.style.paddingTop = \"16px\";\n\t\t} else {\n\t\t\tapplyCoupon.style.display = \"none\";\n\t\t}\n\t}\n}\n","import { noticeFailure, noticeSuccess } from \"@self/notices\";\nimport { makeStylesheetLink } from \"@self/stylesheet\";\n\nexport class RemoveCoupon extends HTMLElement {\n\n\tshadow: ShadowRoot;\n\tbutton: HTMLButtonElement;\n\tonClick: () => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.shadow = this.attachShadow({ mode: \"open\" });\n\n\t\tthis.button = \"}\n\t\t/> as HTMLButtonElement;\n\n\t\tthis.onClick = onClick.bind(this);\n\n\t\tthis.shadow.append(this.button);\n\n\t\tthis.shadow.append(this.button, makeStylesheetLink());\n\t}\n\n\tconnectedCallback() {\n\t\tthis.button.addEventListener(\"click\", this.onClick);\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.button.removeEventListener(\"click\", this.onClick);\n\t}\n}\n\nasync function onClick(this: RemoveCoupon) {\n\ttry {\n\t\tthis.button.disabled = true;\n\n\t\tconst data = new URLSearchParams({\n\t\t\t\"woocommerce-cart-nonce\": this.dataset.nonce!,\n\t\t});\n\n\t\tawait fetch(`${this.dataset.endpoint!}/?remove_coupon=${this.dataset.coupon!}`, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: data,\n\t\t\tcredentials: \"include\",\n\t\t});\n\n\t\tconst res = await fetch(this.dataset.endpoint!, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: data,\n\t\t\tcredentials: \"include\",\n\t\t});\n\n\t\tconst html = await res.text();\n\t\tconst newDocument = new DOMParser().parseFromString(html, \"text/html\");\n\t\tdocument.body.innerHTML = newDocument.body.innerHTML;\n\n\t\tnoticeSuccess(\"Coupon removed.\");\n\t} catch (error) {\n\t\tif (error instanceof TypeError) {\n\t\t\tnoticeFailure(\"Couldn't connect. Are you online?\");\n\t\t} else {\n\t\t\tnoticeFailure(\"There was an unexpected error.\")\n\t\t}\n\t} finally {\n\t\tthis.button.disabled = false;\n\t}\n}\n","import { Either } from \"./Either\";\n\nexport class NetworkError extends Error {\n\n\tcause: TypeError;\n\n\tconstructor(cause: TypeError) {\n\t\tsuper(cause.message);\n\t\tthis.cause = cause;\n\t}\n}\n\ninterface ResponseOverrides {\n\tarrayBuffer(): Promise>;\n\tblob(): Promise>;\n\tformData(): Promise>;\n\tjson(): Promise>;\n\ttext(): Promise>;\n}\n\nexport interface Response extends Omit, ResponseOverrides { }\n\nconst handler: ProxyHandler = {\n\tget: (target, prop) => {\n\t\tswitch (prop) {\n\t\t\tcase \"arrayBuffer\":\n\t\t\tcase \"formData\":\n\t\t\tcase \"json\":\n\t\t\t\treturn () => Either.tryPromise(target[prop]());\n\t\t\tcase \"blob\":\n\t\t\tcase \"text\":\n\t\t\t\treturn () => (target[prop]() as Promise).then(Either.right);\n\t\t\tdefault:\n\t\t\t\treturn Reflect.get(target, prop, target);\n\t\t}\n\t}\n};\n\nexport function fetch(input: RequestInfo | URL, init?: RequestInit): Promise> {\n\treturn globalThis.fetch(input, init).then(\n\t\t(res) => Either.right(new Proxy(res, handler) as unknown as Response),\n\t\t(error) => Either.left(new NetworkError(error as TypeError)),\n\t);\n}\n","export default \"\";\n","export default \"\"\n","declare global {\n\tnamespace JSX {\n\t\tinterface IntrinsicElements {\n\t\t\t[_: string]: Attributes;\n\t\t}\n\n\t\ttype Element = HTMLElement;\n\t}\n}\n\nexport type CSSProperties = {\n\t[K in keyof CSSStyleDeclaration as number extends K ? never : CSSStyleDeclaration[K] extends string ? K : never]?: CSSStyleDeclaration[K];\n};\n\nexport type Attributes =\n\t{ style?: CSSProperties | undefined }\n\t& { [_: string]: unknown };\n\nexport type Props =\n\t{ style?: CSSProperties | undefined, children?: HTMLElement | string | (HTMLElement | string)[] }\n\t& { [_: string]: string | undefined };\n\nfunction _jsx(tagName: string, props: Props, _key?: string): HTMLElement {\n\tconst {\n\t\tchildren,\n\t\tstyle,\n\t\t...attributes\n\t} = props;\n\n\tconst element = document.createElement(tagName);\n\tObject.assign(element.style, style);\n\tObject.assign(element, attributes);\n\tif (children !== undefined) {\n\t\tif (Array.isArray(children)) {\n\t\t\telement.append(...children);\n\t\t} else {\n\t\t\telement.append(children);\n\t\t}\n\t}\n\n\treturn element;\n}\n\nexport const jsx = _jsx;\nexport const jsxs = _jsx;\nexport const jsxDEV = _jsx;\n","import close from \"./images/close\";\n\nexport interface NoticeOptions {\n\t/** Signal that can be used to forcefully close the notice. */\n\treadonly signal?: AbortSignal;\n\treadonly timeoutMs?: number;\n}\n\nconst EMPTY_OBJECT = Object.freeze({});\n\nexport function noticeSuccess(message: string, options: NoticeOptions = EMPTY_OBJECT) {\n\n\tconsole.log(`[\\x1B[32mNOTICE\\x1B[0m] ${message}`);\n\n\treturn makeNotice({\n\t\tclassName: \"gct-notice gct-notice-success gct-flex-row gct-flex-space-between\",\n\t\tmessage,\n\t\tsignal: options.signal,\n\t\ttimeoutMs: options.timeoutMs,\n\t});\n}\n\nexport function noticeFailure(error: string | Error, options: NoticeOptions = EMPTY_OBJECT) {\n\tif (typeof error === \"string\") {\n\t\terror = new Error(error);\n\t}\n\n\tconsole.error(`[\\x1B[31mNOTICE\\x1B[0m] ${error.message}`);\n\tconsole.trace(error);\n\n\treturn makeNotice({\n\t\tclassName: \"gct-notice gct-notice-failure gct-flex-row gct-flex-space-between\",\n\t\tmessage: error.message,\n\t\tsignal: options.signal,\n\t\ttimeoutMs: options.timeoutMs,\n\t});\n}\n\nnamespace makeNotice {\n\texport interface Props {\n\t\treadonly className: string;\n\t\treadonly message: string;\n\t\treadonly signal?: AbortSignal;\n\t\treadonly timeoutMs?: number;\n\t}\n}\n\nfunction makeNotice({\n\tclassName,\n\tmessage,\n\tsignal,\n\ttimeoutMs = 4000,\n}: makeNotice.Props) {\n\n\tlet resolve: () => void, reject: (error: Error) => void;\n\tconst promise = new Promise((_resolve, _reject) => {\n\t\tresolve = _resolve;\n\t\treject = _reject;\n\t});\n\n\tconst closeButton = ;\n\n\tconst element = (\n\t\t
\n\t\t\t{message}\n\t\t\t{closeButton}\n\t\t
\n\t);\n\n\tdocument.body.appendChild(element);\n\telement.classList.add(\"gct-notice-entry\");\n\tgetComputedStyle(element);\n\tsetTimeout(() => element.classList.remove(\"gct-notice-entry\"), 0);\n\n\tconst onClick = () => {\n\t\tcleanup();\n\t\tresolve();\n\t};\n\n\tconst onAbort = () => {\n\t\tcleanup();\n\t\treject(new Error(\"Aborted\"));\n\t};\n\n\tconst onTimeout = () => {\n\t\tcleanup();\n\t\tresolve();\n\t};\n\n\tconst cleanup = () => {\n\t\telement.remove();\n\t\tclearTimeout(timeout);\n\t\tsignal?.removeEventListener(\"abort\", onAbort);\n\t\tcloseButton.removeEventListener(\"click\", onClick);\n\t}\n\n\tconst timeout = setTimeout(onTimeout, timeoutMs);\n\tsignal?.addEventListener(\"abort\", onAbort);\n\tcloseButton?.addEventListener(\"click\", onClick);\n\n\treturn promise;\n}\n","/**! Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n!function(){function t(t,e){for(var n=0;n=r?r<(t=this.scrollSource,\"block\"===(e=this.orientation)?e=\"vertical\":\"inline\"===e&&(e=\"horizontal\"),\"vertical\"===e?t.scrollHeight-t.clientHeight:\"horizontal\"===e?t.scrollWidth-t.clientWidth:void 0)&&(\"none\"===this.fill||\"backwards\"===this.fill)?null:o:(l-n)/(r-n)*o}},{key:\"__polyfill\",get:function(){return!0}}]),t}(),u=new WeakMap,h=[[[0,1,2,3]],[[0,2],[1,3]],[[0],[1,3],[2]],[[0],[1],[2],[3]]],f=function(){function t(t){u.set(this,{target:null,edge:\"start\",threshold:0,rootMargin:[[0,\"px\"],[0,\"px\"],[0,\"px\"],[0,\"px\"]]}),this.target=t.target,this.edge=t.edge||\"start\",this.threshold=t.threshold||0,this.rootMargin=t.rootMargin||\"0px 0px 0px 0px\",this.clamp=t.clamp||!1}return e(t,[{key:\"target\",set:function(t){if(!(t instanceof Element))throw u.get(this).target=null,Error(\"Intersection target must be an element.\");u.get(this).target=t},get:function(){return u.get(this).target}},{key:\"edge\",set:function(t){-1!=[\"start\",\"end\"].indexOf(t)&&(u.get(this).edge=t)},get:function(){return u.get(this).edge}},{key:\"threshold\",set:function(t){var e=parseFloat(t);if(e<0||e>1)throw RangeError(\"threshold must be in the range [0, 1]\");u.get(this).threshold=e},get:function(){return u.get(this).threshold}},{key:\"rootMargin\",set:function(t){var e=t.split(/ +/);if(e.length<1||e.length>4)throw TypeError(\"rootMargin must contain between 1 and 4 length components\");for(var i=[[],[],[],[]],r=0;r {\n\tlet href: null | string = null;\n\treturn (): HTMLLinkElement => {\n\t\tif (href == null) {\n\t\t\tconst link: HTMLLinkElement | null = document.querySelector(\"head > link[data-gct-stylesheet]\");\n\t\t\thref = link?.href ?? \"\";\n\t\t}\n\n\t\treturn as HTMLLinkElement;\n\t};\n})();\n","import { AddToCart } from \"./elements/cart/AddToCart\";\nimport type { BillingCheckbox } from \"./elements/checkout/BillingAddressCheckbox\";\nimport { implementSearchBar } from \"./elements/SearchResult\";\nimport { noticeFailure } from \"./notices\";\n\n/* DO NOT BOTHER with any regex more complicated than this. The only true way to\n * check if an email address is valid is to try sending an email.\n */\nconst EMAIL_REGEX = /^[^@]+@[^@]+\\.[^@]+$/;\n\nexport type ObservedAttributes = C[\"observedAttributes\"] extends readonly (infer T)[] ? T : never;\n\nexport const LOCAL_PICKUP_FIELD_NAMES = [\n\t\"shipping_first_name\",\n\t\"shipping_last_name\",\n\t\"shipping_company\",\n\t\"shipping_phone\",\n];\n\nexport function udpdateReview() {\n\tconst checkoutDeliveryElement = document.getElementById(\"checkout-delivery\") as HTMLElement;\n\tconst checkoutBillingElement = document.getElementById(\"checkout-billing\") as HTMLElement;\n\n\tconst shippingOption = (document.querySelector('input[name=\"shipping_method[0]\"]:checked') as HTMLInputElement).id as \"shipping-option\" | \"pickup-option\";\n\tconst deliveryInputs = checkoutDeliveryElement.querySelectorAll(\"select, input\") as NodeListOf;\n\tconst billingInputs = checkoutBillingElement.querySelectorAll(\"select, input\") as NodeListOf;\n\n\tconst billingCheckbox = document.querySelector(\"gct-billing-address-checkbox\");\n\tconst isBillingAddressSameAsDelivery = billingCheckbox?.checked ?? false;\n\n\tconst reviewEmail = document.getElementById(\"email-review\")!;\n\tconst reviewDelivery = document.getElementById(\"delivery-info-review\")!;\n\tconst reviewDeliveryOption = document.getElementById(\"delivery-option-review\")!;\n\tconst reviewBilling = document.getElementById(\"billing-info-review\")!;\n\tconst reviewPayment = document.getElementById(\"payment-method-review\")!;\n\n\treviewEmail.textContent = (document.getElementById(\"billing_email\") as HTMLInputElement).value;\n\n\treviewDelivery.replaceChildren(...Array.from(deliveryInputs)\n\t\t.filter((input) => input.value.length > 0 && (shippingOption !== \"pickup-option\" || LOCAL_PICKUP_FIELD_NAMES.includes(input.name)))\n\t\t.map((input) =>
{inputDisplayValue(input)}
)\n\t);\n\n\treviewDeliveryOption.textContent = shippingOption === \"pickup-option\" ? \"Pick up\" : \"Delivery\";\n\n\tif (isBillingAddressSameAsDelivery) {\n\t\treviewBilling.replaceChildren(\n\t\t\t
Same as delivery
\n\t\t);\n\t} else {\n\t\treviewBilling.replaceChildren(...Array.from(billingInputs)\n\t\t\t.filter((input) => input.value.length > 0)\n\t\t\t.map((input) =>
{inputDisplayValue(input)}
)\n\t\t);\n\t}\n\n\tconst paymentOptionElemnt = document.querySelector('input[name=\"payment_method\"]:checked');\n\tconst paymentLabel = document.querySelector(`label[for=\"payment_method_${paymentOptionElemnt?.value ?? \"\"}\"]`);\n\n\tif (paymentLabel !== null) {\n\t\treviewPayment.innerHTML = paymentLabel.innerHTML;\n\t} else {\n\t\t// Payment lable does not exist when there is only one payment option\n\t\t(reviewPayment.parentNode as HTMLElement).classList.add(\"gct-d-none\");\n\t}\n}\n\nfunction validateRegex(input: HTMLInputElement | HTMLSelectElement, regex: RegExp): boolean {\n\tif (!regex.test(input.value)) {\n\t\tinput.classList.add(\"gct-input-error\");\n\t\treturn false;\n\t} else {\n\t\tinput.classList.remove(\"gct-input-error\");\n\t\treturn true;\n\t}\n}\n\nfunction validateNonEmpty(input: HTMLInputElement | HTMLSelectElement): boolean {\n\tif (input.value.length === 0) {\n\t\tinput.classList.add(\"gct-input-error\");\n\t\treturn false;\n\t} else {\n\t\tinput.classList.remove(\"gct-input-error\");\n\t\treturn true;\n\t}\n}\n\nfunction inputDisplayValue(input: HTMLInputElement | HTMLSelectElement): string {\n\tif (input instanceof HTMLSelectElement) {\n\t\tconst option = input.selectedOptions[0];\n\t\treturn option?.textContent ?? \"\";\n\t}\n\n\treturn input.value;\n}\n\nexport function validateDeliveryForm() {\n\tconst checkoutDeliveryElement = document.getElementById(\"checkout-delivery\") as HTMLElement;\n\n\tconst emailInput = document.getElementById(\"billing_email\") as HTMLInputElement;\n\tconst deliveryInputs = checkoutDeliveryElement.querySelectorAll(\"select, input\") as NodeListOf;\n\tconst isLocalPickup = (document.querySelector('input[name=\"shipping_method[0]\"]:checked') as HTMLInputElement).id === \"pickup-option\";\n\n\tlet isFormValid = validateRegex(emailInput, EMAIL_REGEX);\n\tfor (const input of deliveryInputs) {\n\t\tif (\"required\" in input.dataset && (LOCAL_PICKUP_FIELD_NAMES.includes(input.name) || !isLocalPickup)) {\n\t\t\t/* DO NOT INLINE THIS VARIABLE\n\t\t\t * If you inline `valid`, the computation will short-circuit (by\n\t\t\t * definition of the && operator) and only the first invalid input\n\t\t\t * will get a red border.\n\t\t\t */\n\t\t\tconst valid = validateNonEmpty(input);\n\t\t\tisFormValid &&= valid;\n\t\t}\n\t}\n\n\tif (!isFormValid) {\n\t\tnoticeFailure(\"Please provide all the necessary details\");\n\t}\n\n\treturn isFormValid;\n}\n\nexport function validateBillingForm() {\n\tconst billingCheckbox = document.querySelector(\"gct-billing-address-checkbox\");\n\tconst isBillingAddressSameAsDelivery = billingCheckbox?.checked ?? false;\n\n\tif (isBillingAddressSameAsDelivery) {\n\t\treturn true;\n\t}\n\n\tconst checkoutBillingElement = document.getElementById(\"checkout-billing\") as HTMLElement;\n\tconst billingInputs = checkoutBillingElement.querySelectorAll(\"select, input\") as NodeListOf;\n\n\tlet isFormValid = true;\n\tfor (const input of billingInputs) {\n\t\tif (\"required\" in input.dataset) {\n\t\t\t/* DO NOT INLINE THIS VARIABLE\n\t\t\t * If you inline `valid`, the computation will short-circuit (by\n\t\t\t * definition of the && operator) and only the first invalid input\n\t\t\t * will get a red border.\n\t\t\t */\n\t\t\tconst valid = validateNonEmpty(input);\n\t\t\tisFormValid &&= valid;\n\t\t}\n\t}\n\n\tif (!isFormValid) {\n\t\tnoticeFailure(\"Please provide all the necessary details\");\n\t}\n\n\treturn isFormValid;\n}\n\nexport function implementArrowNavigation() {\n\tconst prevButton = document.getElementById(\"carousel-arrow-prev\");\n\tconst nextButton = document.getElementById(\"carousel-arrow-next\");\n\n\tfunction handleCarouselMoveNext() {\n\t\tconst carousel = document.getElementById(\"cross-sells-container\")\n\t\tconst slide = document.querySelector(\".gct-cross-sell\");\n\n\t\tconst slideWidth = slide!.clientWidth;\n\t\tcarousel!.scrollLeft = carousel!.scrollLeft + slideWidth;\n\t\t(prevButton as HTMLButtonElement).disabled = false;\n\n\t\tconst maxScrollLeft = carousel!.scrollWidth - carousel!.clientWidth;\n\t\tif (carousel!.scrollLeft >= maxScrollLeft) {\n\t\t\t(nextButton as HTMLButtonElement).disabled = true;\n\t\t}\n\n\t}\n\n\tfunction handleCarouselMovePrev() {\n\t\tconst carousel = document.getElementById(\"cross-sells-container\")\n\t\tconst slide = document.querySelector(\".gct-cross-sell\");\n\t\tconst slideWidth = slide!.clientWidth;\n\t\tcarousel!.scrollLeft = carousel!.scrollLeft - slideWidth;\n\t\t(nextButton as HTMLButtonElement).disabled = false;\n\n\t\tif (carousel!.scrollLeft <= 0) {\n\t\t\t(prevButton as HTMLButtonElement).disabled = true;\n\t\t}\n\t}\n\n\tprevButton?.addEventListener(\"click\", handleCarouselMovePrev);\n\tnextButton?.addEventListener(\"click\", handleCarouselMoveNext);\n};\n\nexport function implementArrowNavigation_gen(carouselId: string, slideId: string, prveButtonId: string, nextButtonId: string) {\n\tconst prevButton = document.getElementById(prveButtonId);\n\tconst nextButton = document.getElementById(nextButtonId);\n\n\tfunction handleCarouselMoveNext() {\n\t\tconst carousel = document.getElementById(carouselId)\n\t\tconst slide = document.querySelector(slideId);\n\t\tconst slideWidth = slide!.clientWidth;\n\t\tcarousel!.scrollLeft = carousel!.scrollLeft + slideWidth;\n\t\t(prevButton as HTMLButtonElement).disabled = false;\n\n\t\tconst maxScrollLeft = carousel!.scrollWidth - carousel!.clientWidth;\n\t\tif (carousel!.scrollLeft >= maxScrollLeft) {\n\t\t\t(nextButton as HTMLButtonElement).disabled = true;\n\t\t}\n\n\t}\n\n\tfunction handleCarouselMovePrev() {\n\t\tconst carousel = document.getElementById(carouselId)\n\t\tconst slide = document.querySelector(slideId);\n\t\tconst slideWidth = slide!.clientWidth;\n\t\tcarousel!.scrollLeft = carousel!.scrollLeft - slideWidth;\n\t\t(nextButton as HTMLButtonElement).disabled = false;\n\n\t\tif (carousel!.scrollLeft <= 0) {\n\t\t\t(prevButton as HTMLButtonElement).disabled = true;\n\t\t}\n\t}\n\n\tprevButton?.addEventListener(\"click\", handleCarouselMovePrev);\n\tnextButton?.addEventListener(\"click\", handleCarouselMoveNext);\n};\n\nexport function collectionNavigation() {\n\tconst prevButton = document.getElementById(\"collection-carousel-arrow-prev\");\n\tconst nextButton = document.getElementById(\"collection-carousel-arrow-next\");\n\n\tlet scrollControll = 0;\n\n\tfunction handleCarouselMoveNext() {\n\t\tconst carousel = document.getElementById(\"collections-names-container\")\n\n\t\tcarousel!.scrollLeft = carousel!.scrollLeft + 100;\n\t\tscrollControll += 100;\n\t\t(prevButton as HTMLButtonElement).disabled = false;\n\n\t\tif (carousel!.scrollLeft < scrollControll) {\n\t\t\t(nextButton as HTMLButtonElement).disabled = true;\n\t\t}\n\n\t}\n\n\tfunction handleCarouselMovePrev() {\n\t\tconst carousel = document.getElementById(\"collections-names-container\")\n\n\t\tcarousel!.scrollLeft = carousel!.scrollLeft - 100;\n\t\tscrollControll -= 100;\n\t\t(nextButton as HTMLButtonElement).disabled = false;\n\n\t\tif (carousel!.scrollLeft <= 0) {\n\t\t\t(prevButton as HTMLButtonElement).disabled = true;\n\t\t}\n\t}\n\n\tprevButton?.addEventListener(\"click\", handleCarouselMovePrev);\n\tnextButton?.addEventListener(\"click\", handleCarouselMoveNext);\n};\n\nexport function showMinicart() {\n\tconst minicart = document.getElementById(\"mini-cart-container\");\n\tconst overlay = document.getElementById(\"overlay\");\n\n\tif (minicart) {\n\t\tminicart.classList.remove(\"gct-header-mini-basket\");\n\t}\n\n\tif (overlay) {\n\t\toverlay.style.zIndex = \"110\";\n\t\toverlay.classList.remove(\"gct-overlay-hidden\");\n\t}\n\n\tlocalStorage.setItem(\"showMiniBasket\", \"true\");\n}\n\nexport function myFunction(containerID: string, buttonId: string) {\n\tconst x = document.getElementById(containerID);\n\tconst button = document.getElementById(buttonId);\n\n\tfunction myFunction() {\n\n\t\tif (!x) return;\n\t\tif (!button) return;\n\n\n\t\tif (x.style.display === \"flex\") {\n\t\t\tbutton.style.transform = \"rotate(0deg)\";\n\t\t\tx.style.display = \"none\";\n\n\t\t} else {\n\t\t\tbutton.style.transform = \"rotate(180deg)\";\n\t\t\tx.style.display = \"flex\";\n\t\t}\n\t}\n\n\n\tbutton?.addEventListener(\"click\", myFunction);\n}\n\nexport function hideMinicart() {\n\tconst minicart = document.getElementById(\"mini-cart-container\");\n\tconst overlay = document.getElementById(\"overlay\");\n\n\tif (minicart) {\n\t\tminicart.classList.add(\"gct-header-mini-basket\");\n\t}\n\n\tif (overlay) {\n\t\toverlay.classList.add(\"gct-overlay-hidden\");\n\t\toverlay.style.zIndex = \"90\";\n\t}\n}\n\nexport function implementMiniCart() {\n\tconst basketButton = document.getElementById(\"header-basket-button\");\n\tconst isCart = basketButton?.dataset.isCart;\n\tif (basketButton && !isCart) {\n\t\tbasketButton.addEventListener('click', showMinicart);\n\t}\n}\n\nexport function updateDisplay() {\n\timplementArrowNavigation();\n\timplementSearchBar();\n\timplementMiniCart();\n\timplementSingleProductOverlay();\n\timplementVariationSelection();\n}\n\nexport const genId = (() => {\n\tlet nextId = 0;\n\treturn (): string => {\n\t\tconst id = `gct-gen-${nextId}`;\n\t\tnextId += 1;\n\t\treturn id;\n\t};\n})();\n\nexport function headerCustomBehaviour() {\n\tconst header = document.getElementById(\"header\");\n\tconst isFrontPage = header?.getAttribute(\"data-is-front-page\") === \"true\";\n\n\tif (isFrontPage) {\n\t\theader.classList.add(\"header-fornt-page\");\n\n\t\tdocument.addEventListener(\"scroll\", () => {\n\t\t\tif (window.scrollY > 0) {\n\t\t\t\theader.classList.remove(\"header-fornt-page\");\n\t\t\t} else {\n\t\t\t\theader.classList.add(\"header-fornt-page\");\n\t\t\t}\n\t\t});\n\t}\n\n\n/* \tconst mobileHeader = document.getElementById(\"mobile-header\");\n\tconst isFrontPagemobile = mobileHeader?.getAttribute(\"data-is-front-page\") === \"true\";\n\n\tif (isFrontPagemobile) {\n\t\tmobileHeader.classList.add(\"header-fornt-page\");\n\n\t\tdocument.addEventListener(\"scroll\", () => {\n\t\t\tif (window.scrollY > 0) {\n\t\t\t\tmobileHeader.classList.remove(\"header-fornt-page\");\n\t\t\t} else {\n\t\t\t\tmobileHeader.classList.add(\"header-fornt-page\");\n\t\t\t}\n\t\t});\n\t} */\n}\n\nexport function singleProductPhotosMobileBehaviour() {\n\tconst carousel = document.getElementById(\"product-carousel\") as HTMLElement;\n\n\tif (!carousel) return;\n\n\tlet isDragging = false;\n\tlet startX = 0;\n\tlet scrollLeft = 0;\n\n\tcarousel.addEventListener('mousedown', (e) => {\n\t\tisDragging = true;\n\t\tcarousel.classList.add('gct-active');\n\t\tstartX = e.pageX - carousel.offsetLeft;\n\t\tscrollLeft = carousel.scrollLeft;\n\t});\n\n\tcarousel.addEventListener('mouseup', () => {\n\t\tisDragging = false;\n\t\tcarousel.classList.remove('gct-active');\n\t});\n\n\tcarousel.addEventListener('mouseleave', () => {\n\t\tisDragging = false;\n\t\tcarousel.classList.remove('gct-active');\n\t});\n\n\tcarousel.addEventListener('mousemove', (e) => {\n\t\tif (!isDragging) return;\n\t\te.preventDefault();\n\t\tconst x = e.pageX - carousel.offsetLeft;\n\t\tconst walk = (x - startX) * 2;\n\t\tcarousel.scrollLeft = scrollLeft - walk;\n\t});\n}\n\nexport function toggleMobileHeader() {\n\tconst burgerButton = document.getElementById('burger');\n\tconst mobileHeaderContainer = document.getElementById(\"burger-content\") as HTMLElement;\n\tconst showHeaderButtons = document.getElementsByName('show-header');\n\tconst mobileHeader = document.querySelector(\".gct-header-mobile\") as HTMLElement;\n\n\tconst shopContent = document.getElementById(\"shop-content\") as HTMLElement;\n\tconst shopBtn = document.getElementById(\"show-shop\");\n\n\tconst glasswareContent = document.getElementById(\"glassawre-content\") as HTMLElement;\n\tconst glassawreBtn = document.getElementById(\"show-glassware\");\n\n\tconst decanterContent = document.getElementById(\"decanters-content\") as HTMLElement;\n\tconst decanterBtn = document.getElementById(\"show-decanters\");\n\n\tconst accesoriesContent = document.getElementById(\"accessories-content\") as HTMLElement;\n\tconst accesoriesBtn = document.getElementById(\"show-accessories\");\n\n\tconst collectionsContent = document.getElementById(\"collections-content\") as HTMLElement;\n\tconst collectionsBtn = document.getElementById(\"show-collections\");\n\n\tconst giftsContent = document.getElementById(\"gifts-content\") as HTMLElement;\n\tconst giftsBtn = document.getElementById(\"show-gifts\");\n\n\tconst personalisationContent = document.getElementById(\"personalisation-content\") as HTMLElement;\n\tconst personalisationBtn = document.getElementById(\"show-personalisation\");\n\n\tconst businessContent = document.getElementById(\"business-content\") as HTMLElement;\n\tconst businessBtn = document.getElementById(\"show-business\");\n\n\tconst searchContent = document.getElementById(\"search-content\");\n\n\tconst prevHeaderBtns = document.getElementsByName(\"prev-header-first\");\n\tconst prevShopBtns = document.getElementsByName('prev-header-second-shop');\n\n\tif (burgerButton && mobileHeaderContainer && mobileHeader && shopContent && shopBtn && collectionsContent && collectionsBtn\n\t\t&& glassawreBtn && glasswareContent && decanterContent && decanterBtn && accesoriesContent && searchContent\n\t\t&& accesoriesBtn && giftsContent && giftsBtn && personalisationContent && personalisationBtn && businessBtn && businessContent) {\n\n\t\tburgerButton.addEventListener('click', () => {\n\t\t\tmobileHeader.classList.add(\"gct-d-none\");\n\t\t\tmobileHeaderContainer.classList.remove(\"gct-d-none\");\n\t\t});\n\n\t\tshopBtn.addEventListener(\"click\", () => {\n\t\t\tmobileHeaderContainer.classList.add(\"gct-d-none\");\n\t\t\tshopContent.classList.remove(\"gct-d-none\");\n\t\t});\n\n\t\tgiftsBtn.addEventListener(\"click\", () => {\n\t\t\tmobileHeaderContainer.classList.add(\"gct-d-none\");\n\t\t\tgiftsContent.classList.remove(\"gct-d-none\");\n\t\t});\n\n\t\tpersonalisationBtn.addEventListener(\"click\", () => {\n\t\t\tmobileHeaderContainer.classList.add(\"gct-d-none\");\n\t\t\tpersonalisationContent.classList.remove(\"gct-d-none\");\n\t\t});\n\n\t\tbusinessBtn.addEventListener(\"click\", () => {\n\t\t\tmobileHeaderContainer.classList.add(\"gct-d-none\");\n\t\t\tbusinessContent.classList.remove(\"gct-d-none\");\n\t\t});\n\n\t\tglassawreBtn.addEventListener(\"click\", () => {\n\t\t\tshopContent.classList.add(\"gct-d-none\");\n\t\t\tglasswareContent.classList.remove(\"gct-d-none\");\n\t\t});\n\n\t\tdecanterBtn.addEventListener(\"click\", () => {\n\t\t\tshopContent.classList.add(\"gct-d-none\");\n\t\t\tdecanterContent.classList.remove(\"gct-d-none\");\n\t\t});\n\n\t\taccesoriesBtn.addEventListener(\"click\", () => {\n\t\t\tshopContent.classList.add(\"gct-d-none\");\n\t\t\taccesoriesContent.classList.remove(\"gct-d-none\");\n\t\t});\n\n\t\tcollectionsBtn.addEventListener(\"click\", () => {\n\t\t\tshopContent.classList.add(\"gct-d-none\");\n\t\t\tcollectionsContent.classList.remove(\"gct-d-none\");\n\t\t})\n\n\n\t\tfor (const btn of showHeaderButtons) {\n\t\t\tbtn.addEventListener(\"click\", () => {\n\t\t\t\tmobileHeaderContainer.classList.add(\"gct-d-none\");\n\t\t\t\tshopContent.classList.add(\"gct-d-none\");\n\t\t\t\tgiftsContent.classList.add(\"gct-d-none\");\n\t\t\t\tpersonalisationContent.classList.add(\"gct-d-none\");\n\t\t\t\tbusinessContent.classList.add(\"gct-d-none\");\n\t\t\t\tglasswareContent.classList.add(\"gct-d-none\");\n\t\t\t\tdecanterContent.classList.add(\"gct-d-none\");\n\t\t\t\taccesoriesContent.classList.add(\"gct-d-none\");\n\t\t\t\tcollectionsContent.classList.add(\"gct-d-none\");\n\t\t\t\tsearchContent.classList.add(\"gct-d-none\");\n\t\t\t\tmobileHeader.classList.remove(\"gct-d-none\");\n\t\t\t})\n\t\t}\n\n\t\tfor (const prevBtn of prevHeaderBtns) {\n\t\t\tprevBtn.addEventListener(\"click\", () => {\n\t\t\t\tshopContent.classList.add(\"gct-d-none\");\n\t\t\t\tgiftsContent.classList.add(\"gct-d-none\");\n\t\t\t\tpersonalisationContent.classList.add(\"gct-d-none\");\n\t\t\t\tbusinessContent.classList.add(\"gct-d-none\");\n\t\t\t\tmobileHeaderContainer.classList.remove(\"gct-d-none\");\n\t\t\t})\n\t\t}\n\n\t\tfor (const prevShopBtn of prevShopBtns) {\n\t\t\tprevShopBtn.addEventListener(\"click\", () => {\n\t\t\t\tglasswareContent.classList.add(\"gct-d-none\");\n\t\t\t\tdecanterContent.classList.add(\"gct-d-none\");\n\t\t\t\taccesoriesContent.classList.add(\"gct-d-none\");\n\t\t\t\tcollectionsContent.classList.add(\"gct-d-none\");\n\t\t\t\tshopContent.classList.remove(\"gct-d-none\");\n\t\t\t})\n\t\t}\n\t}\n}\n\nexport function implementSingleProductOverlay() {\n\tconst closeButton = document.getElementById('close-single-product-overlay');\n\n\tcloseButton?.addEventListener(\"click\", function () {\n\t\tconst overlay = document.getElementById('single-product-overlay');\n\n\t\toverlay?.classList.add(\"gct-d-none\");\n\t});\n\n\n\tconst openButton = document.getElementById('open-single-product-overlay');\n\n\topenButton?.addEventListener(\"click\", function () {\n\t\tconst overlay = document.getElementById('single-product-overlay');\n\n\t\toverlay?.classList.remove(\"gct-d-none\");\n\t});\n}\n\ninterface ProductVariation {\n\treadonly attributes: Readonly>;\n\treadonly price_html: string;\n\treadonly sku: string;\n\treadonly variation_id: number;\n\t/** Empty string when no image. */\n\treadonly image_src: string;\n}\n\nfunction implementVariationSelection() {\n\tconst productVariationsElement = document.getElementById(\"product-variations\");\n\tif (productVariationsElement === null) return;\n\n\tconst overlayImageElement = document.getElementById(\"gct-overlay-image\") as HTMLImageElement;\n\tconst largeImageElement = document.getElementById(\"gct-large-image\") as HTMLImageElement;\n\tconst carouselImageElement = document.getElementById(\"gct-carousel-image\") as HTMLImageElement;\n\n\tconst productSkuElement = document.getElementById(\"product-sku\") as HTMLElement;\n\tconst productPriceElement = document.getElementById(\"product-price\") as HTMLElement;\n\tconst addToCartElement = (document.getElementsByTagName(\"gct-add-to-cart\") as HTMLCollectionOf)[0];\n\n\tconst defaultSku = productSkuElement.textContent;\n\tconst defaultPriceHtml = productPriceElement.innerHTML;\n\n\tconst defaultOverlayImageSrc = overlayImageElement.src;\n\tconst defaultLargeImageSrc = largeImageElement.src;\n\tconst defaultLargeImageSrcset = largeImageElement.srcset;\n\tconst defaultLargeImageSizes = largeImageElement.sizes;\n\tconst defaultCarouselImageSrc = carouselImageElement.src;\n\n\tconst productVariations = JSON.parse(productVariationsElement.textContent!) as readonly ProductVariation[];\n\tconst attributeSelectElements = Array.from(document.querySelectorAll(\"select[data-attribute_name]\")) as readonly HTMLSelectElement[];\n\n\tconst getAttributeSet = (): Readonly> => Object.freeze(Object.fromEntries(\n\t\tattributeSelectElements.map((attributeSelect) => [\n\t\t\tattributeSelect.dataset[\"attribute_name\"]!,\n\t\t\tattributeSelect.value,\n\t\t] as const),\n\t));\n\n\tconst findVariation = (attributeSet: Readonly>): ProductVariation | undefined => {\n\t\tconst ka = Object.keys(attributeSet);\n\t\tfor (const productVariation of productVariations) {\n\t\t\tconst kb = Object.keys(productVariation.attributes);\n\t\t\tif (ka.length === kb.length && ka.every((k) => productVariation.attributes[k] === attributeSet[k])) {\n\t\t\t\treturn productVariation;\n\t\t\t}\n\t\t}\n\n\t\treturn undefined;\n\t};\n\n\tconst onAttributeSelect = function () {\n\t\tconst attributeSet = getAttributeSet();\n\n\t\tlargeImageElement.removeAttribute(\"srcset\");\n\t\tlargeImageElement.removeAttribute(\"sizes\");\n\n\t\tif (Object.values(attributeSet).some((value) => value === \"\")) {\n\t\t\t// Not all attributes are selected.\n\t\t\tproductSkuElement.textContent = defaultSku;\n\t\t\tproductPriceElement.innerHTML = defaultPriceHtml;\n\t\t\taddToCartElement.setAttribute(\"disabled\", \"\");\n\t\t\tdelete addToCartElement.dataset.variationId;\n\t\t\toverlayImageElement.src = defaultOverlayImageSrc;\n\t\t\tlargeImageElement.src = defaultLargeImageSrc;\n\t\t\tlargeImageElement.srcset = defaultLargeImageSrcset;\n\t\t\tlargeImageElement.sizes = defaultLargeImageSizes;\n\t\t\tcarouselImageElement.src = defaultCarouselImageSrc;\n\t\t\treturn;\n\t\t}\n\n\t\tconst productVariation = findVariation(attributeSet);\n\n\t\tif (productVariation === undefined) {\n\t\t\t// All attributes are selected, but no variation exists.\n\t\t\tproductSkuElement.textContent = \"N/A\";\n\t\t\tproductPriceElement.innerHTML = \"N/A\";\n\t\t\taddToCartElement.setAttribute(\"disabled\", \"\");\n\t\t\tdelete addToCartElement.dataset.variationId;\n\t\t\toverlayImageElement.src = defaultOverlayImageSrc;\n\t\t\tlargeImageElement.src = defaultLargeImageSrc;\n\t\t\tlargeImageElement.srcset = defaultLargeImageSrcset;\n\t\t\tlargeImageElement.sizes = defaultLargeImageSizes;\n\t\t\tcarouselImageElement.src = defaultCarouselImageSrc;\n\n\t\t} else {\n\t\t\tproductSkuElement.textContent = productVariation.sku;\n\t\t\tproductPriceElement.innerHTML = productVariation.price_html || defaultPriceHtml;\n\t\t\taddToCartElement.removeAttribute(\"disabled\");\n\t\t\taddToCartElement.dataset.variationId = String(productVariation.variation_id);\n\n\t\t\tif (productVariation.image_src) {\n\t\t\t\toverlayImageElement.src = productVariation.image_src;\n\t\t\t\tlargeImageElement.src = productVariation.image_src;\n\t\t\t\tcarouselImageElement.src = productVariation.image_src;\n\t\t\t} else {\n\t\t\t\toverlayImageElement.src = defaultOverlayImageSrc;\n\t\t\t\tlargeImageElement.src = defaultLargeImageSrc;\n\t\t\t\tlargeImageElement.srcset = defaultLargeImageSrcset;\n\t\t\t\tlargeImageElement.sizes = defaultLargeImageSizes;\n\t\t\t\tcarouselImageElement.src = defaultCarouselImageSrc;\n\t\t\t}\n\t\t}\n\t};\n\n\tattributeSelectElements.forEach((e) => e.addEventListener(\"change\", onAttributeSelect));\n\tonAttributeSelect();\n}\n","/* @minVersion 7.20.0 */\n\n/**\n Enums are used in this file, but not assigned to vars to avoid non-hoistable values\n\n CONSTRUCTOR = 0;\n PUBLIC = 1;\n PRIVATE = 2;\n\n FIELD = 0;\n ACCESSOR = 1;\n METHOD = 2;\n GETTER = 3;\n SETTER = 4;\n\n STATIC = 5;\n\n CLASS = 10; // only used in assertValidReturnValue\n*/\n\nfunction _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass) {\n function createAddInitializerMethod(initializers, decoratorFinishedRef) {\n return function addInitializer(initializer) {\n assertNotFinished(decoratorFinishedRef, \"addInitializer\");\n assertCallable(initializer, \"An initializer\");\n initializers.push(initializer);\n };\n }\n\n function memberDec(dec, name, desc, initializers, kind, isStatic, isPrivate, metadata, value) {\n var kindStr;\n\n switch (kind) {\n case 1 /* ACCESSOR */:\n kindStr = \"accessor\";\n break;\n case 2 /* METHOD */:\n kindStr = \"method\";\n break;\n case 3 /* GETTER */:\n kindStr = \"getter\";\n break;\n case 4 /* SETTER */:\n kindStr = \"setter\";\n break;\n default:\n kindStr = \"field\";\n }\n\n var ctx = { kind: kindStr, name: isPrivate ? \"#\" + name : name, static: isStatic, private: isPrivate, metadata: metadata };\n\n var decoratorFinishedRef = { v: false };\n\n ctx.addInitializer = createAddInitializerMethod(initializers, decoratorFinishedRef);\n\n var get, set;\n if (kind === 0 /* FIELD */) {\n if (isPrivate) {\n get = desc.get;\n set = desc.set;\n } else {\n get = function() {\n return this[name];\n };\n set = function(v) {\n this[name] = v;\n };\n }\n } else if (kind === 2 /* METHOD */) {\n get = function() {\n return desc.value;\n };\n } else {\n // replace with values that will go through the final getter and setter\n if (kind === 1 /* ACCESSOR */ || kind === 3 /* GETTER */) {\n get = function() {\n return desc.get.call(this);\n };\n }\n\n if (kind === 1 /* ACCESSOR */ || kind === 4 /* SETTER */) {\n set = function(v) {\n desc.set.call(this, v);\n };\n }\n }\n ctx.access = get && set ? { get: get, set: set } : get ? { get: get } : { set: set };\n\n try {\n return dec(value, ctx);\n } finally {\n decoratorFinishedRef.v = true;\n }\n }\n\n function assertNotFinished(decoratorFinishedRef, fnName) {\n if (decoratorFinishedRef.v) {\n throw new Error(\"attempted to call \" + fnName + \" after decoration was finished\");\n }\n }\n\n function assertCallable(fn, hint) {\n if (typeof fn !== \"function\") {\n throw new TypeError(hint + \" must be a function\");\n }\n }\n\n function assertValidReturnValue(kind, value) {\n var type = typeof value;\n\n if (kind === 1 /* ACCESSOR */) {\n if (type !== \"object\" || value === null) {\n throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or void 0\");\n }\n if (value.get !== undefined) {\n assertCallable(value.get, \"accessor.get\");\n }\n if (value.set !== undefined) {\n assertCallable(value.set, \"accessor.set\");\n }\n if (value.init !== undefined) {\n assertCallable(value.init, \"accessor.init\");\n }\n } else if (type !== \"function\") {\n var hint;\n if (kind === 0 /* FIELD */) {\n hint = \"field\";\n } else if (kind === 10 /* CLASS */) {\n hint = \"class\";\n } else {\n hint = \"method\";\n }\n throw new TypeError(hint + \" decorators must return a function or void 0\");\n }\n }\n\n function applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, initializers, metadata) {\n var decs = decInfo[0];\n\n var desc, init, value;\n\n if (isPrivate) {\n if (kind === 0 /* FIELD */ || kind === 1 /* ACCESSOR */) {\n desc = { get: decInfo[3], set: decInfo[4] };\n } else if (kind === 3 /* GETTER */) {\n desc = { get: decInfo[3] };\n } else if (kind === 4 /* SETTER */) {\n desc = { set: decInfo[3] };\n } else {\n desc = { value: decInfo[3] };\n }\n } else if (kind !== 0 /* FIELD */) {\n desc = Object.getOwnPropertyDescriptor(base, name);\n }\n\n if (kind === 1 /* ACCESSOR */) {\n value = { get: desc.get, set: desc.set };\n } else if (kind === 2 /* METHOD */) {\n value = desc.value;\n } else if (kind === 3 /* GETTER */) {\n value = desc.get;\n } else if (kind === 4 /* SETTER */) {\n value = desc.set;\n }\n\n var newValue, get, set;\n\n if (typeof decs === \"function\") {\n newValue = memberDec(decs, name, desc, initializers, kind, isStatic, isPrivate, metadata, value);\n\n if (newValue !== void 0) {\n assertValidReturnValue(kind, newValue);\n\n if (kind === 0 /* FIELD */) {\n init = newValue;\n } else if (kind === 1 /* ACCESSOR */) {\n init = newValue.init;\n get = newValue.get || value.get;\n set = newValue.set || value.set;\n\n value = { get: get, set: set };\n } else {\n value = newValue;\n }\n }\n } else {\n for (var i = decs.length - 1; i >= 0; i--) {\n var dec = decs[i];\n\n newValue = memberDec(dec, name, desc, initializers, kind, isStatic, isPrivate, metadata, value);\n\n if (newValue !== void 0) {\n assertValidReturnValue(kind, newValue);\n var newInit;\n\n if (kind === 0 /* FIELD */) {\n newInit = newValue;\n } else if (kind === 1 /* ACCESSOR */) {\n newInit = newValue.init;\n get = newValue.get || value.get;\n set = newValue.set || value.set;\n\n value = { get: get, set: set };\n } else {\n value = newValue;\n }\n\n if (newInit !== void 0) {\n if (init === void 0) {\n init = newInit;\n } else if (typeof init === \"function\") {\n init = [init, newInit];\n } else {\n init.push(newInit);\n }\n }\n }\n }\n }\n\n if (kind === 0 /* FIELD */ || kind === 1 /* ACCESSOR */) {\n if (init === void 0) {\n // If the initializer was void 0, sub in a dummy initializer\n init = function(instance, init) {\n return init;\n };\n } else if (typeof init !== \"function\") {\n var ownInitializers = init;\n\n init = function(instance, init) {\n var value = init;\n\n for (var i = 0; i < ownInitializers.length; i++) value = ownInitializers[i].call(instance, value);\n\n return value;\n };\n } else {\n var originalInitializer = init;\n\n init = function(instance, init) {\n return originalInitializer.call(instance, init);\n };\n }\n\n ret.push(init);\n }\n\n if (kind !== 0 /* FIELD */) {\n if (kind === 1 /* ACCESSOR */) {\n desc.get = value.get;\n desc.set = value.set;\n } else if (kind === 2 /* METHOD */) {\n desc.value = value;\n } else if (kind === 3 /* GETTER */) {\n desc.get = value;\n } else if (kind === 4 /* SETTER */) {\n desc.set = value;\n }\n\n if (isPrivate) {\n if (kind === 1 /* ACCESSOR */) {\n ret.push(function(instance, args) {\n return value.get.call(instance, args);\n });\n ret.push(function(instance, args) {\n return value.set.call(instance, args);\n });\n } else if (kind === 2 /* METHOD */) {\n ret.push(value);\n } else {\n ret.push(function(instance, args) {\n return value.call(instance, args);\n });\n }\n } else {\n Object.defineProperty(base, name, desc);\n }\n }\n }\n\n function applyMemberDecs(Class, decInfos, metadata) {\n var ret = [];\n var protoInitializers;\n var staticInitializers;\n\n var existingProtoNonFields = new Map();\n var existingStaticNonFields = new Map();\n\n for (var i = 0; i < decInfos.length; i++) {\n var decInfo = decInfos[i];\n\n // skip computed property names\n if (!Array.isArray(decInfo)) continue;\n\n var kind = decInfo[1];\n var name = decInfo[2];\n var isPrivate = decInfo.length > 3;\n\n var isStatic = kind >= 5; /* STATIC */\n var base;\n var initializers;\n\n if (isStatic) {\n base = Class;\n kind = kind - 5 /* STATIC */;\n // initialize staticInitializers when we see a non-field static member\n staticInitializers = staticInitializers || [];\n initializers = staticInitializers;\n } else {\n base = Class.prototype;\n // initialize protoInitializers when we see a non-field member\n protoInitializers = protoInitializers || [];\n initializers = protoInitializers;\n }\n\n if (kind !== 0 /* FIELD */ && !isPrivate) {\n var existingNonFields = isStatic ? existingStaticNonFields : existingProtoNonFields;\n\n var existingKind = existingNonFields.get(name) || 0;\n\n if (existingKind === true || (existingKind === 3 /* GETTER */ && kind !== 4) /* SETTER */ || (existingKind === 4 /* SETTER */ && kind !== 3) /* GETTER */) {\n throw new Error(\n \"Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: \"\n + name\n );\n } else if (!existingKind && kind > 2 /* METHOD */) {\n existingNonFields.set(name, kind);\n } else {\n existingNonFields.set(name, true);\n }\n }\n\n applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, initializers, metadata);\n }\n\n pushInitializers(ret, protoInitializers);\n pushInitializers(ret, staticInitializers);\n return ret;\n }\n\n function pushInitializers(ret, initializers) {\n if (initializers) {\n ret.push(function(instance) {\n for (var i = 0; i < initializers.length; i++) initializers[i].call(instance);\n return instance;\n });\n }\n }\n\n function applyClassDecs(targetClass, classDecs, metadata) {\n if (classDecs.length > 0) {\n var initializers = [];\n var newClass = targetClass;\n var name = targetClass.name;\n\n for (var i = classDecs.length - 1; i >= 0; i--) {\n var decoratorFinishedRef = { v: false };\n\n try {\n var nextNewClass = classDecs[i](newClass, { kind: \"class\", name: name, addInitializer: createAddInitializerMethod(initializers, decoratorFinishedRef), metadata });\n } finally {\n decoratorFinishedRef.v = true;\n }\n\n if (nextNewClass !== undefined) {\n assertValidReturnValue(10, /* CLASS */ nextNewClass);\n newClass = nextNewClass;\n }\n }\n\n return [defineMetadata(newClass, metadata), function() {\n for (var i = 0; i < initializers.length; i++) initializers[i].call(newClass);\n }];\n }\n // The transformer will not emit assignment when there are no class decorators,\n // so we don't have to return an empty array here.\n }\n\n function defineMetadata(Class, metadata) {\n return Object.defineProperty(Class, Symbol.metadata || Symbol.for(\"Symbol.metadata\"), { configurable: true, enumerable: true, value: metadata });\n }\n\n /**\n Basic usage:\n\n applyDecs(\n Class,\n [\n // member decorators\n [\n dec, // dec or array of decs\n 0, // kind of value being decorated\n 'prop', // name of public prop on class containing the value being decorated,\n '#p', // the name of the private property (if is private, void 0 otherwise),\n ]\n ],\n [\n // class decorators\n dec1, dec2\n ]\n )\n ```\n\n Fully transpiled example:\n\n ```js\n @dec\n class Class {\n @dec\n a = 123;\n\n @dec\n #a = 123;\n\n @dec\n @dec2\n accessor b = 123;\n\n @dec\n accessor #b = 123;\n\n @dec\n c() { console.log('c'); }\n\n @dec\n #c() { console.log('privC'); }\n\n @dec\n get d() { console.log('d'); }\n\n @dec\n get #d() { console.log('privD'); }\n\n @dec\n set e(v) { console.log('e'); }\n\n @dec\n set #e(v) { console.log('privE'); }\n }\n\n\n // becomes\n let initializeInstance;\n let initializeClass;\n\n let initA;\n let initPrivA;\n\n let initB;\n let initPrivB, getPrivB, setPrivB;\n\n let privC;\n let privD;\n let privE;\n\n let Class;\n class _Class {\n static {\n let ret = applyDecs(\n this,\n [\n [dec, 0, 'a'],\n [dec, 0, 'a', (i) => i.#a, (i, v) => i.#a = v],\n [[dec, dec2], 1, 'b'],\n [dec, 1, 'b', (i) => i.#privBData, (i, v) => i.#privBData = v],\n [dec, 2, 'c'],\n [dec, 2, 'c', () => console.log('privC')],\n [dec, 3, 'd'],\n [dec, 3, 'd', () => console.log('privD')],\n [dec, 4, 'e'],\n [dec, 4, 'e', () => console.log('privE')],\n ],\n [\n dec\n ]\n )\n\n initA = ret[0];\n\n initPrivA = ret[1];\n\n initB = ret[2];\n\n initPrivB = ret[3];\n getPrivB = ret[4];\n setPrivB = ret[5];\n\n privC = ret[6];\n\n privD = ret[7];\n\n privE = ret[8];\n\n initializeInstance = ret[9];\n\n Class = ret[10]\n\n initializeClass = ret[11];\n }\n\n a = (initializeInstance(this), initA(this, 123));\n\n #a = initPrivA(this, 123);\n\n #bData = initB(this, 123);\n get b() { return this.#bData }\n set b(v) { this.#bData = v }\n\n #privBData = initPrivB(this, 123);\n get #b() { return getPrivB(this); }\n set #b(v) { setPrivB(this, v); }\n\n c() { console.log('c'); }\n\n #c(...args) { return privC(this, ...args) }\n\n get d() { console.log('d'); }\n\n get #d() { return privD(this); }\n\n set e(v) { console.log('e'); }\n\n set #e(v) { privE(this, v); }\n }\n\n initializeClass(Class);\n */\n\n _apply_decs_2203_r = function(targetClass, memberDecs, classDecs, parentClass) {\n if (parentClass !== void 0) {\n var parentMetadata = parentClass[Symbol.metadata || Symbol.for(\"Symbol.metadata\")];\n }\n var metadata = Object.create(parentMetadata === void 0 ? null : parentMetadata);\n var e = applyMemberDecs(targetClass, memberDecs, metadata);\n if (!classDecs.length) defineMetadata(targetClass, metadata);\n return {\n e: e,\n // Lazily apply class decorations so that member init locals can be properly bound.\n get c() {\n return applyClassDecs(targetClass, classDecs, metadata);\n }\n };\n };\n\n return _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass);\n}\n\nexport { _apply_decs_2203_r as _ };\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });\n } else obj[key] = value;\n\n return obj;\n}\nexport { _define_property as _ };\n","function _identity(x) {\n return x;\n}\n\nexport { _identity as _ };\n","import { LogIn } from \"./elements/account/Login\";\nimport { Register } from \"./elements/account/Register\";\nimport \"./elements/cart/AddToCart\";\nimport { ContinueShopping } from \"./elements/cart/CountinueShopping\";\nimport { RemoveFromCart } from \"./elements/cart/RemoveFromCart\";\nimport { ApplyGiftCard } from \"./elements/checkout/ApplyGiftCard\";\nimport \"./elements/checkout/BillingAddressCheckbox\";\nimport \"./elements/checkout/Checkout\";\nimport { implementTablist } from \"./elements/checkout/CheckoutTabs\";\nimport { CompanyCheckbox } from \"./elements/checkout/CompanyNameCheckbox\";\nimport { ContinueToPayment } from \"./elements/checkout/ContinueToPayment\";\nimport { DeliveryOptionPicker } from \"./elements/checkout/DeliveryOptionPicker\";\nimport { EditCheckoutStep } from \"./elements/checkout/EditCheckoutStep\";\nimport { GiftCardCheckbox } from \"./elements/checkout/GiftCardCheckbox\";\nimport { ReviewOrderButton } from \"./elements/checkout/ReviewOrderButton\";\nimport { ContinueAsGuest } from \"./elements/ContinueAsGuest\";\nimport { ApplyCoupon } from \"./elements/coupons/ApplyCoupon\";\nimport { CouponCheckbox } from \"./elements/coupons/CouponCheckbox\";\nimport { RemoveCoupon } from \"./elements/coupons/RemoveCoupon\";\nimport { NewsletterSubscription } from \"./elements/NewsletterSubscription\";\nimport \"./elements/Quantity\";\nimport { ReadMoreButton } from \"./elements/ReadMoreButton\";\nimport { RedirectButton } from \"./elements/RedirectButton\";\nimport { SignInCheckout } from \"./elements/SignInCheckout\";\nimport \"./elements/SnapTabs\";\nimport { SortDropdown } from \"./elements/SortDropdown\";\nimport { ViewMoreProducts } from \"./elements/ViewMoreProducts\";\nimport { collectionNavigation, headerCustomBehaviour, implementArrowNavigation_gen, myFunction, singleProductPhotosMobileBehaviour, toggleMobileHeader, updateDisplay } from \"./utils\";\n\ncustomElements.define(\"gct-apply-coupon\", ApplyCoupon);\ncustomElements.define(\"gct-apply-gift-card\", ApplyGiftCard);\ncustomElements.define(\"gct-company-name-checkbox\", CompanyCheckbox);\ncustomElements.define(\"gct-continue-as-guest\", ContinueAsGuest);\ncustomElements.define(\"gct-continue-shopping\", ContinueShopping);\ncustomElements.define(\"gct-continue-to-payment\", ContinueToPayment);\ncustomElements.define(\"gct-coupon-checkbox\", CouponCheckbox);\ncustomElements.define(\"gct-delivery-option-picker\", DeliveryOptionPicker);\ncustomElements.define(\"gct-edit-checkout-step\", EditCheckoutStep);\ncustomElements.define(\"gct-gift-card-checkbox\", GiftCardCheckbox);\ncustomElements.define(\"gct-log-in\", LogIn);\ncustomElements.define(\"gct-newsletter-subscription\", NewsletterSubscription);\ncustomElements.define(\"gct-read-more\", ReadMoreButton);\ncustomElements.define(\"gct-redirect-button\", RedirectButton);\ncustomElements.define(\"gct-register\", Register);\ncustomElements.define(\"gct-remove-coupon\", RemoveCoupon);\ncustomElements.define(\"gct-remove-from-cart\", RemoveFromCart);\ncustomElements.define(\"gct-review-order\", ReviewOrderButton);\ncustomElements.define(\"gct-sign-in-checkout\", SignInCheckout);\ncustomElements.define(\"gct-sort-dropdown\", SortDropdown);\ncustomElements.define(\"gct-view-more\", ViewMoreProducts);\n\nwindow.addEventListener(\"load\", () => {\n\twindow.scrollTo(0, 0);\n\n\tconst tablists = document.querySelectorAll(\"[role=tablist]\");\n\ttablists.forEach(implementTablist);\n\n\theaderCustomBehaviour();\n\ttoggleMobileHeader()\n\n\tupdateDisplay();\n\n\tsingleProductPhotosMobileBehaviour();\n\n\tcollectionNavigation();\n\n\timplementArrowNavigation_gen(\"recommend-container\", \".gct-recommend\", \"carousel-arrow-prev-recommend\", \"carousel-arrow-next-recommend\");\n\timplementArrowNavigation_gen(\"christmas-container\", \".gct-recommend\", \"carousel-arrow-prev-christmas\", \"carousel-arrow-next-christmas\");\n\n\tmyFunction(\"myDIV\", \"try-it-button\");\n\tmyFunction(\"myDIV2\", \"try-it-button2\");\n\tmyFunction(\"myDIV3\", \"try-it-button3\");\n\tmyFunction(\"myDIV4\", \"try-it-button4\");\n\tmyFunction(\"myDIV5\", \"try-it-button5\");\n\tmyFunction(\"myDIV6\", \"try-it-button-checkout\");\n\n\tconst originalInnerHTML = Object.getOwnPropertyDescriptor(Element.prototype, 'innerHTML')!.set!;\n\tObject.defineProperty(document.body, 'innerHTML', {\n\t\tset(value) {\n\t\t\toriginalInnerHTML.call(this, value);\n\t\t\tupdateDisplay();\n\t\t\twindow.scrollTo(0, 0);\n\t\t},\n\t});\n});\n"],"names":["Either","f","error","options","promise","self","either","left","a","Object","LeftProto","right","RightProto","input","TypeId","Symbol","CommonProto","_","Promise","onLeft","undefined","makeStylesheetLink","ContinueAsGuest","HTMLElement","updateDisplay","onClick","authSection","document","checkoutSection","localStorage","checkoutAsGuest","CustomElement","nodes","customElement","name","value","context","customElements","bound","noticeFailure","noticeSuccess","NewsletterSubscription","matchEmailFormat","email","consentToTerms","data","URLSearchParams","res","fetch","json","notices","DOMParser","noticeText","TypeError","_CustomElement","Quantity","Number","String","attr","_oldValue","newValue","quantity","min","Infinity","max","cartItemKey","endpoint","nonce","html","newDocument","console","increment","decrement","disabled","ReadMoreButton","article","text","maxLength","stripHtmlTags","plainText","truncatedText","lastSpaceIndex","applyTruncationToHtml","truncatedPlainText","result","currentTextLength","tagStack","insideTag","i","char","RedirectButton","window","implementSearchBar","searchButton","searchButtonMobile","closeButton","searchBar","header","isFrontPage","overlay","mobileHeader","searchContent","inputMobile","abortController","onChange","event","mobile","searchValue","searchResult","AbortController","signal","response","productPreview","numOfProdcuts","previewArray","Array","el","clearButton","clearButtonMobile","onClickDesktop","onClickMobile","searchResultMobile","SignInCheckout","_HTMLElement","SnapTabs","motionAllowed","ScrollTimeline","item","setTimeout","clearTimeout","navItem","_this_querySelector","sectionId","sectionElement","scrollPosition","SortDropdown","onSortChange","selectedValue","currentUrl","URL","doc","newContent","oldContent","viewMoreButton","parseInt","_viewMoreButton_shadowRoot","button","ViewMoreProducts","onloadMoreProducts","currentPage","maxProductsPerPage","_sortDropdown_shadowRoot","urlString","searchParamIndex","baseUrl","searchParams","sortDropdown","dropdownValue","newProducts","newProductsArray","product","LogIn","password","Register","registerUrl","NetworkError","showMinicart","AddToCart","FormData","filter","fragment","children","minicart","hideMinicart","remove","ContinueShopping","close","RemoveFromCart","genId","ApplyGiftCard","id","giftCardCode","BillingCheckbox","setTargetVisibility","oldValue","checked","target","visible","targetElement","getLocalizedFields","countryCode","locale","JSON","wc_address_i18n_params","fields","Map","overrides","key","field","getStatesFor","countries","wc_country_select_params","states","Checkout","SubmitEvent","paymentMethods","current","p","element","args","_document_getElementById","_document_getElementById1","_document_getElementById2","_document_getElementById3","_document_getElementById4","_document_getElementById5","Error","shippingCountry","shippingState","shippingPostcode","shippingCity","shippingAddress","shippingAddress2","billingCountry","billingState","billingPostcode","billingCity","billingAddress","billingAddress2","billingCheckbox","_document_getElementById6","_document_getElementById7","_document_getElementById8","_document_getElementById9","_document_getElementById10","_document_getElementById11","hasFullAddress","pickup","formData","paymentMethod","requestData","wc_checkout_params","spinner","responseData","fragments","parser","parsedFragment","scriptElements","e","jQuery","container","scriptElement","url","newScriptElement","_window_navigator","paymentBy","_document_getElementById12","_e_textContent","auto","$formCard","hf","onload","eval","prefix","setEachInputValue","setupApplePayButtonObserver","keepSpinner","resolve","childForm","paymentTokenElement","childFormData","paymentData","responseText","parseResponseText","message","document1","textContent","decodeURI","addressTypePrefix","root","stateField","actualStateType","prevStateInput","prevStateContainer","nextStateInput","makeStateInput","sortChildren","b","_a_querySelector","_b_querySelector","_fields_get","_fields_get1","aname","bname","aprio","bprio","diff","label","compareFn","childNodes","fixedTextCandidate","overrideApplePayButtonClicked","originalOnApplePayButtonClicked","_key","checkApplePayButton","observer","MutationObserver","select","udpdateReview","implementTablist","firstTab","lastTab","tabs","tabpanels","tab","tabpanel","onKeyDown","setSelectedTab","setSelectedToPreviousTab","setSelectedToNextTab","currentTab","setFocus","index","CompanyCheckbox","validateDeliveryForm","ContinueToPayment","deliveryTab","paymentTab","paymentFormLink","deliveryFormLink","checkout","LOCAL_PICKUP_FIELD_NAMES","DeliveryOptionPicker","shippingOption","deliveryQuestion","shopInfo","checkoutDeliveryElement","deliveryInputs","EditCheckoutStep","destTab","reviewTab","activeTab","GiftCardCheckbox","giftCard","validateBillingForm","ReviewOrderButton","reviewOrderTab","reviewFormLink","ApplyCoupon","couponCode","CouponCheckbox","applyCoupon","RemoveCoupon","cause","handler","prop","Reflect","init","globalThis","Proxy","_jsx","tagName","props","style","attributes","jsx","jsxs","jsxDEV","EMPTY_OBJECT","makeNotice","param","className","timeoutMs","reject","_resolve","_reject","getComputedStyle","cleanup","onAbort","onTimeout","timeout","t","n","WeakMap","r","o","l","Math","s","parseFloat","c","Element","u","h","RangeError","g","d","m","v","S","href","link","EMAIL_REGEX","checkoutBillingElement","billingInputs","isBillingAddressSameAsDelivery","reviewEmail","reviewDelivery","reviewDeliveryOption","reviewBilling","reviewPayment","inputDisplayValue","paymentOptionElemnt","paymentLabel","validateRegex","regex","validateNonEmpty","HTMLSelectElement","option","emailInput","isLocalPickup","isFormValid","valid","implementArrowNavigation","prevButton","nextButton","handleCarouselMoveNext","carousel","slide","slideWidth","maxScrollLeft","handleCarouselMovePrev","implementArrowNavigation_gen","carouselId","slideId","prveButtonId","nextButtonId","collectionNavigation","scrollControll","myFunction","containerID","buttonId","x","implementMiniCart","basketButton","isCart","implementSingleProductOverlay","implementVariationSelection","nextId","headerCustomBehaviour","singleProductPhotosMobileBehaviour","isDragging","startX","scrollLeft","walk","toggleMobileHeader","burgerButton","mobileHeaderContainer","showHeaderButtons","shopContent","shopBtn","glasswareContent","glassawreBtn","decanterContent","decanterBtn","accesoriesContent","accesoriesBtn","collectionsContent","collectionsBtn","giftsContent","giftsBtn","personalisationContent","personalisationBtn","businessContent","businessBtn","prevHeaderBtns","prevShopBtns","btn","prevBtn","prevShopBtn","openButton","productVariationsElement","overlayImageElement","largeImageElement","carouselImageElement","productSkuElement","productPriceElement","addToCartElement","defaultSku","defaultPriceHtml","defaultOverlayImageSrc","defaultLargeImageSrc","defaultLargeImageSrcset","defaultLargeImageSizes","defaultCarouselImageSrc","productVariations","attributeSelectElements","getAttributeSet","attributeSelect","findVariation","attributeSet","ka","productVariation","kb","k","onAttributeSelect","tablists","originalInnerHTML"],"mappings":"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K,GAAGU;gBAC1BT,qBAAqB,GAAG,GAAGU;YAC5B;QACD;IACD;IAEAE,wBAAwB,OAAO,CAAC,CAACxP,IAAMA,EAAE,gBAAgB,CAAC,UAAUiQ;IACpEA;AACD;;;;;;;;;;AC/oBA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;;AAEpB,qCAAqC;;AAErC;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,qBAAqB,UAAU,WAAW,IAAI;;AAElF;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,yBAAyB;AACzB,cAAc;AACd,yBAAyB;AACzB,cAAc;AACd,yBAAyB;AACzB,cAAc;AACd,yBAAyB;AACzB;AACA,UAAU;AACV;AACA;;AAEA;AACA,sBAAsB;AACtB,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA,8BAA8B;AAC9B,kBAAkB;AAClB;AACA;AACA;AACA,UAAU;AACV,0CAA0C,QAAQ;AAClD;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;;AAEA,oCAAoC,4BAA4B;;AAEhE;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA,qBAAqB;AACrB;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,wBAAwB,qBAAqB;AAC7C;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,sCAAsC;AACtC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,yBAAyB;AACzD;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,+CAA+C,QAAQ;AACvD,6CAA6C;;AAE7C;AACA,gEAAgE,qHAAqH;AACrL,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,yBAAyB;AACzD,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA,gGAAgG,uDAAuD;AACvJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AAC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"}