{
  "version": 3,
  "sources": ["/cdn/shop/t/161/assets/trust-cert-title-fit.js?bk=cert-foil-v398-slide-top"],
  "sourcesContent": ["/**\n * Shared --cert-title-font-size for Trust Provider cert tiles (CMS TrustCertTitleFit).\n * Fits the widest org title into the title-hero-plate content box.\n * Product flip-scene uses CMS CERT_TITLE_FIT_STRINGS (all four orgs), not per-card DOM.\n * Product measures the visible .is-active plate (inactive panels are display:none).\n * Card-v2: data-card-v2-title-fit (facet locales + Veridam\u00E9) \u222A cert-title attrs.\n * Call window.trustCertTitleFit.refit(root) when reverse becomes measurable (flip open).\n */\n(function () {\n  const REF_PX = 100;\n  const ROOT_SEL =\n    '.collection-list--surface, .product-card-wrapper.product-card__flip-scene, .card-v2';\n  const PLATE_SEL = '.cert-card-back__title-hero-plate';\n  const TITLE_SEL = '.cert-card-back__title--hero';\n  const ACTIVE_PLATE_SEL = '.cert-card-back__panel.is-active ' + PLATE_SEL;\n  const ACTIVE_TITLE_SEL = '.cert-card-back__panel.is-active ' + TITLE_SEL;\n  const CARD_V2_PLATE_SEL = '.card-v2__row--back-title';\n  const CARD_V2_TITLE_SEL = '[data-card-v2-back-title]';\n  const CARD_V2_CERT_TITLE_ATTR = 'data-card-v2-cert-title';\n  const CARD_V2_TITLE_FIT_ATTR = 'data-card-v2-title-fit';\n  const CARD_V2_DEFAULT_TITLE = 'Veridam\u00E9';\n  /** CMS ProductCardCertReverse CERT_TITLE_FIT_STRINGS */\n  const PRODUCT_TITLE_FIT_STRINGS = ['PETA', 'Made Safe', 'EWG', 'SkinSAFE'];\n  const plateObservers = new WeakMap();\n  const retryRafs = new WeakMap();\n  const boundRoots = new Set();\n  let resizeBound = false;\n  let resizeTimer = 0;\n\n  function refitBoundRoots() {\n    boundRoots.forEach((root) => {\n      if (!(root instanceof HTMLElement) || !root.isConnected) {\n        boundRoots.delete(root);\n        return;\n      }\n      const plate = plateForRoot(root);\n      if (plate) observePlate(root, plate);\n      if (!fitSharedTitleFont(root)) scheduleRetry(root);\n    });\n  }\n\n  function onWindowResize() {\n    if (resizeTimer) window.clearTimeout(resizeTimer);\n    resizeTimer = window.setTimeout(function () {\n      resizeTimer = 0;\n      refitBoundRoots();\n    }, 100);\n  }\n\n  function ensureSharedResize() {\n    if (resizeBound) return;\n    resizeBound = true;\n    window.addEventListener('resize', onWindowResize);\n  }\n\n  function isProductRoot(root) {\n    return Boolean(root && root.classList.contains('product-card__flip-scene'));\n  }\n\n  function isCardV2Root(root) {\n    return Boolean(root && root.classList.contains('card-v2'));\n  }\n\n  function pushUniqueTitle(titles, raw) {\n    const title = (raw || '').replace(/\\s+/g, ' ').trim();\n    if (!title || titles.indexOf(title) !== -1) return;\n    titles.push(title);\n  }\n\n  function titlesForRoot(root) {\n    if (isProductRoot(root)) {\n      return PRODUCT_TITLE_FIT_STRINGS.slice();\n    }\n    if (isCardV2Root(root)) {\n      const titles = [];\n      const baked = root.getAttribute(CARD_V2_TITLE_FIT_ATTR) || '';\n      if (baked) {\n        baked.split('|').forEach(function (part) {\n          pushUniqueTitle(titles, part);\n        });\n      }\n      Array.from(root.querySelectorAll('[' + CARD_V2_CERT_TITLE_ATTR + ']')).forEach(\n        function (el) {\n          pushUniqueTitle(titles, el.getAttribute(CARD_V2_CERT_TITLE_ATTR));\n        }\n      );\n      pushUniqueTitle(titles, CARD_V2_DEFAULT_TITLE);\n      return titles;\n    }\n    return Array.from(root.querySelectorAll(TITLE_SEL))\n      .map((el) => (el.textContent || '').replace(/\\s+/g, ' ').trim())\n      .filter(Boolean);\n  }\n\n  function visiblePlate(root) {\n    const active = root.querySelector(ACTIVE_PLATE_SEL);\n    if (active && active.clientWidth > 0) return active;\n    const plates = root.querySelectorAll(PLATE_SEL);\n    for (let i = 0; i < plates.length; i += 1) {\n      if (plates[i].clientWidth > 0) return plates[i];\n    }\n    return null;\n  }\n\n  function plateForRoot(root) {\n    if (isCardV2Root(root)) return root.querySelector(CARD_V2_PLATE_SEL);\n    if (isProductRoot(root)) return visiblePlate(root);\n    return root.querySelector(PLATE_SEL);\n  }\n\n  function sampleForRoot(root, plate) {\n    if (isCardV2Root(root)) {\n      return (\n        root.querySelector(CARD_V2_TITLE_SEL) ||\n        (plate && plate.querySelector(CARD_V2_TITLE_SEL)) ||\n        null\n      );\n    }\n    if (isProductRoot(root)) {\n      return (\n        root.querySelector(ACTIVE_TITLE_SEL) ||\n        (plate && plate.querySelector(TITLE_SEL)) ||\n        null\n      );\n    }\n    return root.querySelector(TITLE_SEL) || (plate && plate.querySelector(TITLE_SEL));\n  }\n\n  function fitSharedTitleFont(root) {\n    const titles = titlesForRoot(root);\n    if (!titles.length) return false;\n\n    const plate = plateForRoot(root);\n    const sample = sampleForRoot(root, plate);\n    if (!plate || !sample) return false;\n\n    const plateStyle = getComputedStyle(plate);\n    const contentWidth =\n      plate.clientWidth -\n      (parseFloat(plateStyle.paddingLeft) || 0) -\n      (parseFloat(plateStyle.paddingRight) || 0);\n    if (contentWidth <= 0) return false;\n\n    const titleStyle = getComputedStyle(sample);\n    const currentSize = parseFloat(titleStyle.fontSize) || REF_PX;\n    const letterPx =\n      titleStyle.letterSpacing === 'normal' ? 0 : parseFloat(titleStyle.letterSpacing) || 0;\n    const letterAtRef = (letterPx / currentSize) * REF_PX;\n\n    const canvas = document.createElement('canvas');\n    const ctx = canvas.getContext('2d');\n    if (!ctx) return false;\n\n    ctx.font = `${titleStyle.fontStyle} ${titleStyle.fontWeight} ${REF_PX}px ${titleStyle.fontFamily}`;\n    const canvasSupportsLetterSpacing = 'letterSpacing' in ctx;\n    if (canvasSupportsLetterSpacing) {\n      ctx.letterSpacing = `${letterAtRef}px`;\n    }\n\n    let maxAdvance = 0;\n    for (const title of titles) {\n      let advance = ctx.measureText(title).width;\n      if (!canvasSupportsLetterSpacing) {\n        advance += Math.max(0, title.length - 1) * letterAtRef;\n      }\n      if (advance > maxAdvance) maxAdvance = advance;\n    }\n    if (maxAdvance <= 0) return false;\n\n    const fontSizePx = (contentWidth * REF_PX) / maxAdvance;\n    root.style.setProperty('--cert-title-font-size', `${fontSizePx}px`);\n    return true;\n  }\n\n  function observePlate(root, plate) {\n    if (typeof ResizeObserver === 'undefined' || !plate) return;\n    const prev = plateObservers.get(root);\n    if (prev && prev.plate === plate) return;\n    if (prev) prev.observer.disconnect();\n    const observer = new ResizeObserver(() => fitSharedTitleFont(root));\n    observer.observe(plate);\n    plateObservers.set(root, { observer, plate });\n  }\n\n  function scheduleRetry(root) {\n    if (retryRafs.has(root)) return;\n    const id = requestAnimationFrame(() => {\n      retryRafs.delete(root);\n      const plate = plateForRoot(root);\n      if (plate) observePlate(root, plate);\n      if (!fitSharedTitleFont(root)) {\n        requestAnimationFrame(() => {\n          const later = plateForRoot(root);\n          if (later) observePlate(root, later);\n          fitSharedTitleFont(root);\n        });\n      }\n    });\n    retryRafs.set(root, id);\n  }\n\n  function bindRoot(root) {\n    if (!root || root.dataset.certTitleFitBound === 'true') return;\n    root.dataset.certTitleFitBound = 'true';\n    boundRoots.add(root);\n\n    const apply = () => {\n      const plate = plateForRoot(root);\n      if (plate) observePlate(root, plate);\n      if (!fitSharedTitleFont(root)) scheduleRetry(root);\n    };\n    apply();\n    if (document.fonts && document.fonts.ready) {\n      document.fonts.ready.then(apply).catch(() => {});\n    }\n\n    ensureSharedResize();\n  }\n\n  function refit(root) {\n    if (!root) {\n      document.querySelectorAll(ROOT_SEL).forEach((node) => {\n        if (!fitSharedTitleFont(node)) scheduleRetry(node);\n      });\n      return;\n    }\n    if (!(root instanceof HTMLElement)) return;\n    bindRoot(root);\n    const plate = plateForRoot(root);\n    if (plate) observePlate(root, plate);\n    if (!fitSharedTitleFont(root)) scheduleRetry(root);\n  }\n\n  function init() {\n    document.querySelectorAll(ROOT_SEL).forEach(bindRoot);\n  }\n\n  window.trustCertTitleFit = { refit };\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    init();\n  }\n})();\n"],
  "mappings": "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",
  "names": []
}
