{
  "version": 3,
  "sources": ["/cdn/shop/t/1/assets/prefer-apple-pay.js?mmv=10"],
  "sourcesContent": ["/**\n * Prefer Apple Pay on product express checkout.\n * Filter Shop Pay, Google Pay, and PayPal out of cart wallet-configs.\n * Keep Apple Pay visible and re-init payment buttons after updates.\n */\n(function preferApplePay() {\n  var ATTR = 'data-prefer-apple-pay';\n  var BLOCKED = { shop_pay: true, google_pay: true, paypal: true };\n\n  var remounting = false;\n  var appleConfigPromise = null;\n\n  function applePayAvailable() {\n    try {\n      return Boolean(\n        window.ApplePaySession &&\n          typeof window.ApplePaySession.canMakePayments === 'function' &&\n          window.ApplePaySession.canMakePayments()\n      );\n    } catch (error) {\n      return false;\n    }\n  }\n\n  function initPaymentButtons() {\n    if (window.Shopify && window.Shopify.PaymentButton && window.Shopify.PaymentButton.init) {\n      try {\n        window.Shopify.PaymentButton.init();\n      } catch (error) {}\n    }\n  }\n\n  function pageApplePayConfig() {\n    try {\n      var el = document.getElementById('apple-pay-shop-capabilities');\n      if (!el || !el.textContent) return null;\n      return JSON.parse(el.textContent);\n    } catch (error) {\n      return null;\n    }\n  }\n\n  function loadApplePayConfig() {\n    if (!appleConfigPromise) {\n      appleConfigPromise = fetch('/payments/config', { credentials: 'same-origin' })\n        .then(function (response) {\n          if (!response.ok) throw new Error('payments config ' + response.status);\n          return response.json();\n        })\n        .then(function (data) {\n          return data && data.paymentInstruments && data.paymentInstruments.applePayConfig\n            ? data.paymentInstruments.applePayConfig\n            : pageApplePayConfig();\n        })\n        .catch(function () {\n          return pageApplePayConfig();\n        });\n    }\n    return appleConfigPromise;\n  }\n\n  function buildWalletParams(config, el) {\n    var shopId = Number(el.getAttribute('shop-id') || config.shopId || 0);\n    var countryCode = el.getAttribute('buyer-country') || config.countryCode || 'CA';\n    return {\n      shopId: shopId,\n      countryCode: countryCode,\n      currencyCode: config.currencyCode || el.getAttribute('buyer-currency') || 'CAD',\n      merchantCapabilities: config.merchantCapabilities || ['supports3DS'],\n      merchantId: config.merchantId,\n      merchantName: config.merchantName || 'PHOTO\u2022MAGNET',\n      shippingType: config.shippingType || 'shipping',\n      supportedNetworks: config.supportedNetworks || [\n        'visa',\n        'masterCard',\n        'amex',\n        'discover',\n        'jcb',\n      ],\n      shopifyPaymentsEnabled:\n        typeof config.shopifyPaymentsEnabled === 'boolean' ? config.shopifyPaymentsEnabled : true,\n      phoneRequired: false,\n      companyRequired: false,\n      emailRequired: true,\n    };\n  }\n\n  function remount(el) {\n    if (!customElements.get('shopify-accelerated-checkout') || !el.isConnected) return el;\n    remounting = true;\n    try {\n      var clone = el.cloneNode(true);\n      clone.removeAttribute(ATTR);\n      el.replaceWith(clone);\n      window.setTimeout(initPaymentButtons, 0);\n      window.setTimeout(initPaymentButtons, 200);\n      return clone;\n    } finally {\n      remounting = false;\n    }\n  }\n\n  function filterCartWalletConfigs(el) {\n    if (!(el instanceof Element)) return;\n    if ((el.tagName || '').toLowerCase() !== 'shopify-accelerated-checkout-cart') return;\n    var raw = el.getAttribute('wallet-configs');\n    if (!raw || raw === 'null') return;\n    try {\n      var configs = JSON.parse(raw);\n      if (!Array.isArray(configs)) return;\n      var filtered = configs.filter(function (cfg) {\n        return !(cfg && cfg.name && BLOCKED[cfg.name]);\n      });\n      if (filtered.length === configs.length) {\n        el.setAttribute('data-mm-wallet-filtered', '1');\n        return;\n      }\n      el.setAttribute('wallet-configs', JSON.stringify(filtered));\n      el.setAttribute('data-mm-wallet-filtered', '1');\n      if (el.isConnected && !el.getAttribute('data-mm-cart-remounted')) {\n        el.setAttribute('data-mm-cart-remounted', '1');\n        remounting = true;\n        try {\n          var clone = el.cloneNode(false);\n          Array.from(el.attributes).forEach(function (attr) {\n            clone.setAttribute(attr.name, attr.value);\n          });\n          el.replaceWith(clone);\n          window.setTimeout(initPaymentButtons, 0);\n          window.setTimeout(initPaymentButtons, 250);\n        } finally {\n          remounting = false;\n        }\n      }\n    } catch (error) {}\n  }\n\n  function recommendedName(el) {\n    var raw = el.getAttribute('recommended');\n    if (!raw || raw === 'null') return null;\n    try {\n      var recommended = JSON.parse(raw);\n      return recommended && recommended.name ? recommended.name : null;\n    } catch (error) {\n      return null;\n    }\n  }\n\n  function showExpressBlock(el) {\n    var block = el && el.closest && el.closest('.accelerated-checkout-block');\n    if (!block) return;\n    block.style.removeProperty('display');\n    block.removeAttribute('data-mm-hidden-wallet');\n    block.removeAttribute('hidden');\n  }\n\n  function hideBlockedProductWallet(el) {\n    if (!(el instanceof Element)) return;\n    var name = recommendedName(el);\n    if (name !== 'shop_pay' && name !== 'google_pay' && name !== 'paypal') return;\n\n    var block = el.closest('.accelerated-checkout-block');\n    if (block) {\n      block.style.setProperty('display', 'none', 'important');\n      block.setAttribute('data-mm-hidden-wallet', name);\n    }\n  }\n\n  function removePayPalNodes(root) {\n    var scope = root && root.querySelectorAll ? root : document;\n    scope.querySelectorAll('.mm-paypal-checkout, [data-mm-paypal=\"1\"]').forEach(function (el) {\n      try {\n        el.remove();\n      } catch (error) {}\n    });\n  }\n\n  function applyApplePay(el, config) {\n    if (!(el instanceof Element) || !el.isConnected) return el;\n    if (!applePayAvailable()) return el;\n\n    var raw = el.getAttribute('recommended');\n    if (!raw || raw === 'null') return el;\n\n    var recommended;\n    try {\n      recommended = JSON.parse(raw);\n    } catch (error) {\n      return el;\n    }\n    if (!recommended || typeof recommended !== 'object') return el;\n\n    var alreadyApple = recommended.name === 'apple_pay';\n    var alreadyMarked = el.getAttribute(ATTR) === '1';\n\n    // Already Apple Pay and hydrated \u2014 keep it visible, do not remount.\n    if (alreadyApple && alreadyMarked) {\n      showExpressBlock(el);\n      return el;\n    }\n\n    var walletConfig = config || pageApplePayConfig() || {};\n    recommended.name = 'apple_pay';\n    recommended.supports_def_opts = false;\n    recommended.wallet_params = buildWalletParams(walletConfig, el);\n    el.setAttribute('recommended', JSON.stringify(recommended));\n    el.setAttribute(ATTR, '1');\n    showExpressBlock(el);\n\n    if (alreadyApple) {\n      initPaymentButtons();\n      return el;\n    }\n\n    return remount(el) || el;\n  }\n\n  function enhance(el) {\n    if (remounting) return;\n    if (!(el instanceof Element)) return;\n    if (el.matches && el.matches('shopify-accelerated-checkout-cart')) {\n      filterCartWalletConfigs(el);\n      return;\n    }\n\n    // Do NOT hide Shop Pay before Apple Pay mounts \u2014 that blanks the express\n    // button when remount/config races. Hide blocked wallets only after.\n    loadApplePayConfig().then(function (appleConfig) {\n      if (!el.isConnected) return;\n      var primary = applyApplePay(el, appleConfig);\n      if (!primary || !primary.isConnected) {\n        primary = document.querySelector('shopify-accelerated-checkout');\n      }\n      if (primary) {\n        // Apple Pay replaced Shop Pay \u2192 showExpressBlock already ran.\n        // Otherwise hide Shop Pay / Google Pay / PayPal so they stay off.\n        hideBlockedProductWallet(primary);\n      }\n      removePayPalNodes(document);\n    });\n  }\n\n  function scan(node) {\n    if (!(node instanceof Element) && node !== document) return;\n    var root = node && node.querySelectorAll ? node : document;\n    removePayPalNodes(root);\n\n    if (node instanceof Element) {\n      if (node.matches && node.matches('shopify-accelerated-checkout-cart')) {\n        filterCartWalletConfigs(node);\n      }\n      if (node.matches && node.matches('shopify-accelerated-checkout')) {\n        enhance(node);\n      }\n    }\n\n    if (root.querySelectorAll) {\n      root.querySelectorAll('shopify-accelerated-checkout-cart').forEach(filterCartWalletConfigs);\n      root.querySelectorAll('shopify-accelerated-checkout').forEach(enhance);\n    }\n  }\n\n  var observer = new MutationObserver(function (mutations) {\n    for (var i = 0; i < mutations.length; i += 1) {\n      var mutation = mutations[i];\n      for (var j = 0; j < mutation.addedNodes.length; j += 1) {\n        var added = mutation.addedNodes[j];\n        if (!(added instanceof Element)) continue;\n        if (\n          added.matches?.(\n            'shopify-accelerated-checkout, shopify-accelerated-checkout-cart, .mm-paypal-checkout'\n          ) ||\n          added.querySelector?.(\n            'shopify-accelerated-checkout, shopify-accelerated-checkout-cart, .mm-paypal-checkout'\n          )\n        ) {\n          scan(added);\n        }\n      }\n      if (\n        mutation.type === 'attributes' &&\n        mutation.target instanceof Element &&\n        mutation.attributeName === 'wallet-configs'\n      ) {\n        filterCartWalletConfigs(mutation.target);\n      }\n    }\n  });\n\n  function boot() {\n    scan(document);\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', boot);\n  } else {\n    boot();\n  }\n\n  observer.observe(document.documentElement, {\n    childList: true,\n    subtree: true,\n    attributes: true,\n    attributeFilter: ['wallet-configs', 'recommended'],\n  });\n\n  if (customElements && customElements.whenDefined) {\n    customElements.whenDefined('shopify-accelerated-checkout').then(boot).catch(function () {});\n    customElements\n      .whenDefined('shopify-accelerated-checkout-cart')\n      .then(boot)\n      .catch(function () {});\n  }\n\n  document.addEventListener(\n    'click',\n    function (event) {\n      var target = event.target;\n      if (!(target instanceof Element)) return;\n      if (\n        target.closest(\n          '[data-testid=\"cart-drawer-trigger\"], [aria-controls=\"cart-drawer\"], #cart-icon-bubble, .header-actions__cart-icon'\n        )\n      ) {\n        setTimeout(boot, 50);\n        setTimeout(boot, 400);\n      }\n    },\n    true\n  );\n\n  if (applePayAvailable()) loadApplePayConfig();\n  window.addEventListener('load', boot);\n})();\n"],
  "mappings": "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",
  "names": []
}
