{
  "version": 3,
  "sources": ["/cdn/shop/t/244/assets/assistant-service-lead.js?t=1793266055"],
  "sourcesContent": ["(() => {\n  \"use strict\";\n\n  const DEFAULT_EMAIL = \"hello@thediscovery.ai\";\n  const DEFAULT_UPLOAD_BASE = \"https://api.productadvisorai.com\";\n\n  function normalizeTenant(value) {\n    const tenant = String(value || \"\").trim().toLowerCase();\n    if (!tenant || tenant === \"discoveryai_llc\") return \"discovery_ai_llc\";\n    return tenant;\n  }\n\n  async function compressImage(file, maxDimension = 1600, quality = 0.85) {\n    if (!file || !file.type || !file.type.startsWith(\"image/\")) return file;\n\n    return new Promise((resolve) => {\n      const img = new Image();\n      const url = URL.createObjectURL(file);\n\n      img.onload = () => {\n        URL.revokeObjectURL(url);\n        let { width, height } = img;\n\n        if (width > maxDimension || height > maxDimension) {\n          if (width > height) {\n            height = Math.round((height * maxDimension) / width);\n            width = maxDimension;\n          } else {\n            width = Math.round((width * maxDimension) / height);\n            height = maxDimension;\n          }\n        }\n\n        const canvas = document.createElement(\"canvas\");\n        canvas.width = width;\n        canvas.height = height;\n        canvas.getContext(\"2d\").drawImage(img, 0, 0, width, height);\n\n        canvas.toBlob(\n          (blob) => {\n            if (!blob) {\n              resolve(file);\n              return;\n            }\n\n            const cleanName =\n              (file.name || \"photo.jpg\").replace(/\\.[^/.]+$/, \"\") + \".jpg\";\n            resolve(\n              new File([blob], cleanName, {\n                type: \"image/jpeg\",\n                lastModified: Date.now(),\n              }),\n            );\n          },\n          \"image/jpeg\",\n          quality,\n        );\n      };\n\n      img.onerror = () => {\n        URL.revokeObjectURL(url);\n        resolve(file);\n      };\n\n      img.src = url;\n    });\n  }\n\n  async function uploadPhoto(file, tenant) {\n    if (!file) return null;\n\n    const imageFile = await compressImage(file);\n    const uploadData = new FormData();\n    uploadData.append(\"files\", imageFile, imageFile.name || file.name || \"photo.jpg\");\n    uploadData.append(\"tenant\", normalizeTenant(tenant));\n\n    const uploadBase =\n      window.SERVICE_UPLOAD_API_URL ||\n      window.DiscoveryAIServiceUploadApiBase ||\n      DEFAULT_UPLOAD_BASE;\n\n    const response = await fetch(\n      `${String(uploadBase).replace(/\\/$/, \"\")}/api/upload-service-photo`,\n      {\n        method: \"POST\",\n        body: uploadData,\n      },\n    );\n\n    if (!response.ok) {\n      const errorData = await response.json().catch(() => ({}));\n      throw new Error(\n        errorData.detail || `GCS upload failed (${response.status})`,\n      );\n    }\n\n    const data = await response.json();\n    const photoUrl = Array.isArray(data?.photo_urls) ? data.photo_urls[0] : null;\n    if (!photoUrl) throw new Error(\"GCS upload returned no photo URL\");\n\n    console.log(\"[Discovery-AI] Service photo uploaded to GCS:\", photoUrl);\n    return photoUrl;\n  }\n\n  async function submitLead({\n    tenant,\n    name,\n    phone,\n    email,\n    service,\n    notes,\n    file,\n    product,\n    pageUrl,\n  }) {\n    const destination =\n      window.DiscoveryAIAssistantLeadEmail || DEFAULT_EMAIL;\n\n    let photoUrl = null;\n    if (file) {\n      photoUrl = await uploadPhoto(file, tenant);\n    }\n\n    const formData = new FormData();\n    formData.append(\"name\", name || \"Not provided\");\n    formData.append(\"email\", email || \"Not Provided (Phone contact only)\");\n    formData.append(\"phone\", phone || \"Not provided\");\n    formData.append(\"service\", service || \"Service Request\");\n    formData.append(\n      \"message\",\n      notes || `Service Request for ${service || \"Service Request\"}`,\n    );\n\n    if (photoUrl) formData.append(\"photo\", photoUrl);\n    if (pageUrl) formData.append(\"page_url\", pageUrl);\n\n    if (product?.title) formData.append(\"product\", product.title);\n    if (product?.url) {\n      try {\n        formData.append(\n          \"product_url\",\n          new URL(product.url, window.location.origin).toString(),\n        );\n      } catch (_) {\n        formData.append(\"product_url\", String(product.url));\n      }\n    }\n\n    formData.append(\"_replyto\", email || destination);\n    formData.append(\n      \"_subject\",\n      `New Assistant Service Request - ${service || \"Service Request\"}${photoUrl ? \" (With Photo)\" : \"\"}`,\n    );\n    formData.append(\"_captcha\", \"false\");\n\n    const response = await fetch(\n      `https://formsubmit.co/ajax/${encodeURIComponent(destination)}`,\n      {\n        method: \"POST\",\n        body: formData,\n        headers: { Accept: \"application/json\" },\n      },\n    );\n\n    const data = await response.json().catch(() => ({}));\n    console.log(\"[Discovery-AI] FormSubmit response:\", response.status, data);\n\n    const success =\n      response.ok && (data.success === true || data.success === \"true\");\n\n    return {\n      success,\n      status: response.status,\n      data,\n      photoUrl,\n      activationRequired:\n        data?.success === false &&\n        /activation/i.test(String(data?.message || \"\")),\n    };\n  }\n\n  window.DiscoveryAIAssistantLead = Object.freeze({\n    submit: submitLead,\n    uploadPhoto,\n  });\n})();\n"],
  "mappings": "CAAC,IAAM,CACL,aAEA,MAAM,cAAgB,wBAChB,oBAAsB,mCAE5B,SAAS,gBAAgB,MAAO,CAC9B,MAAM,OAAS,OAAO,OAAS,EAAE,EAAE,KAAK,EAAE,YAAY,EACtD,MAAI,CAAC,QAAU,SAAW,kBAA0B,mBAC7C,MACT,CAEA,eAAe,cAAc,KAAM,aAAe,KAAM,QAAU,IAAM,CACtE,MAAI,CAAC,MAAQ,CAAC,KAAK,MAAQ,CAAC,KAAK,KAAK,WAAW,QAAQ,EAAU,KAE5D,IAAI,QAAS,SAAY,CAC9B,MAAM,IAAM,IAAI,MACV,IAAM,IAAI,gBAAgB,IAAI,EAEpC,IAAI,OAAS,IAAM,CACjB,IAAI,gBAAgB,GAAG,EACvB,GAAI,CAAE,MAAO,MAAO,EAAI,KAEpB,MAAQ,cAAgB,OAAS,gBAC/B,MAAQ,QACV,OAAS,KAAK,MAAO,OAAS,aAAgB,KAAK,EACnD,MAAQ,eAER,MAAQ,KAAK,MAAO,MAAQ,aAAgB,MAAM,EAClD,OAAS,eAIb,MAAM,OAAS,SAAS,cAAc,QAAQ,EAC9C,OAAO,MAAQ,MACf,OAAO,OAAS,OAChB,OAAO,WAAW,IAAI,EAAE,UAAU,IAAK,EAAG,EAAG,MAAO,MAAM,EAE1D,OAAO,OACJ,MAAS,CACR,GAAI,CAAC,KAAM,CACT,QAAQ,IAAI,EACZ,MACF,CAEA,MAAM,WACH,KAAK,MAAQ,aAAa,QAAQ,YAAa,EAAE,EAAI,OACxD,QACE,IAAI,KAAK,CAAC,IAAI,EAAG,UAAW,CAC1B,KAAM,aACN,aAAc,KAAK,IAAI,CACzB,CAAC,CACH,CACF,EACA,aACA,OACF,CACF,EAEA,IAAI,QAAU,IAAM,CAClB,IAAI,gBAAgB,GAAG,EACvB,QAAQ,IAAI,CACd,EAEA,IAAI,IAAM,GACZ,CAAC,CACH,CAEA,eAAe,YAAY,KAAM,OAAQ,CACvC,GAAI,CAAC,KAAM,OAAO,KAElB,MAAM,UAAY,MAAM,cAAc,IAAI,EACpC,WAAa,IAAI,SACvB,WAAW,OAAO,QAAS,UAAW,UAAU,MAAQ,KAAK,MAAQ,WAAW,EAChF,WAAW,OAAO,SAAU,gBAAgB,MAAM,CAAC,EAEnD,MAAM,WACJ,OAAO,wBACP,OAAO,iCACP,oBAEI,SAAW,MAAM,MACrB,GAAG,OAAO,UAAU,EAAE,QAAQ,MAAO,EAAE,CAAC,4BACxC,CACE,OAAQ,OACR,KAAM,UACR,CACF,EAEA,GAAI,CAAC,SAAS,GAAI,CAChB,MAAM,UAAY,MAAM,SAAS,KAAK,EAAE,MAAM,KAAO,CAAC,EAAE,EACxD,MAAM,IAAI,MACR,UAAU,QAAU,sBAAsB,SAAS,MAAM,GAC3D,CACF,CAEA,MAAM,KAAO,MAAM,SAAS,KAAK,EAC3B,SAAW,MAAM,QAAQ,MAAM,UAAU,EAAI,KAAK,WAAW,CAAC,EAAI,KACxE,GAAI,CAAC,SAAU,MAAM,IAAI,MAAM,kCAAkC,EAEjE,eAAQ,IAAI,gDAAiD,QAAQ,EAC9D,QACT,CAEA,eAAe,WAAW,CACxB,OACA,KACA,MACA,MACA,QACA,MACA,KACA,QACA,OACF,EAAG,CACD,MAAM,YACJ,OAAO,+BAAiC,cAE1C,IAAI,SAAW,KACX,OACF,SAAW,MAAM,YAAY,KAAM,MAAM,GAG3C,MAAM,SAAW,IAAI,SAcrB,GAbA,SAAS,OAAO,OAAQ,MAAQ,cAAc,EAC9C,SAAS,OAAO,QAAS,OAAS,mCAAmC,EACrE,SAAS,OAAO,QAAS,OAAS,cAAc,EAChD,SAAS,OAAO,UAAW,SAAW,iBAAiB,EACvD,SAAS,OACP,UACA,OAAS,uBAAuB,SAAW,iBAAiB,EAC9D,EAEI,UAAU,SAAS,OAAO,QAAS,QAAQ,EAC3C,SAAS,SAAS,OAAO,WAAY,OAAO,EAE5C,SAAS,OAAO,SAAS,OAAO,UAAW,QAAQ,KAAK,EACxD,SAAS,IACX,GAAI,CACF,SAAS,OACP,cACA,IAAI,IAAI,QAAQ,IAAK,OAAO,SAAS,MAAM,EAAE,SAAS,CACxD,CACF,MAAY,CACV,SAAS,OAAO,cAAe,OAAO,QAAQ,GAAG,CAAC,CACpD,CAGF,SAAS,OAAO,WAAY,OAAS,WAAW,EAChD,SAAS,OACP,WACA,mCAAmC,SAAW,iBAAiB,GAAG,SAAW,gBAAkB,EAAE,EACnG,EACA,SAAS,OAAO,WAAY,OAAO,EAEnC,MAAM,SAAW,MAAM,MACrB,8BAA8B,mBAAmB,WAAW,CAAC,GAC7D,CACE,OAAQ,OACR,KAAM,SACN,QAAS,CAAE,OAAQ,kBAAmB,CACxC,CACF,EAEM,KAAO,MAAM,SAAS,KAAK,EAAE,MAAM,KAAO,CAAC,EAAE,EACnD,eAAQ,IAAI,sCAAuC,SAAS,OAAQ,IAAI,EAKjE,CACL,QAHA,SAAS,KAAO,KAAK,UAAY,IAAQ,KAAK,UAAY,QAI1D,OAAQ,SAAS,OACjB,KACA,SACA,mBACE,MAAM,UAAY,IAClB,cAAc,KAAK,OAAO,MAAM,SAAW,EAAE,CAAC,CAClD,CACF,CAEA,OAAO,yBAA2B,OAAO,OAAO,CAC9C,OAAQ,WACR,WACF,CAAC,CACH,GAAG",
  "names": []
}
