{
  "version": 3,
  "sources": ["/cdn/shop/t/174/assets/cs-hybrid-purchase-refine.js?mobile-polish-check=20260906"],
  "sourcesContent": ["/* Selected-object purchase dock. Presentation only; RingLab owns commerce,\n   pricing, size requirements, media and the past-CTA visibility threshold. */\n(() => {\n  const selector = 'corsaille-ring-lab[data-concept=\"hybrid\"]';\n  const states = new WeakMap();\n  const clean = value => String(value ?? '').replace(/\\s+/g, ' ').trim();\n  const optionName = value => clean(value).normalize('NFD').replace(/[\\u0300-\\u036f]/g, '').toLowerCase();\n  const selectedValue = (root, predicate) => {\n    const option = root.options?.find(predicate);\n    return option ? clean(root.selected?.[option.index]) : '';\n  };\n  const visibleSpec = (root, selector) => {\n    const node = root.querySelector(selector);\n    return node && !node.hidden && !node.parentElement?.hidden ? clean(node.textContent) : '';\n  };\n  const factsFor = root => {\n    const metal = selectedValue(root, option => option.kind === 'metal');\n    // Reuse the current dossier's gated per-variant facts. Never infer carat\n    // weight or diamond grade from an image, title, SKU or a different variant.\n    const totalCarat = visibleSpec(root, '[data-spec-field=\"carat\"]');\n    const requestedCarat = selectedValue(root, option => /carat|carataj/.test(optionName(option.name)));\n    const quality = root.pairPurchase && !root.pairPurchase.hasDiamonds() ? '' : selectedValue(root, option => /calit|quality|claritate|clarity/.test(optionName(option.name)));\n    let carat = (totalCarat || requestedCarat).replace(/^(?:aprox\\.?)\\s*/i, 'aprox. ').replace(/(\\d)\\.(\\d)/g, '$1,$2');\n    if (totalCarat) carat = carat.replace(/\\bct\\b(?!\\s*total)/i, 'ct total');\n    const diamond = [carat, quality].filter(Boolean).join(' \u00B7 ');\n    const sizes = root.pairPurchase ? root.pairPurchase.sizes() : !root.ringSizing ? [] : root.pair\n      ? [0, 1].map(index => `Inel ${index + 1}: ${root.sizes?.[index] ? 'EU ' + root.sizes[index] : 'de ales'}`)\n      : [root.sizes?.[0] ? 'EU ' + root.sizes[0] : 'M\u0103rime EU de ales'];\n    const secondary = !root.ringSizing && !diamond\n      ? (root.options || []).filter(option => option.kind !== 'metal').map(option => clean(root.selected?.[option.index])).filter(value => value && !/^(default title|configura\u021Bie de referin\u021B\u0103)$/i.test(value)).join(' \u00B7 ')\n      : '';\n    return { metal, diamond, sizes, secondary };\n  };\n  const node = (tag, className) => {\n    const element = document.createElement(tag); element.className = className; return element;\n  };\n  const put = (element, text) => {\n    if (element.textContent !== text) element.textContent = text;\n    element.hidden = !text;\n  };\n  const attach = root => {\n    if (!root || root.dataset.handle === 'epure-oval' || root.dataset.concept !== 'hybrid' || states.has(root)) return false;\n    if (!root.ready || root.dataset.hybridReady !== 'true') return false;\n    const dock = root.querySelector('[data-sticky]');\n    const price = dock?.querySelector('[data-sticky-price]');\n    const sizeSource = dock?.querySelector('[data-sticky-size]');\n    const action = dock?.querySelector('[data-sticky-action]');\n    if (!dock || !price || !sizeSource || !action) return false;\n    const priceGroup = price.parentElement;\n    priceGroup.classList.add('cl-purchase-refine-price');\n    if (root.pairPurchase || root.dataset.salePair === 'true') {\n      const unit = node('small', 'cl-purchase-refine-unit');\n      unit.textContent = '/ pereche';\n      unit.setAttribute('aria-label', 'Pre\u021B pentru pereche');\n      priceGroup.append(unit);\n    }\n    // Keep these exact nodes in place: setupPrices holds references to both its\n    // animated and accessible values, and sync updates the action's first node.\n    const summary = node('div', 'cl-purchase-refine-summary');\n    const title = node('p', 'cl-purchase-refine-title');\n    title.textContent = clean(root.product?.title?.split(' | ')[0] || root.querySelector('.cl-title')?.textContent);\n    const facts = node('div', 'cl-purchase-refine-facts');\n    const metal = node('span', 'cl-purchase-refine-metal');\n    const diamond = node('span', 'cl-purchase-refine-diamond');\n    const sizes = node('span', 'cl-purchase-refine-sizes');\n    const secondary = node('span', 'cl-purchase-refine-secondary');\n    facts.append(metal, diamond, sizes, secondary); summary.append(title, facts);\n    dock.insertBefore(summary, priceGroup);\n    const refresh = () => {\n      const current = factsFor(root);\n      if (root.pairPurchase) {\n        const unit = priceGroup.querySelector('.cl-purchase-refine-unit');\n        unit.textContent = root.pairPurchase.unit() === 'pair' ? '/ pereche' : root.pairPurchase.unit() === 'ea' ? '/ pentru ea' : '/ pentru el';\n        unit.setAttribute('aria-label', 'Pre\u021B ' + unit.textContent.slice(2));\n      }\n      const compactMetal = current.metal.replace(/^Aur\\s+(alb|galben|roz)\\s+(\\d{2}K)$/i, '$2 $1').replace(/^Platin\u0103\\s+PT950$/i, 'Platin\u0103 950');\n      put(metal, compactMetal);\n      metal.setAttribute('aria-label', current.metal ? `Metal: ${current.metal}` : '');\n      const compactDiamond = current.diamond.replace(/^aprox\\.\\s*/i, '\u2248').replace(/\\s*\u00B7\\s*/g, '\u00B7').replace(/\\btotal\u00B7/g, 'total \u00B7 ');\n      put(diamond, compactDiamond); put(secondary, current.secondary);\n      diamond.setAttribute('aria-label', current.diamond ? `Diamante: ${current.diamond}` : '');\n      const sizeKey = current.sizes.join('|');\n      if (sizes.dataset.value !== sizeKey) {\n        sizes.replaceChildren(...current.sizes.map(text => {\n          const unit = node('span', 'cl-purchase-refine-size-unit');\n          unit.textContent = text.replace(/^Inel\\s+(\\d+):\\s*/, '$1: ').replace(/de ales$/, 'EU \u2014').replace(/^M\u0103rime EU EU \u2014$/, 'EU \u2014');\n          unit.setAttribute('aria-label', text);\n          return unit;\n        }));\n        sizes.dataset.value = sizeKey;\n      }\n      sizes.hidden = current.sizes.length === 0;\n      facts.hidden = !current.metal && !current.diamond && !current.sizes.length && !current.secondary;\n      root.dataset.purchaseHasFacts = String(!facts.hidden);\n      // The action still uses RingLab's original node and click handler. Keep\n      // its incomplete-pair label concise enough for the one-row mobile dock.\n      if (root.ringSizing && root.pair && root.sizes?.some(size => !size) && root.variant?.available !== false && !root.busy && action.firstChild) {\n        action.firstChild.textContent = 'Alege m\u0103rimile ';\n      }\n    };\n    const observer = new MutationObserver(refresh);\n    // Deliberately exclude animated price digits and our own summary: no\n    // per-animation-frame work and no observer feedback loop.\n    const sources = new Set([sizeSource, root.querySelector('[data-selection]'), ...root.querySelectorAll('[data-spec-field=\"carat\"],[data-spec-quality],[data-spec-selected-carat]')].filter(Boolean));\n    sources.forEach(source => observer.observe(source, { childList: true, characterData: true, subtree: true }));\n    const onSelection = () => queueMicrotask(refresh);\n    root.addEventListener('change', onSelection);\n    const dispose = () => { observer.disconnect(); root.removeEventListener('change', onSelection); states.delete(root); };\n    root.addEventListener('hybrid:dispose', dispose, { once: true });\n    states.set(root, { dispose });\n    refresh(); root.dataset.purchaseRefined = 'true';\n    return true;\n  };\n  const prepare = root => {\n    if (attach(root) || root.dataset.handle === 'epure-oval' || states.has(root)) return;\n    const observer = new MutationObserver(() => { if (attach(root) || !root.isConnected) observer.disconnect(); });\n    observer.observe(root, { attributes: true, attributeFilter: ['data-hybrid-ready', 'data-initialized'] });\n    root.addEventListener('hybrid:dispose', () => observer.disconnect(), { once: true });\n  };\n  customElements.whenDefined('corsaille-ring-lab').then(() => document.querySelectorAll(selector).forEach(prepare));\n  document.addEventListener('shopify:section:load', event => event.target.querySelectorAll?.(selector).forEach(prepare));\n})();\n"],
  "mappings": "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",
  "names": ["selector", "node"]
}
