{
  "version": 3,
  "sources": ["/cdn/shop/t/15/assets/everdon-print-picker.js?everdon_revision=12"],
  "sourcesContent": ["/* EVERDON REVISION 2026-10-14-CANVAS-COPY: no varnish or pigment-ink claims for canvas. */\r\n/* All products: format \u2192 frame style (canvas) \u2192 matching size \u2192 colour. */\r\n/* Conditional Everdon controls. Actual prices and cart IDs come from Shopify variants. */\r\nif (!customElements.get('everdon-print-picker')) {\r\n  customElements.define('everdon-print-picker', class extends HTMLElement {\r\n    static states = new Map();\r\n    connectedCallback() {\r\n      this.initTimer = setTimeout(() => this.init(), 0);\r\n    }\r\n    disconnectedCallback() {\r\n      clearTimeout(this.initTimer);\r\n      this.removeEventListener('click', this.onClick);\r\n      this.removeEventListener('keydown', this.onKey);\r\n      this.detailsObserver?.disconnect();\r\n    }\r\n    static describe(variant, names) {\r\n      // Shopify merchants can put print size, colour and frame style in different\r\n      // option fields or in a combined Format value. Examine all fields.\r\n      const title = String(variant.title || (variant.options || []).join(' / '));\r\n      const parts = (variant.options || []).map(x => String(x || ''));\r\n      const combined = [title, ...parts].join(' / ');\r\n      const lower = combined.toLowerCase();\r\n      let category, presentation;\r\n      if (/\\boriginal(?: painting| artwork)?\\b/i.test(combined) && !/print/i.test(combined)) {\r\n        category = 'Original Painting'; presentation = '';\r\n      } else if (/\\bpaper\\b|\\bgicl[\u00E9e]e\\b|enhanced matt/i.test(combined)) {\r\n        category = 'Paper';\r\n        presentation = /\\bunframed\\b|without frame/i.test(combined) ? 'Unframed'\r\n          : /\\bframed\\b|with frame|\\bframe(d)? paper/i.test(combined) ? 'Framed' : 'Unframed';\r\n      } else if (/\\bcanvas\\b|floating|classic|floater/i.test(combined)) {\r\n        category = 'Canvas';\r\n        presentation = /\\bunframed\\b|unstretched/i.test(combined) && !/floating|classic|floater|framed canvas/i.test(combined)\r\n          ? 'Unframed stretched' : 'Framed';\r\n      } else return null;\r\n\r\n      // A size may be under 'Size', 'Print size', or embedded in 'Format'.\r\n      const namedSize = names.map((name, index) => /size|dimension/i.test(name) ? parts[index] : '')\r\n        .filter(Boolean).join(' / ');\r\n      const sizeSource = namedSize || combined;\r\n      const sizeMatch = String(sizeSource).match(/(\\d+(?:\\.\\d+)?)\\s*(?:x|\u00D7|by)\\s*(\\d+(?:\\.\\d+)?)/i)\r\n        || combined.match(/(\\d+(?:\\.\\d+)?)\\s*(?:x|\u00D7|by)\\s*(\\d+(?:\\.\\d+)?)/i);\r\n      if (!sizeMatch && category !== 'Original Painting') return null;\r\n      const dims = sizeMatch ? [Number(sizeMatch[1]), Number(sizeMatch[2])] : [];\r\n      const size = sizeMatch ? `${sizeMatch[1]} \u00D7 ${sizeMatch[2]} inch` : 'Original painting';\r\n\r\n      const colourIndex = names.findIndex(n => /colou?r|finish/i.test(n));\r\n      let colour = String(colourIndex >= 0 ? parts[colourIndex] : '').trim();\r\n      const recognized = combined.match(/\\b(Natural|Black|White|Brown|Dark Grey|Light Grey|Antique Gold|Antique Silver|Gold|Silver)\\b/i);\r\n      if (!colour || /^(not applicable|none|n\\/a|unframed|default title)$/i.test(colour)) {\r\n        colour = recognized?.[1] || '';\r\n      }\r\n      if (colour) colour = colour.replace(/\\b\\w/g, x => x.toUpperCase());\r\n      if (category !== 'Canvas') colour = '';\r\n      // Never infer a Classic/Floating style from the dimensions when a style is explicit.\r\n      const frameStyle = category === 'Canvas' && presentation === 'Framed'\r\n        ? (/floating|floater|38\\s*mm/i.test(combined) ? 'Floating'\r\n          : /classic|19\\s*mm/i.test(combined) ? 'Classic'\r\n          : Math.max(...dims) > 36 ? 'Floating' : 'Classic') : '';\r\n      return { ...variant, category, presentation, size, dims, colour, frameStyle };\r\n    }\r\n    init() {\r\n      this.picker = this.closest('variant-selects');\r\n      this.root = this.closest('product-info');\r\n      this.native = [...this.picker.querySelectorAll('[data-everdon-native] select')];\r\n      if (!this.native.length) return;\r\n      const names = this.native.map(s => s.dataset.name.toLowerCase().trim());\r\n      try {\r\n        this.money = JSON.parse(\r\n          this.querySelector('[data-everdon-money]')?.textContent || '{}'\r\n        );\r\n        this.variants = JSON.parse(\r\n          this.querySelector('[data-everdon-variants]').textContent\r\n        ).map(v => this.constructor.describe(v, names));\r\n      } catch (_) {\r\n        return;\r\n      }\r\n      const unrecognised = this.variants.filter(v => !v);\r\n      if (unrecognised.length) console.warn('Everdon: unrecognised product variants; please check Shopify option names:', unrecognised.length);\r\n      this.variants = this.variants.filter(Boolean);\r\n      this.variants = this.variants.filter(v => v.category !== 'Canvas' || v.presentation === 'Framed');\r\n      if (!this.variants.length) return;\r\n      this.formatFirst = true;\r\n      this.key = `three-format-v4:${this.picker.id}:${this.picker.dataset.productId}`;\r\n      const supplied = this.variants.find(\r\n        v => v.id === Number(this.dataset.selectedId)\r\n      );\r\n      const original = this.variants.find(\r\n        v => v.category === 'Original Painting'\r\n      );\r\n      this.state = this.constructor.states.get(this.key);\r\n      if (!this.state) {\r\n        const explicit = this.variants.find(\r\n          v => v.id === Number(this.dataset.explicitVariant)\r\n        );\r\n        this.state = {\r\n          mode: original ? 'Original Painting' : '',\r\n          category: original ? 'Original Painting' : '',\r\n          size: '',\r\n          presentation: '',\r\n          colour: '',\r\n          frameStyle: '',\r\n          variantId: original?.id || null,\r\n          resolving: false\r\n        };\r\n        // A specific shared variant link can restore that exact completed selection.\r\n        if (explicit) this.state = this.stateFromVariant(explicit);\r\n        this.constructor.states.set(this.key, this.state);\r\n      }\r\n      this.current = this.variants.find(\r\n        v => v.id === this.state.variantId\r\n      ) || supplied;\r\n      if (supplied?.id === this.state.variantId) {\r\n        this.state.resolving = false;\r\n      }\r\n      this.onClick = event => {\r\n        const button = event.target.closest('[data-choice]');\r\n        if (!button || button.disabled || !this.contains(button)) return;\r\n        event.preventDefault();\r\n        this.choose(button.dataset.group, button.dataset.choice);\r\n      };\r\n      this.onKey = event => {\r\n        const button = event.target.closest('[data-choice]');\r\n        if (!button || !['ArrowLeft','ArrowRight','ArrowUp','ArrowDown','Home','End'].includes(event.key)) return;\r\n        const buttons = [...button.parentElement.querySelectorAll('[data-choice]:not(:disabled)')];\r\n        let i = buttons.indexOf(button);\r\n        if (event.key === 'Home') i = 0;\r\n        else if (event.key === 'End') i = buttons.length - 1;\r\n        else i = (\r\n          i + (['ArrowLeft','ArrowUp'].includes(event.key) ? -1 : 1) + buttons.length\r\n        ) % buttons.length;\r\n        event.preventDefault();\r\n        buttons[i].focus();\r\n        buttons[i].click();\r\n      };\r\n      this.addEventListener('click', this.onClick);\r\n      this.addEventListener('keydown', this.onKey);\r\n      this.picker.querySelector('[data-everdon-native]').hidden = true;\r\n      this.querySelector('[data-everdon-ui]').hidden = false;\r\n      if (this.state.variantId) {\r\n        this.writeVariantPrice(this.current);\r\n      }\r\n      this.render();\r\n      this.observeDetails();\r\n      // Default original is also the real Shopify selection, including if it is sold out.\r\n      if (this.state.variantId && supplied?.id !== this.state.variantId) {\r\n        this.commit(this.current);\r\n      } else {\r\n        this.restoreFocus();\r\n      }\r\n    }\r\n    stateFromVariant(v) {\r\n      return {\r\n        mode: v.category,\r\n        category: v.category,\r\n        size: v.size,\r\n        presentation: v.presentation,\r\n        colour: v.colour,\r\n        frameStyle: v.frameStyle,\r\n        variantId: v.id,\r\n        resolving: false\r\n      };\r\n    }\r\n    unique(items) {\r\n      return [...new Set(items)];\r\n    }\r\n    defaultFrame(candidates) {\r\n      const preferred = Math.max(...(candidates[0]?.dims || [])) > 36 ? 'Floating' : 'Classic';\r\n      return candidates.some(v => v.frameStyle === preferred)\r\n        ? preferred : candidates[0]?.frameStyle || '';\r\n    }\r\n    selectPrint() {\r\n      const s = this.state;\r\n      if (!s.category || !s.size || (s.category === 'Paper' && !s.presentation) ||\r\n          (s.category === 'Canvas' && (!s.frameStyle || !s.colour))) {\r\n        this.render(); this.restoreFocus(); return;\r\n      }\r\n      let candidates = this.variants.filter(v => v.category === s.category && v.size === s.size);\r\n      if (s.category === 'Paper') candidates = candidates.filter(v => v.presentation === s.presentation);\r\n      if (s.category === 'Canvas') candidates = candidates.filter(v => v.frameStyle === s.frameStyle && v.colour === s.colour);\r\n      if (candidates[0]) this.commit(candidates[0]);\r\n      else { this.render(); this.restoreFocus(); }\r\n    }\r\n    choose(group, value) {\r\n      this.root?.abortController?.abort();\r\n      const s = this.state;\r\n      s.error = false;\r\n      s.focus = { group, value };\r\n      s.resolving = false;\r\n      if (group === 'category') {\r\n        Object.assign(s, { mode: value, category: value, presentation: value === 'Canvas' ? 'Framed' : '',\r\n          frameStyle: '', size: '', colour: '', variantId: null });\r\n        if (value === 'Original Painting') {\r\n          const original = this.variants.find(v => v.category === 'Original Painting');\r\n          if (original) { this.commit(original); return; }\r\n        }\r\n      } else if (group === 'presentation') {\r\n        Object.assign(s, { presentation: value, size: '', variantId: null });\r\n      } else if (group === 'frameStyle') {\r\n        Object.assign(s, { frameStyle: value, colour: '', size: '', variantId: null });\r\n      } else if (group === 'colour') {\r\n        Object.assign(s, { colour: value, variantId: null });\r\n        this.selectPrint(); return;\r\n      } else if (group === 'size') {\r\n        s.size = value;\r\n        s.variantId = null;\r\n        if (s.category === 'Canvas') s.colour = '';\r\n        if (s.category === 'Paper') { this.selectPrint(); return; }\r\n      }\r\n      this.render(); this.restoreFocus();\r\n    }\r\n    observeDetails() {\r\n      if (!this.root) return;\r\n      this.detailsSlot = document.createElement('div');\r\n      this.detailsSlot.className = 'everdon-product-details';\r\n      this.detailsSlot.dataset.everdonDetailsSlot = '';\r\n      this.append(this.detailsSlot);\r\n      this.moveDetails();\r\n      this.detailsObserver = new MutationObserver(() => this.moveDetails());\r\n      this.detailsObserver.observe(this.root, { childList: true, subtree: true });\r\n    }\r\n    moveDetails() {\r\n      if (!this.detailsSlot) return;\r\n      const rows = [...this.root.querySelectorAll('details')].filter(row => {\r\n        if (this.contains(row)) return false;\r\n        const summary = row.querySelector('summary');\r\n        const title = summary?.textContent.replace(/\\s+/g, ' ').trim() || '';\r\n        return /^(custom orders?|hanging(?:\\s*(?:&|and)\\s*(?:artwork\\s*)?care)?|(?:artwork\\s*)?care)$/i.test(title);\r\n      });\r\n      if (!rows.length) return;\r\n      this.detailsObserver?.disconnect();\r\n      rows.forEach(row => {\r\n        const title = row.querySelector('summary').textContent.replace(/\\s+/g, ' ').trim().toLowerCase();\r\n        // Shopify may re-render the original block: replace rather than duplicate it.\r\n        [...this.detailsSlot.querySelectorAll('details')].forEach(old => {\r\n          if (old.querySelector('summary')?.textContent.replace(/\\s+/g, ' ').trim().toLowerCase() === title) old.remove();\r\n        });\r\n        const accordion = row.closest('.accordion');\r\n        const movable = accordion && accordion.querySelectorAll('details').length === 1 ? accordion : row;\r\n        this.detailsSlot.append(movable);\r\n      });\r\n      this.detailsObserver?.observe(this.root, { childList: true, subtree: true });\r\n    }\r\n    commit(v) {\r\n      if (!v) return;\r\n      this.current = v;\r\n      this.state.variantId = v.id;\r\n      this.state.colour = v.colour;\r\n      this.state.presentation = v.presentation;\r\n      this.state.frameStyle = v.frameStyle;\r\n      this.state.resolving = true;\r\n      let changed = 0;\r\n      this.native.forEach((select, i) => {\r\n        if (select.value !== v.options[i]) changed = i;\r\n        select.value = v.options[i];\r\n        [...select.options].forEach(option =>\r\n          option.toggleAttribute('selected', option.value === select.value)\r\n        );\r\n      });\r\n      this.writeVariantPrice(v);\r\n      this.render();\r\n      this.restoreFocus();\r\n      // Request this exact variant directly; do not depend on global.js's change/pub-sub bridge.\r\n      const root = this.root;\r\n      if (!root?.renderProductInfo || !root?.handleUpdateProductInfo) {\r\n        this.failVariantUpdate();\r\n        return;\r\n      }\r\n      try {\r\n        // Keep product:select integrations informed, without triggering a duplicate native refresh.\r\n        this.picker.dispatchProductSelectEvent?.();\r\n      } catch (error) {\r\n        console.warn('Product selection integration failed', error);\r\n      }\r\n      const request = new URL(root.dataset.url, window.location.origin);\r\n      request.searchParams.delete('option_values');\r\n      request.searchParams.set('variant', String(v.id));\r\n      request.searchParams.set('section_id', root.sectionId || root.dataset.section);\r\n      const update = root.handleUpdateProductInfo(root.dataset.url);\r\n      root.renderProductInfo({\r\n        requestUrl: request.toString(),\r\n        targetId: this.native[changed].id,\r\n        callback: html => {\r\n          if (this.state.variantId !== v.id) return;\r\n          update(html);\r\n        }\r\n      });\r\n    }\r\n    // Reconcile in place: selecting an option never removes an existing focused control.\r\n    syncChildren(target, source) {\r\n      const desired = [...source.childNodes];\r\n      desired.forEach((next, i) => {\r\n        const old = target.childNodes[i];\r\n        if (!old) {\r\n          target.append(next);\r\n          return;\r\n        }\r\n        if (\r\n          old.nodeType !== next.nodeType ||\r\n          old.nodeName !== next.nodeName\r\n        ) {\r\n          old.replaceWith(next);\r\n          return;\r\n        }\r\n        if (next.nodeType === 3) {\r\n          if (old.nodeValue !== next.nodeValue) {\r\n            old.nodeValue = next.nodeValue;\r\n          }\r\n          return;\r\n        }\r\n        [...old.attributes].forEach(a => {\r\n          if (!next.hasAttribute(a.name)) old.removeAttribute(a.name);\r\n        });\r\n        [...next.attributes].forEach(a => {\r\n          if (old.getAttribute(a.name) !== a.value) {\r\n            old.setAttribute(a.name, a.value);\r\n          }\r\n        });\r\n        this.syncChildren(old, next);\r\n      });\r\n      while (target.childNodes.length > desired.length) {\r\n        target.lastChild.remove();\r\n      }\r\n    }\r\n    refreshFromServer(source) {\r\n      const native = source?.querySelector('[data-everdon-native]');\r\n      const selected = source?.querySelector('[data-selected-variant]');\r\n      if (!native) return false;\r\n      // Shopify availability data changes; the visible controls and their focus stay in place.\r\n      this.picker.querySelector('[data-everdon-native]').innerHTML = native.innerHTML;\r\n      this.native = [\r\n        ...this.picker.querySelectorAll('[data-everdon-native] select')\r\n      ];\r\n      const currentSelected = this.picker.querySelector('[data-selected-variant]');\r\n      if (selected && currentSelected) {\r\n        currentSelected.textContent = selected.textContent;\r\n      }\r\n      return true;\r\n    }\r\n    finishVariantUpdate(variant) {\r\n      if (variant?.id !== this.state.variantId) return;\r\n      this.state.resolving = false;\r\n      this.state.error = false;\r\n      const status = this.querySelector('.everdon-selection-status');\r\n      if (status) status.textContent = '';\r\n      this.applyPurchaseState();\r\n    }\r\n    failVariantUpdate() {\r\n      if (!this.state.resolving) return;\r\n      this.state.resolving = false;\r\n      this.state.error = true;\r\n      this.render();\r\n    }\r\n    get priceReady() {\r\n      return !!this.state?.variantId &&\r\n        this.state.priceReadyId === this.state.variantId;\r\n    }\r\n    writeVariantPrice(variant) {\r\n      if (!this.root || !variant) return false;\r\n      const money = this.money?.[String(variant.id)];\r\n      if (!money) return false;\r\n      let written = false;\r\n      const sale = Number(variant.compare_at_price || 0) > Number(variant.price);\r\n      const setText = (element, text) => {\r\n        if (element && element.textContent.trim() !== text) {\r\n          element.textContent = text;\r\n        }\r\n      };\r\n      this.root.querySelectorAll('.everdon-price-block [id^=\"price-\"]').forEach(container => {\r\n        const price = container.querySelector('.price');\r\n        if (!price) return;\r\n        const regular = price.querySelector(\r\n          '.price__regular .price-item--regular'\r\n        );\r\n        const saleAmount = price.querySelector(\r\n          '.price__sale .price-item--sale'\r\n        );\r\n        if (!regular || (sale && !saleAmount)) return;\r\n        setText(regular, money.price);\r\n        setText(saleAmount, money.price);\r\n        price.querySelectorAll('.price__sale .price-item--regular').forEach(\r\n          x => setText(x, sale ? money.compare_at_price : money.price)\r\n        );\r\n        price.classList.toggle('price--on-sale', sale);\r\n        price.classList.toggle('price--sold-out', !variant.available);\r\n        price.classList.remove('hidden', 'price--no-compare');\r\n        container.classList.remove('hidden');\r\n        written = true;\r\n      });\r\n      if (written) this.state.priceReadyId = variant.id;\r\n      return written;\r\n    }\r\n    get selectionBlocked() {\r\n      return !!this.state && (\r\n        !this.state.variantId ||\r\n        this.state.resolving ||\r\n        this.state.error\r\n      );\r\n    }\r\n    get priceLabel() {\r\n      if (!this.state || !this.state.variantId) return '';\r\n      const v = this.variants.find(\r\n        x => x.id === this.state.variantId\r\n      );\r\n      if (!v) return '';\r\n      if (v.category === 'Original Painting') return 'Original Painting';\r\n      if (v.category === 'Paper') return `Fine Art Paper Print (${v.presentation})`;\r\n      return v.presentation === 'Framed'\r\n        ? 'Framed Canvas Print'\r\n        : 'Stretched Canvas Print (Unframed)';\r\n    }\r\n    restoreFocus() {\r\n      const pending = this.state.focus;\r\n      if (!pending) return;\r\n      const button = [...this.querySelectorAll('[data-choice]')].find(\r\n        b => b.dataset.group === pending.group &&\r\n             b.dataset.choice === pending.value\r\n      );\r\n      button?.focus({ preventScroll: true });\r\n    }\r\n    applyPurchaseState() {\r\n      if (!this.root) return;\r\n      const blocked = this.selectionBlocked;\r\n\r\n      // Originals are enquiry-only: freight must be quoted and agreed first.\r\n      // Leave print variants on the existing Shopify add-to-cart flow.\r\n      const selected = this.variants.find(v => v.id === this.state.variantId);\r\n      const originalEnquiry = selected?.category === 'Original Painting';\r\n      const purchase = this.root.querySelector('.everdon-purchase');\r\n      if (purchase) {\r\n        purchase.classList.toggle('everdon-original-enquiry-active', originalEnquiry);\r\n        const buttons = purchase.querySelector('.product-form__buttons');\r\n        if (buttons && !purchase.querySelector('[data-everdon-original-enquiry]')) {\r\n          const enquiry = document.createElement('a');\r\n          enquiry.className = 'button button--full-width everdon-original-enquiry';\r\n          enquiry.dataset.everdonOriginalEnquiry = '';\r\n          enquiry.href = this.dataset.contactUrl || '/pages/contact';\r\n          enquiry.textContent = 'Enquire to Purchase';\r\n          enquiry.setAttribute('aria-label', 'Enquire about purchasing this original painting and shipping');\r\n          buttons.parentNode.insertBefore(enquiry, buttons);\r\n        }\r\n      }\r\n\r\n      this.root.querySelector(\r\n        '.everdon-purchase .product-form__buttons'\r\n      )?.classList.toggle(\r\n        'everdon-selection-pending-buttons',\r\n        !this.state.variantId\r\n      );\r\n      this.root.querySelectorAll('.everdon-price-block').forEach(x => {\r\n        x.hidden = !this.state.variantId;\r\n        x.classList.toggle(\r\n          'everdon-price-loading',\r\n          !this.priceReady && (this.state.resolving || this.state.error === true)\r\n        );\r\n        x.setAttribute('aria-busy', String(this.state.resolving));\r\n      });\r\n      this.root.querySelectorAll('.everdon-price-label').forEach(x => {\r\n        if (!blocked && x.textContent.trim() !== this.priceLabel) {\r\n          x.textContent = this.priceLabel;\r\n        }\r\n      });\r\n      this.root.querySelector(\r\n        '.everdon-purchase .product-form__buttons'\r\n      )?.classList.toggle(\r\n        'everdon-price-loading',\r\n        blocked && !!this.state.variantId\r\n      );\r\n      this.root.querySelector(\r\n        '[id^=\"Quantity-Form-\"]'\r\n      )?.classList.toggle(\r\n        'everdon-selection-pending',\r\n        !this.state.variantId\r\n      );\r\n      this.root.querySelector(\r\n        '[id^=\"Quantity-Form-\"]'\r\n      )?.classList.toggle(\r\n        'everdon-price-loading',\r\n        blocked && !!this.state.variantId\r\n      );\r\n      if (blocked) {\r\n        const button = this.root.querySelector(\r\n          '.everdon-purchase button[name=\"add\"]'\r\n        );\r\n        if (button && !button.disabled) button.disabled = true;\r\n      } else {\r\n        this.root.querySelector(\r\n          '[id^=\"Quantity-Form-\"]'\r\n        )?.classList.remove('everdon-selection-pending');\r\n      }\r\n    }\r\n    originalHeadingSize() {\r\n      const original = this.variants.find(v => v.category === 'Original Painting');\r\n      const raw = (this.dataset.originalSize || '').trim();\r\n      const match = raw.match(/(\\d+(?:\\.\\d+)?)\\s*(?:x|\u00D7|by)\\s*(\\d+(?:\\.\\d+)?)/i);\r\n      if (match) return `${match[1]} \u00D7 ${match[2]} inch`;\r\n      return original?.dims?.length === 2 ? `${original.dims[0]} \u00D7 ${original.dims[1]} inch` : '';\r\n    }\r\n    renderFormatFirst(group, ui) {\r\n      const s = this.state;\r\n      const categories = ['Original Painting', 'Paper', 'Canvas'].filter(c => this.variants.some(v => v.category === c));\r\n      group('', 'category', categories, s.category, x => ({\r\n        title: x === 'Original Painting'\r\n          ? `Original painting${this.originalHeadingSize() ? ' \u2014 ' + this.originalHeadingSize() : ''}`\r\n          : x === 'Paper' ? 'Paper print' : 'Canvas print',\r\n        description: x === 'Original Painting'\r\n          ? 'Acrylic on Belgian linen, 32mm gallery-wrap with painted edges, delivered unframed and ready to hang with a Certificate of Authenticity signed by the artist.'\r\n          : x === 'Paper'\r\n            ? 'Fine art reproduction on premium matte paper. Available unframed or professionally framed in selected sizes, ready to hang.'\r\n            : 'Fine art reproduction on 400gsm artist-grade canvas, presented in a Classic or Floating frame, delivered ready to hang.'\r\n      }));\r\n      if (s.category === 'Original Painting' || !s.category) return;\r\n      let candidates = this.variants.filter(v => v.category === s.category);\r\n      if (s.category === 'Paper') {\r\n        const presentations = ['Framed', 'Unframed'];\r\n        group('Framing', 'presentation', presentations, s.presentation, x => ({\r\n          title: x,\r\n          disabled: !candidates.some(v => v.presentation === x),\r\n          description: candidates.some(v => v.presentation === x) ? '' : 'Not currently available'\r\n        }));\r\n        if (!s.presentation) return;\r\n        candidates = candidates.filter(v => v.presentation === s.presentation);\r\n        if (s.presentation === 'Framed') {\r\n          const note = document.createElement('p');\r\n          note.className = 'everdon-frame-note';\r\n          note.append('A mat is included as standard. If you prefer your print without a mat, please ');\r\n          const link = document.createElement('a');\r\n          link.href = this.dataset.contactUrl;\r\n          link.textContent = 'contact us';\r\n          note.append(link, ' before ordering.');\r\n          ui.append(note);\r\n        }\r\n        group('Size', 'size', this.unique(candidates.map(v => v.size)), s.size);\r\n        return;\r\n      }\r\n      const frames = ['Floating', 'Classic'].filter(f => candidates.some(v => v.frameStyle === f));\r\n      group('Frame type', 'frameStyle', frames, s.frameStyle, x => ({\r\n        title: `${x} frame`,\r\n        description: x === 'Floating'\r\n          ? 'Contemporary frame with a narrow, shadow gap between the edge of the canvas and the frame, extends 53mm from the wall.'\r\n          : 'Traditional slimmer frame fitted around the canvas edge, extends 22mm from the wall.'\r\n      }));\r\n      // Show the existing framing guide link beneath the canvas frame choices.\r\n      if (this.dataset.framingUrl) {\r\n        const framingNote = document.createElement('p');\r\n        framingNote.className = 'everdon-frame-note';\r\n        const framingLink = document.createElement('a');\r\n        framingLink.href = this.dataset.framingUrl;\r\n        framingLink.textContent = 'View framing options';\r\n        framingNote.append(framingLink);\r\n        ui.append(framingNote);\r\n      }\r\n      if (!s.frameStyle) return;\r\n      candidates = candidates.filter(v => v.frameStyle === s.frameStyle);\r\n      // Always expose every size available for the selected frame type.\r\n      // A colour-specific combination may be unavailable, but must not hide\r\n      // the size completely from the customer.\r\n      group('Size', 'size', this.unique(candidates.map(v => v.size)), s.size);\r\n      if (!s.size) return;\r\n      candidates = candidates.filter(v => v.size === s.size);\r\n      const colours = this.unique(candidates.map(v => v.colour)).filter(Boolean)\r\n        .sort((a, b) => ['Natural', 'Black', 'White'].indexOf(a) - ['Natural', 'Black', 'White'].indexOf(b));\r\n      if (colours.length) group('Wood frame colour', 'colour', colours, s.colour);\r\n      if (!s.colour) return;\r\n    }\r\n    render() {\r\n      const live = this.querySelector('[data-everdon-ui]');\r\n      const ui = document.createElement('div');\r\n      const s = this.state;\r\n      const group = (\r\n        title,\r\n        key,\r\n        values,\r\n        selected,\r\n        copy = x => ({ title: x })\r\n      ) => {\r\n        const wrapper = document.createElement('div');\r\n        wrapper.className = 'everdon-choice-group';\r\n        if (key === 'size' && s.category === 'Canvas') wrapper.classList.add('everdon-canvas-size-group');\r\n        const heading = document.createElement('p');\r\n        heading.className = 'everdon-format-heading';\r\n        heading.id = `${this.picker.id}-${key}-heading`;\r\n        heading.textContent = title;\r\n        const choices = document.createElement('div');\r\n        choices.className = `everdon-choice-buttons${key === 'size' ? ' everdon-size-choices' : ''}`;\r\n        choices.setAttribute('role', 'radiogroup');\r\n        // Keep the three frame finishes visually grouped.\r\n        if (key === 'colour') choices.style.rowGap = '0.5rem';\r\n        if (title) {\r\n          choices.setAttribute('aria-labelledby', heading.id);\r\n        } else {\r\n          choices.setAttribute('aria-label', 'Artwork type');\r\n        }\r\n        // Order the visible size controls here, immediately before creating them.\r\n        if (key === 'size') {\r\n          const dimensions = value => (String(value).match(/\\d+(?:\\.\\d+)?/g) || []).map(Number);\r\n          values = [...values].sort((a, b) => {\r\n            const da = dimensions(a), db = dimensions(b);\r\n            return Math.max(...db) - Math.max(...da)\r\n              || (db[0] * db[1]) - (da[0] * da[1]);\r\n          });\r\n        }\r\n        values.forEach((value, i) => {\r\n          const button = document.createElement('button');\r\n          button.type = 'button';\r\n          button.dataset.group = key;\r\n          button.dataset.choice = value;\r\n          button.setAttribute('role', 'radio');\r\n          button.setAttribute('aria-checked', String(value === selected));\r\n          button.tabIndex =\r\n            value === selected || (!values.includes(selected) && i === 0)\r\n              ? 0\r\n              : -1;\r\n          const mark = document.createElement('span');\r\n          mark.className = 'everdon-radio-mark';\r\n          mark.setAttribute('aria-hidden', 'true');\r\n          const text = document.createElement('span');\r\n          text.className = 'everdon-choice-copy';\r\n          const titleText = document.createElement('span');\r\n          titleText.className = 'everdon-choice-title';\r\n          const content = copy(value);\r\n          titleText.textContent = content.title;\r\n          button.disabled = !!content.disabled;\r\n          if (button.disabled) { button.tabIndex = -1; button.setAttribute('aria-disabled', 'true'); button.style.opacity = '0.5'; button.style.cursor = 'not-allowed'; }\r\n          text.append(titleText);\r\n          if (content.description) {\r\n            const description = document.createElement('span');\r\n            description.className = 'everdon-choice-description';\r\n            description.textContent = content.description;\r\n            text.append(description);\r\n          }\r\n          button.append(mark, text);\r\n          choices.append(button);\r\n        });\r\n        if (title) wrapper.append(heading);\r\n        wrapper.append(choices);\r\n        ui.append(wrapper);\r\n      };\r\n      this.renderFormatFirst(group, ui);\r\n      const status = document.createElement('p');\r\n      status.className = 'everdon-selection-status';\r\n      status.setAttribute('role', 'status');\r\n      status.setAttribute('aria-live', 'polite');\r\n      status.textContent = s.error\r\n        ? (\r\n            this.priceReady\r\n              ? 'Availability could not be refreshed. Please select your option again.'\r\n              : 'Unable to update the price. Please select your option again.'\r\n          )\r\n        : s.resolving\r\n          ? (\r\n              this.priceReady\r\n                ? 'Checking availability\\u2026'\r\n                : 'Updating price\\u2026'\r\n            )\r\n          : !s.variantId\r\n            ? 'Select the options above to view the price.'\r\n            : '';\r\n      ui.append(status);\r\n      this.syncChildren(live, ui);\r\n      this.applyPurchaseState();\r\n    }\r\n  });\r\n}\r\n"],
  "mappings": "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",
  "names": []
}
