{
  "version": 3,
  "sources": ["/cdn/shop/t/91/assets/florame-delivery-sync.js?florame_v=20260912-order-messages-v857"],
  "sourcesContent": ["(function florameDeliverySyncBootstrap() {\r\n  const config = Object.assign(\r\n    {\r\n      enabled: true,\r\n      deliveryVariantId: 54260855701827,\r\n      deliveryProductHandle: 'consegna',\r\n      deliveryTitle: 'Consegna',\r\n      thresholdCents: 3000,\r\n      apiBase: '',\r\n      pricingCacheMs: 900000,\r\n      cartReadCacheMs: 500,\r\n      debug: false,\r\n      iosRefreshPasses: [0, 20, 800, 1800, 3200],\r\n      defaultRefreshPasses: [0, 450, 1200],\r\n      excludedProductHandles: ['test1', 'test-florame-local'],\r\n      upsellGuardUrl: '',\r\n    },\r\n    window.florameDeliveryConfig || {}\r\n  );\r\n\r\n  if (!config.enabled) return;\r\n\r\n  const root =\r\n    (window.Shopify && window.Shopify.routes && window.Shopify.routes.root) ||\r\n    (window.routes && window.routes.cart_url ? window.routes.cart_url.replace(/\\/cart(?:\\/)?$/, '/') : '/');\r\n\r\n  const SESSION_FLAG_KEY = 'florameDeliveryNeedsSync';\r\n  const PRICING_SESSION_CACHE_KEY = 'florameDeliveryPricingCacheV2';\r\n  const INTERNAL_PROPERTY_KEY = '_florame_delivery_auto';\r\n  const FREE_SHIPPING_TRUCK_SVG = `\r\n    <svg class=\"florame-free-shipping-alert__truck\" fill=\"currentColor\" viewBox=\"0 0 512 512\" focusable=\"false\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\">\r\n      <path d=\"M476.158,286.938l-13.259-53.035c3.625-.77,6.345-3.986,6.345-7.839v-8.551c0-18.566-15.105-33.67-33.67-33.67h-60.392v-17.637c0-9.136-7.432-16.568-16.568-16.568H246.32l68.24-27.296c4.111-1.644,6.11-6.31,4.466-10.421-1.644-4.11-6.307-6.111-10.421-4.466l-55.874,22.349c17.026-10.924,33.871-22.947,40.284-31.355,12.485-16.369,9.323-39.843-7.046-52.328-16.369-12.486-39.843-9.323-52.328,7.046-9.122,11.962-21.158,45.573-28.948,69.258-7.79-23.683-19.826-57.296-28.948-69.258-12.484-16.369-35.959-19.53-52.328-7.046-16.369,12.484-19.53,35.958-7.046,52.328,6.413,8.409,23.257,20.431,40.284,31.355l-55.874-22.349c-4.113-1.647-8.777,.355-10.421,4.466-1.645,4.111,.355,8.777,4.466,10.421l68.24,27.296H50.772c-9.136,0-16.568,7.432-16.568,16.568v145.37c0,4.427,3.589,8.017,8.017,8.017,4.427,0,8.017-3.589,8.017-8.017v-145.37c0-.295,.239-.534,.534-.534h307.841c.295,0,.534,.239,.534,.534v145.372c0,4.427,3.589,8.017,8.017,8.017,4.427,0,8.017-3.589,8.017-8.017v-9.088h94.566c.009,0,.016,.002,.025,.002s.017-.001,.026-.001c11.636,.009,21.516,7.647,24.908,18.171h-24.928c-4.427,0-8.017,3.589-8.017,8.017v17.102c0,13.851,11.268,25.119,25.119,25.119h9.086v35.273h-20.962c-6.886-19.882-25.787-34.205-47.982-34.205s-41.097,14.322-47.982,34.205h-3.86V345.78c0-4.427-3.589-8.017-8.017-8.017-4.427,0-8.017,3.589-8.017,8.017v60.392H192.817c-6.886-19.882-25.787-34.205-47.982-34.205s-41.097,14.322-47.982,34.205H50.772c-.295,0-.534-.239-.534-.534v-17.637h34.739c4.427,0,8.017-3.589,8.017-8.017s-3.589-8.017-8.017-8.017H8.017C3.59,371.967,0,375.556,0,379.984s3.589,8.017,8.017,8.017h26.188v17.637c0,9.136,7.432,16.568,16.568,16.568h43.304c-.002,.178-.014,.355-.014,.534,0,27.995,22.777,50.772,50.772,50.772s50.772-22.777,50.772-50.772c0-.18-.012-.356-.014-.534h180.67c-.002,.178-.014,.355-.014,.534,0,27.995,22.777,50.772,50.772,50.772,27.995,0,50.772-22.777,50.772-50.772,0-.18-.012-.356-.014-.534h26.203c4.427,0,8.017-3.589,8.017-8.017v-85.511c0-21.116-15.577-38.658-35.842-41.741ZM172.9,121.059c-31.623-19.651-41.003-28.692-43.78-32.334-7.123-9.339-5.319-22.732,4.021-29.855,3.85-2.936,8.388-4.355,12.893-4.355,6.422,0,12.776,2.886,16.963,8.376,7.755,10.168,19.9,44.391,27.918,69.052-5.411-3.186-11.631-6.915-18.015-10.884ZM218.473,131.942c8.018-24.66,20.163-58.882,27.917-69.052,7.123-9.339,20.516-11.142,29.855-4.02,9.34,7.123,11.143,20.516,4.021,29.855-2.777,3.641-12.157,12.683-43.778,32.333-6.383,3.968-12.603,7.698-18.014,10.884ZM375.182,199.875h60.392c9.725,0,17.637,7.912,17.637,17.637v.534h-78.029v-18.171ZM375.182,286.456V234.08h71.235l13.094,52.376h-84.329ZM144.835,457.479c-19.155,0-34.739-15.584-34.739-34.739s15.584-34.739,34.739-34.739c19.155,0,34.739,15.584,34.739,34.739s-15.584,34.739-34.739,34.739ZM427.023,457.479c-19.155,0-34.739-15.584-34.739-34.739s15.584-34.739,34.739-34.739c19.155,0,34.739,15.584,34.739,34.739s-15.584,34.739-34.739,34.739ZM495.967,354.865h-9.086c-5.01,0-9.086-4.076-9.086-9.086v-9.086h18.171v18.171Z\"></path>\r\n      <path d=\"M144.835,406.172c-9.136,0-16.568,7.432-16.568,16.568s7.432,16.568,16.568,16.568c9.136,0,16.568-7.432,16.568-16.568s-7.432-16.568-16.568-16.568Z\"></path>\r\n      <path d=\"M427.023,406.172c-9.136,0-16.568,7.432-16.568,16.568s7.432,16.568,16.568,16.568c9.136,0,16.568-7.432,16.568-16.568s-7.432-16.568-16.568-16.568Z\"></path>\r\n      <path d=\"M332.96,371.967H213.244c-4.427,0-8.017,3.589-8.017,8.017s3.589,8.017,8.017,8.017H332.96c4.427,0,8.017-3.589,8.017-8.017s-3.589-8.017-8.017-8.017Z\"></path>\r\n      <path d=\"M127.733,337.763H25.119c-4.427,0-8.017,3.589-8.017,8.017s3.589,8.017,8.017,8.017h102.614c4.427,0,8.017-3.589,8.017-8.017s-3.589-8.017-8.017-8.017Z\"></path>\r\n      <path d=\"M127.733,218.046H93.528c-4.427,0-8.017,3.589-8.017,8.017v68.409c0,4.427,3.589,8.017,8.017,8.017s8.017-3.589,8.017-8.017v-26.188h17.637c4.427,0,8.017-3.589,8.017-8.017s-3.589-8.017-8.017-8.017h-17.637V234.08h26.188c4.427,0,8.017-3.589,8.017-8.017,0-4.427-3.589-8.017-8.017-8.017Z\"></path>\r\n      <path d=\"M190.822,272.043c8.023-5.255,13.337-14.317,13.337-24.602,0-16.209-13.186-29.395-29.395-29.395h-21.378c-4.427,0-8.017,3.589-8.017,8.017v68.409c0,4.427,3.589,8.017,8.017,8.017s8.017-3.589,8.017-8.017v-17.637h13.346l14.722,22.083c1.545,2.317,4.086,3.571,6.677,3.571,1.529,0,3.073-.436,4.439-1.348,3.685-2.455,4.68-7.433,2.223-11.116l-11.987-17.982ZM174.764,260.802h-13.361V234.08h13.361c7.368,0,13.361,5.993,13.361,13.361,0,7.368-5.993,13.361-13.361,13.361Z\"></path>\r\n      <path d=\"M256,286.456h-26.188v-18.198c.177,.012,.354,.027,.534,.027h17.102c4.427,0,8.017-3.589,8.017-8.017s-3.589-8.017-8.017-8.017h-17.102c-.181,0-.357,.015-.534,.027V234.08H256c4.427,0,8.017-3.589,8.017-8.017,0-4.427-3.589-8.017-8.017-8.017h-34.205c-4.427,0-8.017,3.589-8.017,8.017v68.409c0,4.427,3.589,8.017,8.017,8.017H256c4.427,0,8.017-3.589,8.017-8.017s-3.589-8.017-8.017-8.017Z\"></path>\r\n      <path d=\"M315.858,286.456H289.67v-18.171h9.086c4.427,0,8.017-3.589,8.017-8.017s-3.589-8.017-8.017-8.017h-9.086V234.08h26.188c4.427,0,8.017-3.589,8.017-8.017,0-4.427-3.589-8.017-8.017-8.017h-34.205c-4.427,0-8.017,3.589-8.017,8.017v68.409c0,4.427,3.589,8.017,8.017,8.017h34.205c4.427,0,8.017-3.589,8.017-8.017s-3.589-8.017-8.017-8.017Z\"></path>\r\n    </svg>\r\n  `;\r\n  const PICKUP_STORE_SVG = `\r\n    <svg class=\"florame-free-shipping-alert__store\" viewBox=\"0 0 24 24\" fill=\"none\" focusable=\"false\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\">\r\n      <path d=\"M4.75 9.25h14.5l-1.1-4.5H5.85l-1.1 4.5Z\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linejoin=\"round\"/>\r\n      <path d=\"M6.25 9.25v9.5h11.5v-9.5\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"/>\r\n      <path d=\"M9.25 18.75v-5.5h5.5v5.5\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linejoin=\"round\"/>\r\n      <path d=\"M4.75 9.25c.15 1.35 1.25 2.35 2.62 2.35 1.1 0 2.05-.66 2.45-1.6.4.94 1.35 1.6 2.45 1.6s2.05-.66 2.45-1.6c.4.94 1.35 1.6 2.45 1.6 1.37 0 2.47-1 2.62-2.35\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n    </svg>\r\n  `;\r\n\r\n  let resolvedVariantId = Number(config.deliveryVariantId) || null;\r\n  let resolveVariantPromise = null;\r\n  let resolvePricingPromise = null;\r\n  let resolvePricingPromiseKey = '';\r\n  const pricingCacheByPartner = new Map();\r\n  let syncInFlight = false;\r\n  let syncPromise = null;\r\n  let queuedReason = null;\r\n  let scheduleTimer = null;\r\n  let freeShippingAlertTimer = null;\r\n  let lastCartSignature = '';\r\n  let lastMutationAt = 0;\r\n  let lastEnforceAt = 0;\r\n  let cartReadPromise = null;\r\n  let cartReadSnapshot = null;\r\n  let cartReadSnapshotAt = 0;\r\n  let cartReadGeneration = 0;\r\n\r\n  function log() {\r\n    if (!config.debug) return;\r\n    console.log('[Florame Delivery Sync]', ...arguments);\r\n  }\r\n\r\n  function normalizeText(value) {\r\n    return String(value || '')\r\n      .toLowerCase()\r\n      .normalize('NFD')\r\n      .replace(/[\\u0300-\\u036f]/g, '')\r\n      .replace(/[^a-z0-9]+/g, ' ')\r\n      .trim();\r\n  }\r\n\r\n  function normalizeHandle(value) {\r\n    return String(value || '')\r\n      .toLowerCase()\r\n      .trim()\r\n      .replace(/^\\/+|\\/+$/g, '')\r\n      .replace(/^products\\//, '')\r\n      .replace(/\\.js$/, '')\r\n      .replace(/[^a-z0-9-]+/g, '-')\r\n      .replace(/-+/g, '-');\r\n  }\r\n\r\n  function normalizeHandleList(value) {\r\n    const list = Array.isArray(value) ? value : String(value || '').split(',');\r\n    return list\r\n      .map((entry) => normalizeHandle(entry))\r\n      .filter(Boolean);\r\n  }\r\n\r\n  const excludedProductHandles = new Set(normalizeHandleList(config.excludedProductHandles));\r\n\r\n  function isCartPage() {\r\n    return /\\/cart(?:\\/)?$/i.test(window.location.pathname);\r\n  }\r\n\r\n  let upsellGuardPromise = null;\r\n  let upsellGuardObserver = null;\r\n\r\n  function loadUpsellGuard() {\r\n    if (window.__florameEssentialUpsellGuardLoaded) return Promise.resolve(true);\r\n    if (upsellGuardPromise) return upsellGuardPromise;\r\n    const source = String(config.upsellGuardUrl || '').trim();\r\n    if (!source) return Promise.resolve(false);\r\n\r\n    upsellGuardPromise = new Promise((resolve) => {\r\n      const script = document.createElement('script');\r\n      script.src = source;\r\n      script.async = true;\r\n      script.dataset.florameUpsellGuard = '1';\r\n      script.addEventListener('load', () => resolve(true), { once: true });\r\n      script.addEventListener('error', () => {\r\n        upsellGuardPromise = null;\r\n        resolve(false);\r\n      }, { once: true });\r\n      document.head.appendChild(script);\r\n    });\r\n    return upsellGuardPromise;\r\n  }\r\n\r\n  function observeUpsellSurface() {\r\n    if (!isCartPage() || !document.body || upsellGuardObserver) return;\r\n    const selector = '[data-essential-upsell-element=\"container\"]';\r\n    if (document.querySelector(selector)) {\r\n      loadUpsellGuard();\r\n      return;\r\n    }\r\n    upsellGuardObserver = new MutationObserver(() => {\r\n      if (!document.querySelector(selector)) return;\r\n      upsellGuardObserver.disconnect();\r\n      upsellGuardObserver = null;\r\n      loadUpsellGuard();\r\n    });\r\n    upsellGuardObserver.observe(document.body, { childList: true, subtree: true });\r\n  }\r\n\r\n  function isIOSDevice() {\r\n    const ua = window.navigator.userAgent || '';\r\n    return /iPad|iPhone|iPod/.test(ua) || (/Mac/.test(ua) && 'ontouchend' in document);\r\n  }\r\n\r\n  function getRegularSubtotalCents(entries) {\r\n    return (entries || []).reduce((sum, entry) => {\r\n      const item = entry && entry.item ? entry.item : {};\r\n      const raw = Number(item.final_line_price || item.line_price || item.original_line_price || 0);\r\n      return sum + (Number.isFinite(raw) ? raw : 0);\r\n    }, 0);\r\n  }\r\n\r\n  function normalizeDeliveryType(value) {\r\n    const text = normalizeText(value);\r\n    if (/pickup|ritiro/.test(text)) return 'pickup';\r\n    return 'delivery';\r\n  }\r\n\r\n  function isExplicitlyDisabled(value) {\r\n    if (value === false) return true;\r\n    const text = String(value ?? '').trim().toLowerCase();\r\n    return text === 'false' || text === '0' || text === 'off' || text === 'no' || text === 'disabled';\r\n  }\r\n\r\n  function getCurrentPartnerRouteContext() {\r\n    try {\r\n      return window.FloramePartner && typeof window.FloramePartner.getContext === 'function'\r\n        ? window.FloramePartner.getContext()\r\n        : null;\r\n    } catch (_) {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  function isCurrentPartnerPickupEnabled() {\r\n    const ctx = getCurrentPartnerRouteContext();\r\n    if (!ctx || ctx.active !== true) return false;\r\n\r\n    const partner = window.__floramePartner || null;\r\n    if (!partner || typeof partner !== 'object') return false;\r\n\r\n    const config = partner.storefrontConfig || {};\r\n    return !isExplicitlyDisabled(config.pickupEnabled ?? partner.pickupEnabled);\r\n  }\r\n\r\n  function getCartAttributePartnerSlug(cart) {\r\n    const attrs = cart && cart.attributes && typeof cart.attributes === 'object' ? cart.attributes : {};\r\n    return normalizeHandle(attrs.Partner_Source || attrs.Partner_Slug || attrs.Partner_Source_Slug || '');\r\n  }\r\n\r\n  function getCurrentPartnerRouteSlug() {\r\n    const ctx = getCurrentPartnerRouteContext();\r\n    if (!ctx || ctx.active !== true) return '';\r\n    return normalizeHandle(ctx.partnerSlug || ctx.slug || ctx.partner || '');\r\n  }\r\n\r\n  function getSchedulerDeliveryTypeOverride() {\r\n    if (window.__florameDeliverySchedulerMode) {\r\n      const mode = normalizeDeliveryType(window.__florameDeliverySchedulerMode);\r\n      return mode === 'pickup' && !isCurrentPartnerPickupEnabled() ? 'delivery' : mode;\r\n    }\r\n\r\n    if (window.__florameDeliverySchedulerPickupActive === true) {\r\n      return isCurrentPartnerPickupEnabled() ? 'pickup' : 'delivery';\r\n    }\r\n\r\n    return '';\r\n  }\r\n\r\n  function shouldSyncDeliveryNow() {\r\n    return isCartPage() || getSchedulerDeliveryTypeOverride() === 'pickup';\r\n  }\r\n\r\n  function isPickupCart(cart) {\r\n    const cartSlug = getCartAttributePartnerSlug(cart);\r\n    const routeSlug = getCurrentPartnerRouteSlug();\r\n    if (!cartSlug || !routeSlug || cartSlug !== routeSlug || !isCurrentPartnerPickupEnabled()) return false;\r\n\r\n    const override = getSchedulerDeliveryTypeOverride();\r\n    if (override) return override === 'pickup';\r\n\r\n    const attrs = cart && cart.attributes && typeof cart.attributes === 'object' ? cart.attributes : {};\r\n    return normalizeDeliveryType(attrs.Delivery_Type || attrs['Modalita Consegna'] || attrs.Modalita_Consegna) === 'pickup';\r\n  }\r\n\r\n  function hasPickupPayload(attrs) {\r\n    if (!attrs || typeof attrs !== 'object') return false;\r\n    return normalizeDeliveryType(attrs.Delivery_Type || attrs['Modalita Consegna'] || attrs.Modalita_Consegna) === 'pickup'\r\n      || !!attrs.Pickup_Address\r\n      || !!attrs.Pickup_Partner\r\n      || !!attrs.Pickup_CAP;\r\n  }\r\n\r\n  function clearStalePickupDeliveryAttributes(target) {\r\n    [\r\n      'Data Consegna',\r\n      'Data Consegna (ISO)',\r\n      'Fascia Oraria',\r\n      'Orario Specifico',\r\n      'Destinatario',\r\n      'Indirizzo Consegna',\r\n      'Delivery_Address_V1',\r\n      'Indirizzo_Via',\r\n      'Indirizzo_CAP',\r\n      'Indirizzo_Citta',\r\n      'Indirizzo_Provincia',\r\n      'Telefono',\r\n      'Telefono destinatario',\r\n      'Email destinatario',\r\n      'Recipient_Email',\r\n      'Recipient_Email_Source',\r\n      'Customer_Email',\r\n      'Citofono',\r\n      'Campanello',\r\n      'Note Corriere',\r\n      'Note indirizzo',\r\n      'Messaggio Biglietto',\r\n      'Disegno Biglietto',\r\n      'Biglietto Personalizzato',\r\n      'Modalita biglietto',\r\n      'Ticket_Mode',\r\n      'Font Biglietto',\r\n      'Ticket_Font_ID',\r\n      'Ticket_Renderer_Version',\r\n      'Biglietto Preview URL',\r\n      'Ticket_Preview_URL',\r\n      'Tipo Ordine',\r\n      'Pickup_Address',\r\n      'Pickup_Partner',\r\n      'Pickup_CAP',\r\n      'Delivery_Scheduler_Version',\r\n      'NOTE_ORDINE_RICCA'\r\n    ].forEach((key) => { target[key] = ''; });\r\n    target.Delivery_Type = 'delivery';\r\n    target['Modalita Consegna'] = 'Consegna a domicilio';\r\n  }\r\n\r\n  function pickupContextPending(cart) {\r\n    const attrs = cart?.attributes || {};\r\n    if (!hasPickupPayload(attrs) || !getCartAttributePartnerSlug(cart)) return false;\r\n    const context = getCurrentPartnerRouteContext();\r\n    return !context || (context.active === true && !window.__floramePartner);\r\n  }\r\n\r\n  async function resetStalePickupCart(cart, reason) {\r\n    if (pickupContextPending(cart)) return cart;\r\n    const attrs = cart && cart.attributes && typeof cart.attributes === 'object' ? cart.attributes : {};\r\n    if (!hasPickupPayload(attrs)) return cart;\r\n    const cartSlug = getCartAttributePartnerSlug(cart);\r\n    const routeSlug = getCurrentPartnerRouteSlug();\r\n    const stalePickup = !routeSlug || !cartSlug || cartSlug !== routeSlug || !isCurrentPartnerPickupEnabled();\r\n    if (!stalePickup) return cart;\r\n\r\n    const nextAttributes = Object.assign({}, attrs);\r\n    clearStalePickupDeliveryAttributes(nextAttributes);\r\n    try {\r\n      const updated = await postJson(`${root}cart/update.js`, { attributes: nextAttributes });\r\n      try {\r\n        document.dispatchEvent(new CustomEvent('florame:delivery-stale-pickup-reset', {\r\n          detail: { reason: reason || 'delivery-sync', cartSlug, routeSlug }\r\n        }));\r\n      } catch (_) {}\r\n      return updated || cart;\r\n    } catch (error) {\r\n      console.warn('[Florame Delivery Sync] Reset pickup non valido fallito:', error);\r\n      return cart;\r\n    }\r\n  }\r\n\r\n  function centsFromAmount(value, fallbackCents) {\r\n    const raw = typeof value === 'string' ? value.replace(',', '.').trim() : value;\r\n    const amount = Number(raw);\r\n    if (!Number.isFinite(amount) || amount < 0) return fallbackCents;\r\n    return Math.round(amount * 100);\r\n  }\r\n\r\n  function getApiBase() {\r\n    const themed = window.__florameThemeConfig && window.__florameThemeConfig.apiBase;\r\n    return String(config.apiBase || themed || 'https://us-central1-flower-ai-2d7aa.cloudfunctions.net').replace(/\\/+$/, '');\r\n  }\r\n\r\n  function getCartPartnerSlug(cart) {\r\n    const attrs = cart && cart.attributes && typeof cart.attributes === 'object' ? cart.attributes : {};\r\n    const fromAttr = attrs.Partner_Source || attrs.Partner_Slug || attrs.Partner_Source_Slug || '';\r\n    if (fromAttr) return normalizeHandle(fromAttr);\r\n\r\n    const cartItems = Array.isArray(cart?.items) ? cart.items : [];\r\n    const partnerLine = cartItems.find((item) => {\r\n      const properties = item?.properties && typeof item.properties === 'object' ? item.properties : {};\r\n      return properties._florame_partner_slug || properties.Partner_Source || properties.Partner_Slug;\r\n    });\r\n    if (partnerLine) {\r\n      const properties = partnerLine.properties || {};\r\n      return normalizeHandle(\r\n        properties._florame_partner_slug ||\r\n        properties.Partner_Source ||\r\n        properties.Partner_Slug ||\r\n        ''\r\n      );\r\n    }\r\n\r\n    try {\r\n      const meta = window.FloramePartner && typeof window.FloramePartner.getAttributionMeta === 'function'\r\n        ? window.FloramePartner.getAttributionMeta()\r\n        : null;\r\n      if (meta && meta.partnerSlug) return normalizeHandle(meta.partnerSlug);\r\n    } catch (_) {}\r\n\r\n    const partner = window.__floramePartner || null;\r\n    return normalizeHandle(\r\n      partner?.portal?.partnerSlug ||\r\n      partner?.portal?.tenantSlug ||\r\n      partner?.partnerId ||\r\n      ''\r\n    );\r\n  }\r\n\r\n  async function resolvePartnerContext() {\r\n    if (window.__floramePartner && window.__floramePartner.deliveryPricing) return window.__floramePartner;\r\n    try {\r\n      if (window.FloramePartner && typeof window.FloramePartner.resolvePartner === 'function') {\r\n        return await Promise.race([\r\n          window.FloramePartner.resolvePartner(),\r\n          new Promise((resolve) => window.setTimeout(() => resolve(null), 1600)),\r\n        ]);\r\n      }\r\n    } catch (_) {}\r\n    return window.__floramePartner || null;\r\n  }\r\n\r\n  function readSessionPricing(partnerSlug, now) {\r\n    if (!partnerSlug || partnerSlug === '_global') return null;\r\n    try {\r\n      const cache = JSON.parse(sessionStorage.getItem(PRICING_SESSION_CACHE_KEY) || '{}');\r\n      const entry = cache && typeof cache === 'object' ? cache[partnerSlug] : null;\r\n      const maxAge = Number(config.pricingCacheMs || 0);\r\n      if (!entry || !Number.isFinite(Number(entry.at)) || now - Number(entry.at) >= maxAge) return null;\r\n      const thresholdCents = Number(entry.value?.thresholdCents);\r\n      if (!Number.isFinite(thresholdCents) || thresholdCents < 0) return null;\r\n      return entry;\r\n    } catch (_) {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  function writeSessionPricing(partnerSlugs, pricing, cachedAt) {\r\n    if (!pricing || pricing.source === 'config') return;\r\n    const slugs = Array.from(new Set(\r\n      partnerSlugs\r\n        .map((slug) => normalizeHandle(slug || ''))\r\n        .filter(Boolean)\r\n    ));\r\n    if (!slugs.length) return;\r\n    try {\r\n      const cache = JSON.parse(sessionStorage.getItem(PRICING_SESSION_CACHE_KEY) || '{}');\r\n      const nextCache = cache && typeof cache === 'object' ? cache : {};\r\n      slugs.forEach((slug) => {\r\n        nextCache[slug] = { value: pricing, at: cachedAt };\r\n      });\r\n      sessionStorage.setItem(PRICING_SESSION_CACHE_KEY, JSON.stringify(nextCache));\r\n    } catch (_) {}\r\n  }\r\n\r\n  function pricingValue(settings, fallbackCents, extra) {\r\n    const thresholdCents = centsFromAmount(settings?.freeDeliveryThreshold, fallbackCents);\r\n    return {thresholdCents, freeDeliveryMode: settings?.freeDeliveryMode || (thresholdCents === 0 ? 'always' : 'threshold'), deliveryPriceCents: settings?.deliveryProductPrice != null ? centsFromAmount(settings.deliveryProductPrice, 0) : null, variantId: String(settings?.shopifyVariantId || config.deliveryVariantId || ''), ...extra};\r\n  }\r\n  function chargeRequired(pricing, subtotal, pickup, itemCount) {\r\n    if(pickup || !itemCount || pricing.freeDeliveryMode==='always' || pricing.deliveryPriceCents===0)return false;\r\n    return pricing.freeDeliveryMode==='never' || subtotal < Number(pricing.thresholdCents || 0);\r\n  }\r\n\r\n  async function resolveDeliveryPricing(cart, {fresh = false} = {}) {\r\n    const fallbackCents = Number(config.thresholdCents || 0) || 3000;\r\n    const now = Date.now();\r\n    const requestedPartnerSlug = getCartPartnerSlug(cart) || '_global';\r\n    const cached = pricingCacheByPartner.get(requestedPartnerSlug);\r\n    if (!fresh && cached && now - cached.at < Number(config.pricingCacheMs || 0)) return cached.value;\r\n    const sessionCached = readSessionPricing(requestedPartnerSlug, now);\r\n    if (!fresh && sessionCached) {\r\n      pricingCacheByPartner.set(requestedPartnerSlug, sessionCached);\r\n      return sessionCached.value;\r\n    }\r\n    if (resolvePricingPromise && resolvePricingPromiseKey === requestedPartnerSlug) {\r\n      if (!fresh) return resolvePricingPromise;\r\n      await resolvePricingPromise;\r\n    }\r\n\r\n    resolvePricingPromise = (async () => {\r\n      const partner = await resolvePartnerContext();\r\n      const partnerThreshold = partner?.deliveryPricing?.freeDeliveryThreshold;\r\n      const contextPartnerSlug = normalizeHandle(partner?.portal?.partnerSlug || partner?.partnerSlug || partner?.partnerId || '');\r\n      const contextMatchesCart = requestedPartnerSlug === '_global' || contextPartnerSlug === requestedPartnerSlug;\r\n      if (!fresh && contextMatchesCart && partnerThreshold !== undefined && partnerThreshold !== null && partnerThreshold !== '') {\r\n        return pricingValue(partner.deliveryPricing, fallbackCents, {source:'partner',partnerSlug:normalizeHandle(partner?.portal?.partnerSlug || partner?.partnerId || getCartPartnerSlug(cart))});\r\n      }\r\n\r\n      const url = new URL(getApiBase() + '/portalResolveContext');\r\n      url.searchParams.set('host', window.location.host || '');\r\n      const slug = requestedPartnerSlug === '_global' ? '' : requestedPartnerSlug;\r\n      if (slug) url.searchParams.set('partnerSlug', slug);\r\n\r\n      const response = await fetch(url.toString(), {\r\n        headers: { Accept: 'application/json' },\r\n        credentials: 'omit',\r\n        cache: 'no-store',\r\n      }).catch(() => null);\r\n      const data = response && response.ok ? await response.json().catch(() => null) : null;\r\n      if (fresh && !data) throw new Error('Impossibile verificare il costo di consegna. Riprova.');\r\n      const resolvedPartner = data?.partner || null;\r\n      const resolvedThreshold = resolvedPartner?.deliveryPricing?.freeDeliveryThreshold\r\n        ?? data?.deliveryPricingSettings?.freeDeliveryThreshold;\r\n      return pricingValue(resolvedPartner?.deliveryPricing || data?.deliveryPricingSettings, fallbackCents, {source:resolvedPartner?'partner-api':'global-api',partnerSlug:normalizeHandle(resolvedPartner?.portal?.partnerSlug || slug)});\r\n    })()\r\n      .catch((error) => {\r\n        if (fresh) throw error;\r\n        log('pricing fallback', error);\r\n        return { thresholdCents: fallbackCents, source: 'config', partnerSlug: getCartPartnerSlug(cart) };\r\n      })\r\n      .then((pricing) => {\r\n        const cachedAt = Date.now();\r\n        pricingCacheByPartner.set(requestedPartnerSlug, { value: pricing, at: cachedAt });\r\n        const resolvedPartnerSlug = normalizeHandle(pricing?.partnerSlug || '');\r\n        if (resolvedPartnerSlug && resolvedPartnerSlug !== requestedPartnerSlug) {\r\n          pricingCacheByPartner.set(resolvedPartnerSlug, { value: pricing, at: cachedAt });\r\n        }\r\n        writeSessionPricing([requestedPartnerSlug, resolvedPartnerSlug], pricing, cachedAt);\r\n        return pricing;\r\n      })\r\n      .finally(() => {\r\n        resolvePricingPromise = null;\r\n        resolvePricingPromiseKey = '';\r\n      });\r\n    resolvePricingPromiseKey = requestedPartnerSlug;\r\n\r\n    return resolvePricingPromise;\r\n  }\r\n\r\n  function markNeedsSync() {\r\n    try {\r\n      sessionStorage.setItem(SESSION_FLAG_KEY, '1');\r\n    } catch (error) {\r\n      log('sessionStorage mark failed', error);\r\n    }\r\n  }\r\n\r\n  function clearNeedsSync() {\r\n    try {\r\n      sessionStorage.removeItem(SESSION_FLAG_KEY);\r\n    } catch (error) {\r\n      log('sessionStorage clear failed', error);\r\n    }\r\n  }\r\n\r\n  function hasPendingSyncFlag() {\r\n    try {\r\n      return sessionStorage.getItem(SESSION_FLAG_KEY) === '1';\r\n    } catch (error) {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  async function resolveDeliveryVariantId() {\r\n    if (resolvedVariantId) return resolvedVariantId;\r\n    if (resolveVariantPromise) return resolveVariantPromise;\r\n\r\n    resolveVariantPromise = (async () => {\r\n      const handle = normalizeHandle(config.deliveryProductHandle);\r\n      if (!handle) return null;\r\n\r\n      const response = await fetch(`${root}products/${handle}.js`, {\r\n        headers: { Accept: 'application/json' },\r\n        credentials: 'same-origin',\r\n      });\r\n\r\n      if (!response.ok) {\r\n        throw new Error(`Impossibile caricare /products/${handle}.js`);\r\n      }\r\n\r\n      const product = await response.json();\r\n      const variant =\r\n        (product.variants || []).find((candidate) => candidate.available) ||\r\n        (product.variants || [])[0] ||\r\n        null;\r\n\r\n      resolvedVariantId = variant ? Number(variant.id) : null;\r\n      return resolvedVariantId;\r\n    })()\r\n      .catch((error) => {\r\n        console.warn('[Florame Delivery Sync] Variant ID Consegna non risolto:', error);\r\n        return null;\r\n      })\r\n      .finally(() => {\r\n        resolveVariantPromise = null;\r\n      });\r\n\r\n    return resolveVariantPromise;\r\n  }\r\n\r\n  function invalidateCartReadCache() {\r\n    cartReadGeneration += 1;\r\n    cartReadPromise = null;\r\n    cartReadSnapshot = null;\r\n    cartReadSnapshotAt = 0;\r\n  }\r\n\r\n  async function getCart(options) {\r\n    const force = options?.force === true;\r\n    const cacheMs = Math.max(0, Number(config.cartReadCacheMs) || 0);\r\n    const now = Date.now();\r\n\r\n    if (!force && cartReadPromise) return cartReadPromise;\r\n    if (!force && cartReadSnapshot && now - cartReadSnapshotAt <= cacheMs) {\r\n      return cartReadSnapshot;\r\n    }\r\n\r\n    const generation = cartReadGeneration;\r\n    const request = fetch(`${root}cart.js`, {\r\n      headers: { Accept: 'application/json' },\r\n      credentials: 'same-origin',\r\n      cache: 'no-store',\r\n    }).then(async (response) => {\r\n      if (!response.ok) {\r\n        throw new Error('Impossibile leggere il carrello');\r\n      }\r\n\r\n      const cart = await response.json();\r\n      if (generation === cartReadGeneration) {\r\n        cartReadSnapshot = cart;\r\n        cartReadSnapshotAt = Date.now();\r\n      }\r\n      return cart;\r\n    });\r\n\r\n    cartReadPromise = request;\r\n    try {\r\n      return await request;\r\n    } finally {\r\n      if (cartReadPromise === request) cartReadPromise = null;\r\n    }\r\n  }\r\n\r\n  function isDeliveryItem(item) {\r\n    if (!item) return false;\r\n\r\n    if (resolvedVariantId && Number(item.variant_id) === Number(resolvedVariantId)) {\r\n      return true;\r\n    }\r\n\r\n    const configuredHandle = normalizeHandle(config.deliveryProductHandle);\r\n    const itemHandle =\r\n      normalizeHandle(item.handle) ||\r\n      normalizeHandle(item.url) ||\r\n      normalizeHandle(item.product_handle);\r\n\r\n    if (configuredHandle && itemHandle && itemHandle === configuredHandle) {\r\n      return true;\r\n    }\r\n\r\n    const title = normalizeText(item.product_title || item.title);\r\n    if (config.deliveryTitle && title === normalizeText(config.deliveryTitle)) {\r\n      return true;\r\n    }\r\n    if (/^consegna\\s+(?:a\\s+)?domicilio$/.test(title)) {\r\n      return true;\r\n    }\r\n\r\n    if (item.properties && String(item.properties[INTERNAL_PROPERTY_KEY] || '') === '1') {\r\n      return true;\r\n    }\r\n\r\n    return false;\r\n  }\r\n\r\n  function getItemProductHandle(item) {\r\n    if (!item) return '';\r\n    return normalizeHandle(item.handle)\r\n      || normalizeHandle(item.product_handle)\r\n      || normalizeHandle(item.url)\r\n      || normalizeHandle(item.product_url);\r\n  }\r\n\r\n  function isDeliveryExcludedItem(item) {\r\n    const handle = getItemProductHandle(item);\r\n    return !!handle && excludedProductHandles.has(handle);\r\n  }\r\n\r\n  function getCartStructure(cart) {\r\n    const items = Array.isArray(cart && cart.items) ? cart.items : [];\r\n    const deliveryEntries = [];\r\n    const regularEntries = [];\r\n    const excludedEntries = [];\r\n\r\n    items.forEach((item, index) => {\r\n      const entry = { item, line: index + 1 };\r\n      if (isDeliveryItem(item)) {\r\n        deliveryEntries.push(entry);\r\n      } else if (isDeliveryExcludedItem(item)) {\r\n        excludedEntries.push(entry);\r\n      } else {\r\n        regularEntries.push(entry);\r\n      }\r\n    });\r\n\r\n    return { items, deliveryEntries, regularEntries, excludedEntries };\r\n  }\r\n\r\n  function formatEuroCents(cents) {\r\n    const safeCents = Math.max(0, Math.round(Number(cents) || 0));\r\n    const amount = safeCents / 100;\r\n    const lang = document.documentElement.getAttribute('lang') || navigator.language || 'it-IT';\r\n    try {\r\n      return new Intl.NumberFormat(lang, {\r\n        style: 'currency',\r\n        currency: 'EUR',\r\n        minimumFractionDigits: safeCents % 100 === 0 ? 0 : 2,\r\n        maximumFractionDigits: safeCents % 100 === 0 ? 0 : 2,\r\n      }).format(amount);\r\n    } catch (_) {\r\n      return `${amount.toFixed(safeCents % 100 === 0 ? 0 : 2).replace('.', ',')} EUR`;\r\n    }\r\n  }\r\n\r\n  function isEnglishStorefront() {\r\n    try {\r\n      if (window.FlorameI18n && typeof window.FlorameI18n.getLanguage === 'function') {\r\n        return window.FlorameI18n.getLanguage() === 'en';\r\n      }\r\n    } catch (_) {}\r\n\r\n    const lang = document.documentElement.getAttribute('lang') || navigator.language || '';\r\n    return /^en(?:-|$)/i.test(String(lang));\r\n  }\r\n\r\n  function storefrontText(it, en) {\r\n    return isEnglishStorefront() ? en : it;\r\n  }\r\n\r\n  function freeShippingAlertTargets() {\r\n    const targets = [];\r\n    const drawerHeader = document.querySelector('cart-drawer .drawer__header');\r\n    const cartPageTitle = document.querySelector('cart-items .title-wrapper-with-link');\r\n\r\n    if (drawerHeader) targets.push({ scope: 'drawer', anchor: drawerHeader });\r\n    if (cartPageTitle) targets.push({ scope: 'page', anchor: cartPageTitle });\r\n\r\n    return targets;\r\n  }\r\n\r\n  function ensureFreeShippingAlert(target) {\r\n    const contextRow = target?.scope === 'page' ? target.anchor.querySelector('.florame-cart-context-row') : null;\r\n    const parent = contextRow || (target && target.anchor ? target.anchor.parentElement : null);\r\n    if (!parent) return null;\r\n\r\n    let alert = parent.querySelector(`.florame-free-shipping-alert[data-scope=\"${target.scope}\"]`);\r\n    if (!alert) {\r\n      alert = document.createElement('div');\r\n      alert.className = 'florame-free-shipping-alert';\r\n      alert.dataset.scope = target.scope;\r\n      alert.setAttribute('role', 'status');\r\n      alert.setAttribute('aria-live', 'polite');\r\n    }\r\n\r\n    if (contextRow && alert.parentElement !== contextRow) {\r\n      contextRow.appendChild(alert);\r\n    } else if (!contextRow && alert.previousElementSibling !== target.anchor) {\r\n      target.anchor.insertAdjacentElement('afterend', alert);\r\n    }\r\n\r\n    return alert;\r\n  }\r\n\r\n  function hideFreeShippingAlerts() {\r\n    document.querySelectorAll('.florame-free-shipping-alert').forEach((alert) => {\r\n      alert.hidden = true;\r\n    });\r\n  }\r\n\r\n  function renderFreeShippingAlerts(cart, pricing) {\r\n    const targets = freeShippingAlertTargets();\r\n    if (!targets.length) return;\r\n\r\n    const { regularEntries } = getCartStructure(cart);\r\n    const thresholdCents = Math.max(0, Number(pricing && pricing.thresholdCents) || 0);\r\n    const regularSubtotalCents = getRegularSubtotalCents(regularEntries);\r\n    const hasRegularItems = regularEntries.length > 0;\r\n\r\n    if (!hasRegularItems || (!isPickupCart(cart) && pricing.freeDeliveryMode === 'never' && pricing.deliveryPriceCents !== 0)) {\r\n      hideFreeShippingAlerts();\r\n      return;\r\n    }\r\n\r\n    const pickupCart = isPickupCart(cart);\r\n\r\n    const achieved = pricing.freeDeliveryMode === 'always' || pricing.deliveryPriceCents === 0 || regularSubtotalCents >= thresholdCents;\r\n    const missingCents = Math.max(0, thresholdCents - regularSubtotalCents);\r\n    const progress = thresholdCents > 0\r\n      ? Math.max(8, Math.min(100, Math.round((regularSubtotalCents / thresholdCents) * 100)))\r\n      : 100;\r\n\r\n    targets.forEach((target) => {\r\n      const alert = ensureFreeShippingAlert(target);\r\n      if (!alert) return;\r\n\r\n      alert.hidden = false;\r\n      alert.className = `florame-free-shipping-alert ${pickupCart ? 'is-pickup' : (achieved ? 'is-achieved' : 'is-pending')}`;\r\n      alert.dataset.scope = target.scope;\r\n      alert.style.setProperty('--florame-free-shipping-progress', `${pickupCart ? 100 : progress}%`);\r\n\r\n      const title = pickupCart\r\n        ? storefrontText('Ritiro in negozio gratuito', 'Free in-store pickup')\r\n        : achieved\r\n        ? storefrontText('Consegna gratuita', 'Free delivery')\r\n        : storefrontText(\r\n          `A ${formatEuroCents(thresholdCents)} sblocchi la spedizione gratuita`,\r\n          `Spend ${formatEuroCents(thresholdCents)} to unlock free delivery`\r\n        );\r\n      const detail = pickupCart\r\n        ? storefrontText('Passa dal tuo fiorista.', 'Collect from your florist.')\r\n        : achieved\r\n        ? storefrontText('Sbloccata per il tuo bouquet', 'Unlocked for your bouquet')\r\n        : storefrontText(\r\n          `Ti mancano ancora ${formatEuroCents(missingCents)}.`,\r\n          `${formatEuroCents(missingCents)} left to go.`\r\n        );\r\n\r\n      if (!alert.querySelector('.florame-free-shipping-alert__copy')) alert.innerHTML = `\r\n        <span class=\"florame-free-shipping-alert__icon\" aria-hidden=\"true\">${pickupCart ? PICKUP_STORE_SVG : FREE_SHIPPING_TRUCK_SVG}</span>\r\n        <span class=\"florame-free-shipping-alert__copy\">\r\n          <strong></strong>\r\n          <em></em>\r\n        </span>\r\n        <span class=\"florame-free-shipping-alert__bar\" aria-hidden=\"true\"><i></i></span>\r\n      `;\r\n      const iconKind = pickupCart ? 'pickup' : 'delivery';\r\n      if (alert.dataset.iconKind !== iconKind) {\r\n        alert.querySelector('.florame-free-shipping-alert__icon').innerHTML = pickupCart ? PICKUP_STORE_SVG : FREE_SHIPPING_TRUCK_SVG;\r\n        alert.dataset.iconKind = iconKind;\r\n      }\r\n      const titleNode = alert.querySelector('strong');\r\n      const detailNode = alert.querySelector('em');\r\n      if (titleNode.textContent !== title) titleNode.textContent = title;\r\n      if (detailNode.textContent !== detail) detailNode.textContent = detail;\r\n    });\r\n  }\r\n\r\n  async function updateFreeShippingAlerts(reason, cart) {\r\n    try {\r\n      const currentCart = cart || await getCart();\r\n      const pricing = await resolveDeliveryPricing(currentCart);\r\n      renderFreeShippingAlerts(currentCart, pricing);\r\n    } catch (error) {\r\n      log('free shipping alert fallback', reason, error);\r\n      hideFreeShippingAlerts();\r\n    }\r\n  }\r\n\r\n  function scheduleFreeShippingAlert(reason, delay) {\r\n    window.clearTimeout(freeShippingAlertTimer);\r\n    freeShippingAlertTimer = window.setTimeout(\r\n      () => updateFreeShippingAlerts(reason),\r\n      typeof delay === 'number' ? delay : 140\r\n    );\r\n  }\r\n\r\n  function buildCartSignature(cart) {\r\n    const { items } = getCartStructure(cart);\r\n    return items\r\n      .map((item) => [\r\n        item.key,\r\n        item.variant_id,\r\n        item.quantity,\r\n        isDeliveryItem(item) ? 'D' : (isDeliveryExcludedItem(item) ? 'X' : 'R')\r\n      ].join(':'))\r\n      .join('|');\r\n  }\r\n\r\n  async function postJson(url, payload, attempts = 2) {\r\n    let lastError = null;\r\n    for (let attempt = 1; attempt <= attempts; attempt += 1) {\r\n      try {\r\n        window.__florameDeliverySyncActive = true;\r\n        window.__florameDeliverySyncRecent = Date.now();\r\n        lastMutationAt = Date.now();\r\n        invalidateCartReadCache();\r\n\r\n        const response = await fetch(url, {\r\n          method: 'POST',\r\n          headers: {\r\n            'Content-Type': 'application/json',\r\n            Accept: 'application/json',\r\n          },\r\n          credentials: 'same-origin',\r\n          body: JSON.stringify(payload),\r\n        });\r\n\r\n        if (!response.ok) {\r\n          const text = await response.text().catch(() => '');\r\n          throw new Error(`${response.status} ${text}`);\r\n        }\r\n\r\n        invalidateCartReadCache();\r\n\r\n        return response.json().catch(() => null);\r\n      } catch (error) {\r\n        lastError = error;\r\n        if (attempt < attempts) {\r\n          await new Promise((resolve) => window.setTimeout(resolve, 220 * attempt));\r\n        }\r\n      } finally {\r\n        window.__florameDeliverySyncActive = false;\r\n        window.__florameDeliverySyncRecent = Date.now();\r\n      }\r\n    }\r\n\r\n    throw lastError;\r\n  }\r\n\r\n  async function waitForCartIdle(maxMs = 2200) {\r\n    const start = Date.now();\r\n\r\n    while (Date.now() - start < maxMs) {\r\n      const disabled = document.querySelector('.cart__items--disabled');\r\n      if (!disabled) return;\r\n      await new Promise((resolve) => window.setTimeout(resolve, 80));\r\n    }\r\n  }\r\n\r\n  function dispatchCartRefresh(meta) {\r\n    const passes = Array.isArray(meta && meta.passes) && meta.passes.length\r\n      ? meta.passes\r\n      : isIOSDevice()\r\n      ? config.iosRefreshPasses\r\n      : config.defaultRefreshPasses;\r\n\r\n    document.dispatchEvent(\r\n      new CustomEvent('florame:delivery-cart-refresh', {\r\n        detail: Object.assign(\r\n          {\r\n            at: Date.now(),\r\n            passes,\r\n            cacheBust: true,\r\n          },\r\n          meta || {}\r\n        ),\r\n      })\r\n    );\r\n  }\r\n\r\n  function assertDeliveryState(cart, pricing) {\r\n    const { deliveryEntries, regularEntries } = getCartStructure(cart);\r\n    const pickupCart = isPickupCart(cart);\r\n    const regularSubtotalCents = getRegularSubtotalCents(regularEntries);\r\n    const shouldChargeDelivery = chargeRequired(pricing,regularSubtotalCents,pickupCart,regularEntries.length);\r\n    const deliveryQuantity = deliveryEntries.reduce(\r\n      (sum, entry) => sum + Number(entry?.item?.quantity || 0),\r\n      0\r\n    );\r\n\r\n    if (shouldChargeDelivery && (deliveryQuantity !== 1 || deliveryEntries.some(entry => String(entry.item.variant_id) !== String(pricing.variantId || resolvedVariantId)))) {\r\n      throw new Error('Costo di consegna non sincronizzato. Riprova prima di autorizzare l\u2019ordine.');\r\n    }\r\n    if (!shouldChargeDelivery && deliveryQuantity !== 0) {\r\n      throw new Error('La modalit\u00E0 scelta non coincide con il costo di consegna nel carrello.');\r\n    }\r\n    return cart;\r\n  }\r\n\r\n  async function enforceDeliveryState(reason) {\r\n    await resolveDeliveryVariantId();\r\n\r\n    let firstCart = await getCart();\r\n    firstCart = await resetStalePickupCart(firstCart, reason);\r\n    const firstSignature = buildCartSignature(firstCart);\r\n    const { deliveryEntries, regularEntries } = getCartStructure(firstCart);\r\n    const pricing = await resolveDeliveryPricing(firstCart, {fresh:true});\r\n    resolvedVariantId = Number(pricing.variantId) || null;\r\n    if(resolvedVariantId)window.florameDeliveryConfig = Object.assign({},window.florameDeliveryConfig,{deliveryVariantId:resolvedVariantId});\r\n    if(deliveryEntries.some(entry=>String(entry.item.variant_id)!==String(resolvedVariantId))){\r\n      for(const entry of [...deliveryEntries].sort((a,b)=>b.line-a.line))await postJson(`${root}cart/change.js`,{line:entry.line,quantity:0});\r\n      return enforceDeliveryState(reason);\r\n    }\r\n    const regularSubtotalCents = getRegularSubtotalCents(regularEntries);\r\n    renderFreeShippingAlerts(firstCart, pricing);\r\n    const pickupCart = isPickupCart(firstCart);\r\n    const shouldChargeDelivery = chargeRequired(pricing,regularSubtotalCents,pickupCart,regularEntries.length);\r\n\r\n    let changed = false;\r\n\r\n    if (!shouldChargeDelivery) {\r\n      if (deliveryEntries.length > 0) {\r\n        for (const entry of [...deliveryEntries].sort((a, b) => b.line - a.line)) {\r\n          await postJson(`${root}cart/change.js`, { line: entry.line, quantity: 0 });\r\n          changed = true;\r\n        }\r\n      }\r\n    } else if (deliveryEntries.length === 0) {\r\n      if (!resolvedVariantId) {\r\n        throw new Error('Costo di consegna non disponibile. Il pagamento resta bloccato.');\r\n      } else {\r\n        await postJson(`${root}cart/add.js`, {\r\n          items: [\r\n            {\r\n              id: Number(resolvedVariantId),\r\n              quantity: 1,\r\n              properties: {\r\n                [INTERNAL_PROPERTY_KEY]: '1',\r\n              },\r\n            },\r\n          ],\r\n        });\r\n        changed = true;\r\n      }\r\n    } else {\r\n      const [keeper, ...extras] = deliveryEntries;\r\n\r\n      if (Number(keeper.item.quantity || 0) !== 1) {\r\n        await postJson(`${root}cart/change.js`, {\r\n          line: keeper.line,\r\n          quantity: 1,\r\n        });\r\n        changed = true;\r\n      }\r\n\r\n      for (const extra of [...extras].sort((a, b) => b.line - a.line)) {\r\n        await postJson(`${root}cart/change.js`, {\r\n          line: extra.line,\r\n          quantity: 0,\r\n        });\r\n        changed = true;\r\n      }\r\n    }\r\n\r\n    if (changed) {\r\n      clearNeedsSync();\r\n      await waitForCartIdle();\r\n      dispatchCartRefresh({ reason, mode: 'delivery-synced' });\r\n      await new Promise((resolve) => window.setTimeout(resolve, 220));\r\n      const verifyCart = await getCart();\r\n      renderFreeShippingAlerts(verifyCart, pricing);\r\n      assertDeliveryState(verifyCart, pricing);\r\n      lastCartSignature = buildCartSignature(verifyCart);\r\n      return { changed: true, cart: verifyCart };\r\n    }\r\n\r\n    if (isCartPage() && deliveryEntries.length === 1 && regularEntries.length > 0 && !chargeRequired(pricing, regularSubtotalCents, pickupCart, regularEntries.length)) {\r\n      dispatchCartRefresh({\r\n        reason,\r\n        mode: 'free-delivery-refresh',\r\n      });\r\n    }\r\n\r\n    lastCartSignature = firstSignature;\r\n    clearNeedsSync();\r\n    assertDeliveryState(firstCart, pricing);\r\n    return { changed: false, cart: firstCart };\r\n  }\r\n\r\n  async function syncDelivery(reason, options) {\r\n    const strict = options?.strict === true;\r\n    const verifyOnly = options?.verifyOnly === true;\r\n    const providedCart = options?.cart && typeof options.cart === 'object'\r\n      ? options.cart\r\n      : null;\r\n    if (syncPromise) {\r\n      queuedReason = reason || 'queued';\r\n      try {\r\n        return await syncPromise;\r\n      } catch (error) {\r\n        if (strict) throw error;\r\n        return null;\r\n      }\r\n    }\r\n\r\n    syncInFlight = true;\r\n    syncPromise = (async () => {\r\n      const cart = providedCart || await getCart();\r\n      if (pickupContextPending(cart)) {\r\n        if (strict) throw new Error('Stiamo verificando il ritiro con il fiorista. Riprova tra pochi secondi.');\r\n        return { changed: false, pending: true, cart };\r\n      }\r\n      const signature = buildCartSignature(cart);\r\n      const { deliveryEntries, regularEntries } = getCartStructure(cart);\r\n      const pickupCart = isPickupCart(cart);\r\n      const needsSync = pickupCart\r\n        ? deliveryEntries.length > 0\r\n        : (\r\n          hasPendingSyncFlag() || regularEntries.length === 0\r\n            ? deliveryEntries.length > 0\r\n            : deliveryEntries.length !== 1 || Number((deliveryEntries[0] && deliveryEntries[0].item.quantity) || 0) !== 1\r\n        );\r\n\r\n      // La verifica finale possiede gia il carrello fresco restituito da\r\n      // /cart/update.js. Se il costo consegna e coerente, validalo in-place:\r\n      // niente secondo /cart.js, refresh del tema o mutazione ridondante.\r\n      if (verifyOnly && !needsSync) {\r\n        const pricing = await resolveDeliveryPricing(cart, {fresh:true});\r\n        try { assertDeliveryState(cart, pricing); } catch (_) { return enforceDeliveryState(reason); }\r\n        renderFreeShippingAlerts(cart, pricing);\r\n        lastCartSignature = signature;\r\n        lastEnforceAt = Date.now();\r\n        clearNeedsSync();\r\n        return { changed: false, cart };\r\n      }\r\n\r\n      if (!strict && !needsSync && signature === lastCartSignature && Date.now() - lastMutationAt > 400 && Date.now() - lastEnforceAt < 3000) {\r\n        const pricing = await resolveDeliveryPricing(cart);\r\n        assertDeliveryState(cart, pricing);\r\n        return { changed: false, cart };\r\n      }\r\n\r\n      lastEnforceAt = Date.now();\r\n      return enforceDeliveryState(reason);\r\n    })();\r\n\r\n    try {\r\n      return await syncPromise;\r\n    } catch (error) {\r\n      console.error('[Florame Delivery Sync] Errore sync:', error);\r\n      if (strict) throw error;\r\n      return null;\r\n    } finally {\r\n      syncInFlight = false;\r\n      syncPromise = null;\r\n      if (queuedReason) {\r\n        const nextReason = queuedReason;\r\n        queuedReason = null;\r\n        window.setTimeout(() => syncDelivery(nextReason), 180);\r\n      }\r\n    }\r\n  }\r\n\r\n  function scheduleSync(reason, delay) {\r\n    if (!config.enabled) return;\r\n    window.clearTimeout(scheduleTimer);\r\n    scheduleTimer = window.setTimeout(() => syncDelivery(reason), typeof delay === 'number' ? delay : 120);\r\n  }\r\n\r\n  function patchFetchForProductAdds() {\r\n    const originalFetch = window.fetch ? window.fetch.bind(window) : null;\r\n    if (!originalFetch) return;\r\n\r\n    window.fetch = async function florameDeliveryPatchedFetch(input, init) {\r\n      const requestUrl = typeof input === 'string' ? input : input && input.url ? input.url : '';\r\n      const cartMutation = /\\/cart\\/(?:add|change|update)(?:\\.js)?(?:\\?|$)/i.test(requestUrl);\r\n      if (cartMutation) invalidateCartReadCache();\r\n      const response = await originalFetch(input, init);\r\n\r\n      if (cartMutation && response && response.ok) invalidateCartReadCache();\r\n\r\n      if (/\\/cart\\/add(?:\\.js)?(?:\\?|$)/i.test(requestUrl) && response && response.ok) {\r\n        markNeedsSync();\r\n        scheduleFreeShippingAlert(`fetch:${requestUrl}`, 160);\r\n        if (shouldSyncDeliveryNow()) {\r\n          scheduleSync(`fetch:${requestUrl}`, 120);\r\n        }\r\n      } else if (/\\/cart\\/(?:change|update)(?:\\.js)?(?:\\?|$)/i.test(requestUrl) && response && response.ok) {\r\n        scheduleFreeShippingAlert(`fetch:${requestUrl}`, 160);\r\n        if (shouldSyncDeliveryNow()) {\r\n          scheduleSync(`fetch:${requestUrl}`, 120);\r\n        }\r\n      }\r\n\r\n      return response;\r\n    };\r\n  }\r\n\r\n  function patchXHRForProductAdds() {\r\n    if (!window.XMLHttpRequest) return;\r\n\r\n    const OriginalOpen = XMLHttpRequest.prototype.open;\r\n    const OriginalSend = XMLHttpRequest.prototype.send;\r\n\r\n    XMLHttpRequest.prototype.open = function florameOpen(method, url) {\r\n      this.__florameCartUrl = url;\r\n      return OriginalOpen.apply(this, arguments);\r\n    };\r\n\r\n    XMLHttpRequest.prototype.send = function florameSend() {\r\n      const requestUrl = String(this.__florameCartUrl || '');\r\n      if (/\\/cart\\/(?:add|change|update)(?:\\.js)?(?:\\?|$)/i.test(requestUrl)) {\r\n        invalidateCartReadCache();\r\n      }\r\n      this.addEventListener('load', () => {\r\n        const url = String(this.__florameCartUrl || '');\r\n        if (/\\/cart\\/(?:add|change|update)(?:\\.js)?(?:\\?|$)/i.test(url) && this.status >= 200 && this.status < 300) {\r\n          invalidateCartReadCache();\r\n        }\r\n        if (/\\/cart\\/add(?:\\.js)?(?:\\?|$)/i.test(url) && this.status >= 200 && this.status < 300) {\r\n          markNeedsSync();\r\n          scheduleFreeShippingAlert(`xhr:${url}`, 160);\r\n          if (shouldSyncDeliveryNow()) {\r\n            scheduleSync(`xhr:${url}`, 120);\r\n          }\r\n        } else if (/\\/cart\\/(?:change|update)(?:\\.js)?(?:\\?|$)/i.test(url) && this.status >= 200 && this.status < 300) {\r\n          scheduleFreeShippingAlert(`xhr:${url}`, 160);\r\n          if (shouldSyncDeliveryNow()) {\r\n            scheduleSync(`xhr:${url}`, 120);\r\n          }\r\n        }\r\n      });\r\n\r\n      return OriginalSend.apply(this, arguments);\r\n    };\r\n  }\r\n\r\n  document.addEventListener(\r\n    'submit',\r\n    function onProductFormSubmit(event) {\r\n      const form = event.target;\r\n      if (!form || !(form instanceof HTMLFormElement)) return;\r\n\r\n      const action = String(form.getAttribute('action') || '');\r\n      if (/\\/cart\\/add(?:\\.js)?$/i.test(action)) {\r\n        markNeedsSync();\r\n      }\r\n    },\r\n    true\r\n  );\r\n\r\n  document.addEventListener('florame:cart-updated', () => {\r\n    scheduleFreeShippingAlert('cart-updated', 120);\r\n    if (!shouldSyncDeliveryNow()) return;\r\n    scheduleSync('cart-updated', 90);\r\n  });\r\n\r\n  document.addEventListener('florame:delivery-cart-refresh', () => {\r\n    scheduleFreeShippingAlert('delivery-cart-refresh', 220);\r\n    if (!shouldSyncDeliveryNow()) return;\r\n    lastCartSignature = '';\r\n  });\r\n\r\n  document.addEventListener('florame:partner-ready', () => {\r\n    lastCartSignature = '';\r\n    scheduleFreeShippingAlert('partner-ready', 30);\r\n    if (shouldSyncDeliveryNow()) {\r\n      scheduleSync('partner-ready', 80);\r\n    }\r\n  });\r\n\r\n  document.addEventListener('florame:delivery-mode-changed', (event) => {\r\n    const deliveryType = normalizeDeliveryType(event?.detail?.deliveryType || '');\r\n    lastCartSignature = '';\r\n    scheduleFreeShippingAlert(`delivery-mode:${deliveryType || 'unknown'}`, 20);\r\n    if (deliveryType === 'pickup' || shouldSyncDeliveryNow()) {\r\n      scheduleSync(`delivery-mode:${deliveryType || 'unknown'}`, 20);\r\n    }\r\n  });\r\n\r\n  document.addEventListener('DOMContentLoaded', () => {\r\n    patchFetchForProductAdds();\r\n    patchXHRForProductAdds();\r\n    observeUpsellSurface();\r\n\r\n    if (shouldSyncDeliveryNow()) {\r\n      scheduleSync(hasPendingSyncFlag() ? 'dom-ready-pending' : 'dom-ready', hasPendingSyncFlag() ? 20 : 60);\r\n    }\r\n    scheduleFreeShippingAlert('dom-ready', 120);\r\n  });\r\n\r\n  window.addEventListener('pageshow', () => {\r\n    observeUpsellSurface();\r\n    scheduleFreeShippingAlert('pageshow', 140);\r\n    if (shouldSyncDeliveryNow()) {\r\n      scheduleSync(hasPendingSyncFlag() ? 'pageshow-pending' : 'pageshow', hasPendingSyncFlag() ? 20 : 80);\r\n    }\r\n  });\r\n\r\n  window.addEventListener('focus', () => {\r\n    scheduleFreeShippingAlert('focus', 180);\r\n    if (shouldSyncDeliveryNow()) {\r\n      scheduleSync('focus', 120);\r\n    }\r\n  });\r\n\r\n  document.addEventListener('visibilitychange', () => {\r\n    if (document.visibilityState === 'visible') {\r\n      scheduleFreeShippingAlert('visible', 180);\r\n      if (shouldSyncDeliveryNow()) {\r\n        scheduleSync('visible', 120);\r\n      }\r\n    }\r\n  });\r\n\r\n  window.florameEnsureDeliveryLine = function florameEnsureDeliveryLine(options) {\r\n    if (options?.verifyOnly !== true) markNeedsSync();\r\n    return syncDelivery(options?.reason || 'manual-call', {\r\n      strict: options?.strict !== false,\r\n      verifyOnly: options?.verifyOnly === true,\r\n      cart: options?.cart || null,\r\n    });\r\n  };\r\n})();\r\n"],
  "mappings": "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",
  "names": ["config"]
}
