{
  "version": 3,
  "sources": ["/cdn/shop/t/12/assets/product-framing.js?psv=20261026-canvas1"],
  "sourcesContent": ["(async () => {\n  const root = document.querySelector('[data-ps-product]');\n  const catalogNode = document.querySelector('[data-ps-framing-catalog]');\n  if (!root || !catalogNode) return;\n\n  globalThis.PosterFramingFulfilment?.connect(root);\n\n  const catalog = globalThis.PosterFramingCatalog\n    ? await globalThis.PosterFramingCatalog.load(catalogNode)\n    : JSON.parse(catalogNode.textContent);\n\n  const variantNode = document.querySelector('[data-ps-variants]');\n  const posterVariants = variantNode ? JSON.parse(variantNode.textContent) : [];\n  const variantInput = root.querySelector('[data-ps-variant-input]');\n  const preview = root.querySelector('[data-ps-art-preview]');\n  const layers = {\n    passepartout: root.querySelector('[data-ps-framing-layer=\"passepartout\"]'),\n    frame: root.querySelector('[data-ps-framing-layer=\"frame\"]'),\n  };\n  const selected = { passepartout: null, frame: null };\n  let currentMode = 'poster';\n  const renderMode = root.dataset.psFramingRenderMode || 'image';\n  const usesCssPreview = renderMode === 'css';\n  let isCustomPreviewActive = false;\n\n  const labels = {\n    passepartout: { empty: 'Add printed passepartout', none: 'No passepartout', from: '+' },\n    frame: { empty: 'Add frame', none: 'No frame', from: 'From' },\n  };\n  const swatches = {\n    beige: '#e6dfca', black: '#111111', blue: '#38558d', brass: '#c3ad73',\n    'dark-oak': '#654634', green: '#278e53', grey: '#c9c7bf', lavender: '#d9cbe8',\n    'light-blue': '#9fc8db', mint: '#74c79d', oak: '#a77b49', orange: '#ff8038',\n    petrol: '#577486', pink: '#ead0c2', plum: '#6e3e4c', red: '#c9584f',\n    white: '#ffffff', yellow: '#f4cf65',\n  };\n  const swatchFor = (styleSlug = '') => swatches[styleSlug]\n    || swatches[styleSlug.replace(/-(wood|alu)$/, '')]\n    || '#b8bbba';\n\n  const normalizeSize = globalThis.PosterFramingCatalog?.normalizeSize || ((value = '') => value\n    .toLowerCase()\n    .replaceAll(',', '.')\n    .replace(/[\u00D7\u2715\u2716]/g, 'x')\n    .replace(/\\s*x\\s*/g, 'x')\n    .replace(/\\s+/g, ' ')\n    .trim());\n  const isFramingOptionVisible = globalThis.PosterFramingVisibility?.isVisible || (() => true);\n  const currentPosterVariant = () => posterVariants.find((variant) => String(variant.id) === String(variantInput?.value));\n  const currentPosterSize = () => {\n    const variant = currentPosterVariant();\n    const sizeIndex = variant?.options?.findIndex((_value, index) => {\n      const group = root.querySelector(`[data-ps-option-group][data-option-position=\"${index + 1}\"]`);\n      return group?.textContent.toLowerCase().includes('size');\n    });\n    return variant?.options?.[sizeIndex >= 0 ? sizeIndex : 0] || '';\n  };\n  const rowsForSize = (kind) => {\n    const targetSize = currentPosterSize();\n    const size = normalizeSize(targetSize);\n    const raw = (catalog[kind]?.variants || []).filter((variant) => (\n      variant.available\n      && isFramingOptionVisible(kind, variant)\n      && (normalizeSize(variant.size) === size || (kind === 'passepartout' && normalizeSize(variant.fitsSize) === size))\n    ));\n    if (kind !== 'passepartout') return raw;\n    // Prefer the passepartout variant whose own size equals the print size; \"fits\" fallbacks only when no direct size exists.\n    const ranked = raw.slice().sort((a, b) => Number(normalizeSize(b.size) === size) - Number(normalizeSize(a.size) === size));\n    const seen = new Set();\n    const order = ['white', 'red', 'blue', 'yellow', 'green', 'pink', 'light-blue', 'lavender', 'grey', 'black'];\n    return ranked.filter((v) => {\n      if (seen.has(v.styleSlug)) return false;\n      seen.add(v.styleSlug);\n      return true;\n    }).sort((a, b) => {\n      const ia = order.indexOf(a.styleSlug);\n      const ib = order.indexOf(b.styleSlug);\n      return (ia === -1 ? 99 : ia) - (ib === -1 ? 99 : ib);\n    });\n  };\n    const canvasRowForLabel = (label) => {\n    const size = normalizeSize(label || '');\n    return (catalog.frame?.variants || []).find((variant) => (\n      variant.available\n      && (variant.styleSlug === 'frameless-canvas' || variant.styleSlug === 'dark-oak' || String(variant.style || '').toLowerCase().includes('canvas'))\n      && normalizeSize(variant.size) === size\n    )) || null;\n  };\n  const canvasRowForSize = () => canvasRowForLabel(currentPosterSize());\n  const lowestPrice = (rows) => rows.length ? rows.reduce((lowest, row) => row.price < lowest.price ? row : lowest) : null;\n  const optionLabel = (kind, variant) => kind === 'passepartout' ? `${variant.style} printed passepartout` : `${variant.style} frame`;\n  const publishPricing = () => {\n    if (currentMode === 'canvas') {\n      const cRow = canvasRowForSize();\n      const canvasPrice = Number(cRow?.price || 0);\n      root.dispatchEvent(new CustomEvent('product:framing-price-change', {\n        detail: {\n          mode: 'canvas',\n          addonPrice: canvasPrice,\n          passepartoutPrice: 0,\n          framePrice: canvasPrice,\n          frame: null,\n          canvas: cRow || null,\n          hasSelection: true,\n        },\n      }));\n      return;\n    }\n    const passepartoutPrice = Number(selected.passepartout?.price || 0);\n    const framePrice = Number(selected.frame?.price || 0);\n    root.dispatchEvent(new CustomEvent('product:framing-price-change', {\n      detail: {\n        mode: 'poster',\n        addonPrice: passepartoutPrice + framePrice,\n        passepartoutPrice,\n        framePrice,\n        frame: selected.frame ? {\n          id: selected.frame.id,\n          styleSlug: selected.frame.styleSlug,\n          available: selected.frame.available,\n        } : null,\n        canvas: null,\n        hasSelection: Boolean(selected.passepartout || selected.frame),\n      },\n    }));\n  };\n\n  const updateTrigger = (kind) => {\n    const select = root.querySelector(`[data-ps-framing-select=\"${kind}\"]`);\n    if (!select) return;\n    const value = select.querySelector('[data-ps-choice-select-value]');\n    const price = select.querySelector('[data-ps-choice-select-price]');\n    const plus = select.querySelector('[data-ps-choice-select-plus]');\n    const output = select.closest('.ps-config-group')?.querySelector('[data-ps-choice-output]');\n    const chosen = selected[kind];\n    const lowest = lowestPrice(rowsForSize(kind));\n    if (value) value.textContent = chosen ? optionLabel(kind, chosen) : labels[kind].empty;\n    if (price) price.textContent = chosen ? chosen.formattedPrice : (lowest ? `${labels[kind].from} ${lowest.formattedPrice}` : 'Unavailable');\n    if (plus) plus.hidden = Boolean(chosen);\n    if (output) output.textContent = chosen ? optionLabel(kind, chosen) : labels[kind].none;\n  };\n\n  const applyPreview = () => {\n    const orientation = preview?.dataset.psPreviewOrientation || 'portrait';\n    if (usesCssPreview) {\n      for (const layer of Object.values(layers)) {\n        if (!layer) continue;\n        layer.hidden = true;\n        layer.removeAttribute('src');\n      }\n      root.productFramePreview?.update({\n        passepartout: currentMode === 'poster' ? selected.passepartout : null,\n        frame: currentMode === 'poster' ? selected.frame : null,\n        active: isCustomPreviewActive && currentMode === 'poster',\n      });\n      return;\n    }\n    for (const kind of ['passepartout', 'frame']) {\n      const layer = layers[kind];\n      const chosen = selected[kind];\n      if (!layer) continue;\n      if (!chosen || !isCustomPreviewActive) {\n        layer.hidden = true;\n        layer.removeAttribute('src');\n        continue;\n      }\n      layer.src = chosen.preview[orientation] || chosen.preview.portrait;\n      layer.hidden = false;\n      const updateLayerScale = () => {\n        const squareCanvasCompensation = orientation === 'square' && layer.naturalWidth > 0\n          ? layer.naturalHeight / layer.naturalWidth\n          : 1;\n        layer.style.setProperty('--ps-framing-layer-scale', String(squareCanvasCompensation));\n      };\n      layer.onload = updateLayerScale;\n      if (layer.complete) updateLayerScale();\n    }\n    const canvas = preview?.querySelector('[data-pdp-print-preview]');\n    if (canvas) {\n      canvas.dataset.hasPassepartout = selected.passepartout && isCustomPreviewActive ? 'true' : 'false';\n      canvas.dataset.hasFrame = selected.frame && isCustomPreviewActive ? 'true' : 'false';\n    }\n  };\n\n  const selectVariant = (kind, variant) => {\n    selected[kind] = variant;\n    render(kind);\n    updateTrigger(kind);\n    if (kind === 'passepartout') {\n      render('frame');\n      updateTrigger('frame');\n    }\n    isCustomPreviewActive = true;\n    root.dispatchEvent(new CustomEvent('product:show-custom-preview'));\n    applyPreview();\n    publishPricing();\n    window.dataLayer?.push({\n      event: 'framing_option_changed',\n      component: kind,\n      action: variant ? 'selected' : 'removed',\n      variant_id: variant?.id || null,\n      price: Number(variant?.price || 0),\n    });\n  };\n\n  const optionButton = (kind, variant) => {\n    const button = document.createElement('button');\n    const isSelected = String(selected[kind]?.id) === String(variant.id);\n    button.type = 'button';\n    button.className = `ps-frame-option${isSelected ? ' is-selected' : ''}`;\n    button.setAttribute('role', 'option');\n    button.setAttribute('aria-selected', String(isSelected));\n    button.setAttribute('aria-pressed', String(isSelected));\n    button.dataset.psFramingVariant = String(variant.id);\n    button.innerHTML = `<span class=\"ps-frame-option__swatch\" style=\"--ps-framing-swatch:${swatchFor(variant.styleSlug)}\"></span><span class=\"ps-frame-option__details\"><span class=\"ps-frame-option__name\"></span><span class=\"ps-frame-option__size\"></span></span><span class=\"ps-frame-option__price\"></span>`;\n    button.querySelector('.ps-frame-option__name').textContent = optionLabel(kind, variant);\n    button.querySelector('.ps-frame-option__size').textContent = kind === 'passepartout' ? `${variant.size} | fits: ${variant.fitsSize}` : variant.size;\n    button.querySelector('.ps-frame-option__price').textContent = variant.formattedPrice;\n    button.addEventListener('click', () => selectVariant(kind, variant));\n    return button;\n  };\n\n  const render = (kind) => {\n    const select = root.querySelector(`[data-ps-framing-select=\"${kind}\"]`);\n    const list = select?.querySelector('[data-ps-framing-options]');\n    if (!list) return;\n    const rows = rowsForSize(kind);\n    if (selected[kind] && !rows.some((row) => String(row.id) === String(selected[kind].id))) { selected[kind] = rows.find((row) => row.styleSlug === selected[kind].styleSlug) || null; }\n    list.replaceChildren();\n\n    const none = document.createElement('button');\n    none.type = 'button';\n    none.className = `ps-frame-option ps-frame-option--natural${selected[kind] ? '' : ' is-selected'}`;\n    none.setAttribute('role', 'option');\n    none.setAttribute('aria-selected', String(!selected[kind]));\n    none.setAttribute('aria-pressed', String(!selected[kind]));\n    none.innerHTML = '<span class=\"ps-frame-option__swatch\"></span><span class=\"ps-frame-option__details\"><span class=\"ps-frame-option__name\"></span></span>';\n    none.querySelector('.ps-frame-option__name').textContent = labels[kind].none;\n    none.addEventListener('click', () => selectVariant(kind, null));\n    list.append(none);\n    rows.forEach((variant) => list.append(optionButton(kind, variant)));\n    if (!rows.length) {\n      const message = document.createElement('p');\n      message.className = 'ps-frame-options__empty';\n      message.textContent = 'No option is available for this size.';\n      list.append(message);\n    }\n    updateTrigger(kind);\n  };\n\n  root.querySelectorAll('[data-ps-framing-select]').forEach((select) => {\n    const trigger = select.querySelector('[data-ps-frame-trigger]');\n    trigger?.addEventListener('click', () => {\n      const willOpen = !select.classList.contains('is-open');\n      root.querySelectorAll('[data-ps-framing-select].is-open').forEach((item) => {\n        item.classList.remove('is-open');\n        item.querySelector('[data-ps-frame-trigger]')?.setAttribute('aria-expanded', 'false');\n      });\n      select.classList.toggle('is-open', willOpen);\n      trigger.setAttribute('aria-expanded', String(willOpen));\n    });\n  });\n  document.addEventListener('click', (event) => {\n    if (event.target.closest('[data-ps-framing-select]')) return;\n    root.querySelectorAll('[data-ps-framing-select].is-open').forEach((select) => {\n      select.classList.remove('is-open');\n      select.querySelector('[data-ps-frame-trigger]')?.setAttribute('aria-expanded', 'false');\n    });\n  });\n\n  root.addEventListener('product:variant-change', () => {\n    render('passepartout');\n    render('frame');\n    applyPreview();\n    publishPricing();\n  });\n  root.addEventListener('product:media-change', (event) => {\n    isCustomPreviewActive = Boolean(event.detail?.isCustomPreview || selected.passepartout || selected.frame || currentMode === 'canvas');\n    applyPreview();\n  });\n  root.addEventListener('product:preview-orientation', applyPreview);\n\n  root.productFraming = {\n    getState() {\n      return {\n        mode: currentMode,\n        selected: { ...selected },\n        passepartoutRows: rowsForSize('passepartout'),\n        frameRows: rowsForSize('frame'),\n        canvasRow: canvasRowForSize(),\n        canvasPriceForSize: (label) => Number(canvasRowForLabel(label)?.price || 0),\n        currentSize: currentPosterSize(),\n        swatchFor,\n        optionLabel,\n      };\n    },\n    setMode(nextMode) {\n      currentMode = nextMode === 'canvas' ? 'canvas' : 'poster';\n      isCustomPreviewActive = true;\n      root.dispatchEvent(new CustomEvent('product:show-custom-preview'));\n      applyPreview();\n      publishPricing();\n    },\n    selectOption(kind, variantId) {\n      if (!variantId) {\n        selectVariant(kind, null);\n        return;\n      }\n      const rows = rowsForSize(kind);\n      const found = rows.find((r) => String(r.id) === String(variantId));\n      if (found) selectVariant(kind, found);\n    },\n    getCartItems(parentVariantId, quantity) {\n      const configurationId = globalThis.crypto?.randomUUID?.() || `${Date.now()}-${Math.random().toString(16).slice(2)}`;\n      const parentProperties = { _framing_config: configurationId };\n      const items = [{ id: Number(parentVariantId), quantity, properties: parentProperties }];\n      if (currentMode === 'canvas') {\n        const cVar = canvasRowForSize();\n        if (cVar) {\n          parentProperties['Format'] = 'Frameless stretched canvas';\n          items.push({\n            id: Number(cVar.id),\n            quantity,\n            parent_id: Number(parentVariantId),\n            properties: {\n              _framing_config: configurationId,\n              _framing_component: 'canvas',\n              _framing_style: 'Frameless',\n              _framing_size: cVar.size,\n            },\n          });\n        }\n        return { items, configurationId, selected: { canvas: cVar } };\n      }\n      for (const kind of ['passepartout', 'frame']) {\n        const variant = selected[kind];\n        if (!variant) continue;\n        parentProperties[kind === 'passepartout' ? 'Passepartout' : 'Frame'] = optionLabel(kind, variant);\n        items.push({\n          id: Number(variant.id), quantity, parent_id: Number(parentVariantId),\n          properties: {\n            _framing_config: configurationId, _framing_component: kind,\n            _framing_style: variant.style, _framing_size: variant.size,\n          },\n        });\n      }\n      return { items, configurationId, selected: { ...selected } };\n    },\n  };\n\n  window.dataLayer?.push({\n    event: 'framing_catalog_loaded',\n    source: catalog.source || 'liquid',\n    passepartout_variant_count: catalog.passepartout?.variants?.length || 0,\n    frame_variant_count: catalog.frame?.variants?.length || 0,\n    visible_passepartout_variant_count: (catalog.passepartout?.variants || []).filter((variant) => isFramingOptionVisible('passepartout', variant)).length,\n    visible_frame_variant_count: (catalog.frame?.variants || []).filter((variant) => isFramingOptionVisible('frame', variant)).length,\n    render_mode: renderMode,\n  });\n\n  render('passepartout');\n  render('frame');\n  applyPreview();\n  publishPricing();\n})();\n"],
  "mappings": "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",
  "names": []
}
