{
  "version": 3,
  "sources": ["/cdn/shop/t/2/assets/hasat-copilot.js?cb=20260914v7"],
  "sourcesContent": ["/**\n * hasat.market AI Copilot - Vanilla JS Client & Push Drawer Controller\n */\n\n(function () {\n  const API_ENDPOINTS = [\n    'https://api.hasat.market/api/copilot'\n  ];\n\n  let currentApiIndex = 0;\n  function getApiBase() {\n    if (window.HASAT_COPILOT_API) {\n      if (typeof window.HASAT_COPILOT_API === 'string' && window.HASAT_COPILOT_API.includes('projects.thelyflab.com')) {\n        return API_ENDPOINTS[0];\n      }\n      return window.HASAT_COPILOT_API;\n    }\n    if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') {\n      return 'http://localhost:4664/api/copilot';\n    }\n    return API_ENDPOINTS[0];\n  }\n\n  async function fetchWithFallback(endpointPath, options = {}) {\n    let lastError = null;\n    const requestOptions = options;\n\n    for (let i = 0; i < API_ENDPOINTS.length; i++) {\n      const idx = (currentApiIndex + i) % API_ENDPOINTS.length;\n      let base = window.HASAT_COPILOT_API || (\n        window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1'\n          ? 'http://localhost:4664/api/copilot'\n          : API_ENDPOINTS[idx]\n      );\n      if (typeof base === 'string' && base.includes('projects.thelyflab.com')) {\n        base = 'https://api.hasat.market/api/copilot';\n      }\n      try {\n        const url = `${base}${endpointPath}`;\n        const res = await fetch(url, requestOptions);\n        if (res.ok || res.status < 500) {\n          currentApiIndex = idx;\n          return res;\n        }\n        lastError = new Error(`HTTP ${res.status}`);\n      } catch (err) {\n        lastError = err;\n        console.warn(`[Hasat Copilot] Endpoint ${base} failed:`, err);\n      }\n    }\n    throw lastError || new Error('Copilot API u\u00E7 noktas\u0131 yan\u0131t vermedi');\n  }\n\n  const STORAGE_KEY = 'hasat_copilot_session_v1';\n  function createSessionId() {\n    const bytes = new Uint8Array(16);\n    window.crypto.getRandomValues(bytes);\n    return 'hasat_' + Array.from(bytes, byte => byte.toString(16).padStart(2, '0')).join('');\n  }\n  let sessionId = localStorage.getItem(STORAGE_KEY);\n  if (!/^hasat_[a-f0-9]{32}$/i.test(sessionId || '')) sessionId = createSessionId();\n  localStorage.setItem(STORAGE_KEY, sessionId);\n\n  let messages = [];\n  let isStreaming = false;\n  let isMaximized = false;\n  let abortController = null;\n  let wasCopilotOpenBeforeCart = false;\n  let cartRestoreTimer = null;\n\n  // DOM Elemanlar\u0131\n  let launcher, panel, maxBtn, closeBtn, newChatBtn, bodyEl, inputEl, sendBtn, voiceBtn, attachBtn, fileInput, attachPreview, attachThumb, removeAttachBtn;\n\n  function init() {\n    launcher = document.getElementById('hasat-copilot-launcher');\n    panel = document.getElementById('hasat-copilot-panel');\n    maxBtn = document.getElementById('hasat-copilot-max-btn');\n    closeBtn = document.getElementById('hasat-copilot-close-btn');\n    newChatBtn = document.getElementById('hasat-copilot-new-chat-btn');\n    bodyEl = document.getElementById('hasat-copilot-body');\n    inputEl = document.getElementById('hasat-copilot-input');\n    sendBtn = document.getElementById('hasat-copilot-send-btn');\n    voiceBtn = document.getElementById('hasat-copilot-voice-btn');\n    attachBtn = document.getElementById('hasat-copilot-attach-btn');\n    fileInput = document.getElementById('hasat-copilot-file-input');\n    attachPreview = document.getElementById('hasat-copilot-attach-preview');\n    attachThumb = document.getElementById('hasat-copilot-attach-thumb');\n    removeAttachBtn = document.getElementById('hasat-copilot-remove-attach');\n\n    if (!launcher || !panel) return;\n\n    // Olay Dinleyicileri\n    launcher.addEventListener('click', () => togglePanel(true));\n    closeBtn.addEventListener('click', () => togglePanel(false));\n    if (maxBtn) maxBtn.addEventListener('click', toggleMaximize);\n    newChatBtn.addEventListener('click', startNewChat);\n\n    sendBtn.addEventListener('click', submitMessage);\n    inputEl.addEventListener('keydown', (e) => {\n      if (e.key === 'Enter' && !e.shiftKey) {\n        e.preventDefault();\n        submitMessage();\n      }\n    });\n    inputEl.addEventListener('input', () => {\n      inputEl.style.height = 'auto';\n      inputEl.style.height = Math.min(inputEl.scrollHeight, 160) + 'px';\n    });\n\n    // Haz\u0131r Soru \u00C7ipleri (Chips)\n    bindChips();\n\n    // Sesli Dikte\n    setupVoiceRecognition();\n\n    // G\u00F6rsel Y\u00FCkleme\n    setupAttachment();\n\n    // Sayfa Gezinmelerinde State ve Mesaj Ge\u00E7mi\u015Fini Geri Y\u00FCkle\n    restoreChatState();\n\n    // Top Bar (Header) Y\u00FCkseklik Takibi ve Sepet Koordinasyonu\n    updateHeaderOffset();\n    window.addEventListener('scroll', updateHeaderOffset, { passive: true });\n    window.addEventListener('resize', updateHeaderOffset);\n    setupCartCoordination();\n  }\n\n  // --------------------------------------------------------------------------\n  // Top Bar & Header Offset Controller (Asistan\u0131 Top Bar\u0131n Alt\u0131na Konumland\u0131rma)\n  // --------------------------------------------------------------------------\n  function updateHeaderOffset() {\n    const header = document.getElementById('hasat-header') || document.querySelector('.hasat-header');\n    if (header) {\n      const rect = header.getBoundingClientRect();\n      const offset = Math.max(0, Math.round(rect.bottom));\n      document.documentElement.style.setProperty('--hasat-header-offset', `${offset}px`);\n    } else {\n      document.documentElement.style.setProperty('--hasat-header-offset', '80px');\n    }\n  }\n\n  // Sepet \u00C7ekmecesi ve Copilot Koordinasyonu (Sepet a\u00E7\u0131ld\u0131\u011F\u0131nda asistan\u0131 minimize etme)\n  function setupCartCoordination() {\n    function handleCartOpen() {\n      clearTimeout(cartRestoreTimer);\n      if (panel && panel.classList.contains('is-open')) {\n        wasCopilotOpenBeforeCart = true;\n        togglePanel(false);\n      }\n    }\n\n    function handleCartClose() {\n      if (wasCopilotOpenBeforeCart) {\n        wasCopilotOpenBeforeCart = false;\n        clearTimeout(cartRestoreTimer);\n        cartRestoreTimer = setTimeout(() => {\n          const cartDrawer = document.getElementById('hasat-cart-drawer');\n          const isCartActive = (cartDrawer && cartDrawer.classList.contains('active')) || document.body.classList.contains('hasat-cart-open');\n          if (!isCartActive && panel && !panel.classList.contains('is-open')) {\n            togglePanel(true);\n          }\n        }, 260);\n      }\n    }\n\n    // 1. window.hasatOpenCart sarmalama\n    if (typeof window.hasatOpenCart === 'function') {\n      const origHasatOpenCart = window.hasatOpenCart;\n      window.hasatOpenCart = function () {\n        handleCartOpen();\n        return origHasatOpenCart.apply(this, arguments);\n      };\n    } else {\n      let _origOpen = window.hasatOpenCart;\n      Object.defineProperty(window, 'hasatOpenCart', {\n        configurable: true,\n        enumerable: true,\n        get() {\n          return function () {\n            handleCartOpen();\n            if (typeof _origOpen === 'function') return _origOpen.apply(this, arguments);\n          };\n        },\n        set(fn) {\n          _origOpen = fn;\n        }\n      });\n    }\n\n    // 2. window.hasatCloseCart sarmalama\n    if (typeof window.hasatCloseCart === 'function') {\n      const origHasatCloseCart = window.hasatCloseCart;\n      window.hasatCloseCart = function () {\n        const res = origHasatCloseCart.apply(this, arguments);\n        handleCartClose();\n        return res;\n      };\n    } else {\n      let _origClose = window.hasatCloseCart;\n      Object.defineProperty(window, 'hasatCloseCart', {\n        configurable: true,\n        enumerable: true,\n        get() {\n          return function () {\n            let res;\n            if (typeof _origClose === 'function') res = _origClose.apply(this, arguments);\n            handleCartClose();\n            return res;\n          };\n        },\n        set(fn) {\n          _origClose = fn;\n        }\n      });\n    }\n\n    // 3. Header sepet butonuna ve sepet a\u00E7\u0131c\u0131lar\u0131na do\u011Frudan dinleyici (Capture)\n    document.addEventListener('click', (e) => {\n      const cartOpenTrigger = e.target.closest('#cart-icon-bubble, .hasat-cart-btn, [data-open-cart]');\n      if (cartOpenTrigger) {\n        handleCartOpen();\n      }\n\n      const cartCloseTrigger = e.target.closest('#hasat-cart-overlay, .hasat-cart-close-trigger, [data-close-cart]');\n      if (cartCloseTrigger) {\n        handleCartClose();\n      }\n    }, true);\n\n    // 4. Custom events\n    window.addEventListener('hasat:cart:open', handleCartOpen);\n    window.addEventListener('hasat:cart:close', handleCartClose);\n\n    // 5. MutationObserver ile #hasat-cart-drawer active s\u0131n\u0131f\u0131 takibi (garanti \u00F6nlem)\n    const cartDrawer = document.getElementById('hasat-cart-drawer');\n    if (cartDrawer && window.MutationObserver) {\n      const observer = new MutationObserver((mutations) => {\n        for (const m of mutations) {\n          if (m.type === 'attributes' && m.attributeName === 'class') {\n            const isActive = cartDrawer.classList.contains('active');\n            if (isActive) {\n              handleCartOpen();\n            } else if (wasCopilotOpenBeforeCart) {\n              handleCartClose();\n            }\n          }\n        }\n      });\n      observer.observe(cartDrawer, { attributes: true, attributeFilter: ['class'] });\n    }\n  }\n\n  function saveChatState() {\n    try {\n      localStorage.setItem('hasat_copilot_messages', JSON.stringify(messages));\n      localStorage.setItem('hasat_copilot_open', panel && panel.classList.contains('is-open') ? 'true' : 'false');\n      localStorage.setItem('hasat_copilot_maximized', isMaximized ? 'true' : 'false');\n    } catch (e) {}\n  }\n\n  function restoreChatState() {\n    try {\n      const savedMessages = localStorage.getItem('hasat_copilot_messages');\n      if (savedMessages) {\n        const parsed = JSON.parse(savedMessages);\n        if (Array.isArray(parsed) && parsed.length > 0) {\n          messages = parsed;\n          const welcome = bodyEl.querySelector('.hasat-copilot-welcome');\n          if (welcome) welcome.remove();\n          messages.forEach((m, idx) => {\n            const isLatestUser = m.role === 'user' && !messages.slice(idx + 1).some(next => next.role === 'user');\n            appendMessageUI(m.role, m.text, m.data, m.actions, { isLatestUser });\n          });\n        }\n      }\n\n      const wasMaximized = localStorage.getItem('hasat_copilot_maximized') === 'true';\n      if (wasMaximized) {\n        isMaximized = true;\n        document.body.classList.add('hasat-copilot-maximized');\n        if (maxBtn) {\n          maxBtn.classList.add('is-active');\n          maxBtn.textContent = '\u21E4\u21E5';\n        }\n      }\n\n      const wasOpen = localStorage.getItem('hasat_copilot_open') === 'true';\n      if (wasOpen) {\n        togglePanel(true, { immediate: true });\n      }\n    } catch (e) {\n      console.warn('[Hasat Copilot] State restore error:', e);\n    }\n  }\n\n  function bindChips() {\n    document.querySelectorAll('.hasat-copilot-chip').forEach(chip => {\n      chip.addEventListener('click', () => {\n        const text = chip.getAttribute('data-prompt') || chip.textContent.trim();\n        submitMessage(text);\n      });\n    });\n  }\n\n  // --------------------------------------------------------------------------\n  // Push Drawer A\u00E7ma / Kapama (Content Push Controller)\n  // --------------------------------------------------------------------------\n  function togglePanel(open, options = {}) {\n    updateHeaderOffset();\n    if (open) {\n      wasCopilotOpenBeforeCart = false;\n      clearTimeout(cartRestoreTimer);\n\n      // E\u011Fer sepet \u00E7ekmecesi a\u00E7\u0131ksa, asistan a\u00E7\u0131l\u0131rken sepeti kapat\n      if (typeof window.hasatCloseCart === 'function') {\n        window.hasatCloseCart();\n      } else {\n        const overlay = document.getElementById('hasat-cart-overlay');\n        const drawer = document.getElementById('hasat-cart-drawer');\n        if (overlay) overlay.classList.remove('active');\n        if (drawer) drawer.classList.remove('active');\n        document.body.classList.remove('hasat-cart-open');\n      }\n\n      panel.classList.add('is-open');\n      document.body.classList.add('hasat-copilot-open');\n      document.documentElement.classList.add('hasat-copilot-open');\n      launcher.classList.add('is-hidden');\n      launcher.setAttribute('hidden', 'hidden');\n      launcher.style.setProperty('display', 'none', 'important');\n      launcher.style.setProperty('visibility', 'hidden', 'important');\n      launcher.style.setProperty('opacity', '0', 'important');\n      launcher.style.setProperty('pointer-events', 'none', 'important');\n      saveChatState();\n      setTimeout(() => {\n        updateHeaderOffset();\n        if (!options.immediate) inputEl.focus();\n        window.dispatchEvent(new Event('resize'));\n      }, options.immediate ? 10 : 150);\n    } else {\n      panel.classList.remove('is-open');\n      document.body.classList.remove('hasat-copilot-open');\n      document.documentElement.classList.remove('hasat-copilot-open');\n      \n      // Maximize modunu da kapat\n      if (isMaximized) {\n        isMaximized = false;\n        document.body.classList.remove('hasat-copilot-maximized');\n        if (maxBtn) maxBtn.classList.remove('is-active');\n      }\n\n      saveChatState();\n      launcher.classList.remove('is-hidden');\n      launcher.removeAttribute('hidden');\n      launcher.style.removeProperty('display');\n      launcher.style.removeProperty('visibility');\n      launcher.style.removeProperty('opacity');\n      launcher.style.removeProperty('pointer-events');\n      setTimeout(() => {\n        window.dispatchEvent(new Event('resize'));\n      }, 330);\n    }\n  }\n\n  // --------------------------------------------------------------------------\n  // Maximize / Restore (Geni\u015Fletme & \u0130\u00E7eri\u011Fi Tek S\u00FCtuna D\u00FC\u015F\u00FCrme)\n  // --------------------------------------------------------------------------\n  function toggleMaximize() {\n    isMaximized = !isMaximized;\n    document.body.classList.toggle('hasat-copilot-maximized', isMaximized);\n    saveChatState();\n    if (maxBtn) {\n      maxBtn.classList.toggle('is-active', isMaximized);\n      maxBtn.setAttribute('title', isMaximized ? 'Standart Geni\u015Fli\u011Fe D\u00F6n' : 'Geni\u015Flet (Maximize)');\n      maxBtn.textContent = isMaximized ? '\u21E4\u21E5' : '\u2194';\n    }\n    setTimeout(() => {\n      window.dispatchEvent(new Event('resize'));\n    }, 330);\n  }\n\n  function startNewChat() {\n    sessionId = createSessionId();\n    localStorage.setItem(STORAGE_KEY, sessionId);\n    localStorage.removeItem('hasat_copilot_messages');\n    messages = [];\n    bodyEl.innerHTML = `\n      <div class=\"hasat-copilot-welcome\">\n        <div class=\"hasat-copilot-welcome-icon\">\uD83C\uDF31</div>\n        <h5>Hasat Market Dan\u0131\u015Fman\u0131</h5>\n        <p>Do\u011Fal kenevir tekstili, evcil hayvan \u00FCr\u00FCnleri ve kooperatif \u00FCreticilerimiz hakk\u0131nda her \u015Feyi sorabilirsiniz.</p>\n        <div class=\"hasat-copilot-chips\">\n          <button type=\"button\" class=\"hasat-copilot-chip\" data-prompt=\"Do\u011Fal kenevir k\u00F6pek \u00E7i\u011Fneme oyunca\u011F\u0131 ve tasmalar\u0131 g\u00F6ster\">\n            <span>\uD83D\uDC36 Do\u011Fal kenevir k\u00F6pek oyunca\u011F\u0131 & tasma</span>\n            <span>\u2192</span>\n          </button>\n          <button type=\"button\" class=\"hasat-copilot-chip\" data-prompt=\"Kenevir sabunlar\u0131 ve masaj ya\u011Flar\u0131n\u0131n \u00F6zellikleri nelerdir?\">\n            <span>\uD83E\uDDFC So\u011Fuk proses kenevir sabunlar\u0131 & ya\u011Flar</span>\n            <span>\u2192</span>\n          </button>\n          <button type=\"button\" class=\"hasat-copilot-chip\" data-prompt=\"Paye gurme bal ve ar\u0131 \u00FCr\u00FCnleri hakk\u0131nda bilgi ver\">\n            <span>\uD83C\uDF6F Paye gurme bal, propolis & balmumu</span>\n            <span>\u2192</span>\n          </button>\n          <button type=\"button\" class=\"hasat-copilot-chip\" data-prompt=\"El dokuma kenevir \u00E7anta ve ev tekstili koleksiyonunu g\u00F6ster\">\n            <span>\uD83C\uDF3F El dokuma kenevir \u00E7anta & tekstil</span>\n            <span>\u2192</span>\n          </button>\n        </div>\n      </div>\n    `;\n    bindChips();\n  }\n\n  function appendMessageUI(role, text, data = null, actions = null, options = {}) {\n    const welcome = bodyEl.querySelector('.hasat-copilot-welcome');\n    if (welcome) welcome.remove();\n\n    const msgEl = document.createElement('div');\n    msgEl.className = `hasat-copilot-msg is-${role}`;\n    if (options.isLatestUser) {\n      msgEl.classList.add('is-latest-user');\n    }\n\n    // JSON veya kod bloklar\u0131n\u0131 temizle\n    const cleanText = (text || '')\n      .replace(/```json\\s*[\\s\\S]*?\\s*```/g, '')\n      .replace(/```[\\s\\S]*?```/g, '')\n      .replace(/\\n\\s*\\{\\s*\"(actions|recommendedProducts)\"[\\s\\S]*$/g, '')\n      .trim();\n\n    let contentHtml = formatMarkdown(cleanText);\n\n    // \u00D6nerilen \u00DCr\u00FCnler (Recommended Products)\n    if (data && data.recommendedProducts && data.recommendedProducts.length > 0) {\n      contentHtml += '<div class=\"hasat-copilot-products\">';\n      data.recommendedProducts.forEach(prod => {\n        const prodUrl = prod.url || `/products/${escapeHtml(prod.handle)}`;\n        contentHtml += `\n          <div class=\"hasat-copilot-product-card\" data-url=\"${escapeHtml(prodUrl)}\" style=\"cursor: pointer;\">\n            <div class=\"hasat-copilot-product-thumb-wrap\">\n              ${prod.image ? `<img class=\"hasat-copilot-product-thumb\" src=\"${escapeHtml(prod.image)}\" alt=\"${escapeHtml(prod.title)}\" onerror=\"this.style.display='none'; if(this.nextElementSibling) this.nextElementSibling.style.display='flex';\" />` : ''}\n              <div class=\"hasat-copilot-product-thumb hasat-copilot-thumb-fallback\" style=\"${prod.image ? 'display:none;' : 'display:flex;'}align-items:center;justify-content:center;\">\uD83C\uDF3F</div>\n            </div>\n            <div class=\"hasat-copilot-product-meta\">\n              <div class=\"hasat-copilot-product-title\">${escapeHtml(prod.title)}</div>\n              <div class=\"hasat-copilot-product-price\">${escapeHtml(prod.price || '')}</div>\n            </div>\n            <button type=\"button\" class=\"hasat-copilot-product-btn\" data-url=\"${escapeHtml(prodUrl)}\">\u0130ncele</button>\n          </div>\n        `;\n      });\n      contentHtml += '</div>';\n\n      // DPP Traceability & Source Badges (Dinamik ve Ger\u00E7ek\u00E7i DPP Rozetleri)\n      const dynamicBadges = [];\n      data.recommendedProducts.forEach(prod => {\n        if (Array.isArray(prod.badges) && prod.badges.length > 0) {\n          prod.badges.forEach(b => { if (!dynamicBadges.includes(b)) dynamicBadges.push(b); });\n        } else {\n          const title = (prod.title || '').toLowerCase();\n          const handle = (prod.handle || '').toLowerCase();\n\n          // 1. Materyal / \u0130\u00E7erik\n          if (title.includes('kenevir') || handle.includes('kenevir')) {\n            if (title.includes('sabun') || handle.includes('sabun')) {\n              dynamicBadges.push('\uD83E\uDDFC So\u011Fuk Proses Kenevir');\n            } else if (title.includes('masaj') || title.includes('yag') || handle.includes('yag')) {\n              dynamicBadges.push('\uD83D\uDCA7 So\u011Fuk S\u0131k\u0131m Kenevir Ya\u011F\u0131');\n            } else if (title.includes('canta') || title.includes('runner') || title.includes('bolster') || title.includes('kilim') || title.includes('yastik')) {\n              dynamicBadges.push('\uD83C\uDF3F %100 Do\u011Fal Kenevir Dokuma');\n            } else if (title.includes('tohum') || title.includes('protein')) {\n              dynamicBadges.push('\uD83C\uDF3E Yerli Ata Tohumu Kenevir');\n            } else {\n              dynamicBadges.push('\uD83C\uDF3F %100 Do\u011Fal Kenevir');\n            }\n          } else if (title.includes('bal') || title.includes('polen') || handle.includes('bal') || handle.includes('paye')) {\n            dynamicBadges.push('\uD83C\uDF6F %100 Ham & Katk\u0131s\u0131z Ar\u0131 \u00DCr\u00FCn\u00FC');\n            dynamicBadges.push('\uD83D\uDC1D Mu\u011Fla Paye Ar\u0131l\u0131klar\u0131');\n          } else if (title.includes('sigla') || handle.includes('sigla')) {\n            dynamicBadges.push('\uD83C\uDF32 Mu\u011Fla S\u0131\u011Fla A\u011Fac\u0131 \u00D6z\u00FC');\n          } else if (title.includes('tutsu') || handle.includes('tutsu')) {\n            dynamicBadges.push('\uD83E\uDEB5 Do\u011Fal \u00C7ubuk T\u00FCts\u00FC');\n          } else if (title.includes('seramik') || handle.includes('seramik')) {\n            dynamicBadges.push('\uD83C\uDFFA Zanaatkar El Yap\u0131m\u0131 Seramik');\n          } else {\n            dynamicBadges.push('\uD83C\uDF31 Do\u011Fal Kooperatif \u00DCretimi');\n          }\n\n          // 2. Ger\u00E7ek Parti Kodu\n          const skuClean = (prod.sku || prod.gtin || prod.handle || '').replace(/^hasat-?/i, '').replace(/^kh-?/i, '').replace(/[^a-zA-Z0-9]/g, '').slice(0, 8).toUpperCase();\n          if (skuClean) {\n            dynamicBadges.push(`\uD83C\uDFF7\uFE0F Parti: HK-${skuClean}-26`);\n          }\n        }\n      });\n\n      const uniqueBadges = Array.from(new Set(dynamicBadges)).slice(0, 4);\n      if (uniqueBadges.length > 0) {\n        contentHtml += '<div class=\"hasat-copilot-sources\">';\n        uniqueBadges.forEach(b => {\n          contentHtml += `<span class=\"hasat-source-badge\">${escapeHtml(b)}</span>`;\n        });\n        contentHtml += '</div>';\n      }\n    }\n\n    // Aksiyon Butonlar\u0131 (Action Buttons)\n    if (actions && actions.length > 0) {\n      contentHtml += '<div class=\"hasat-copilot-actions\">';\n      actions.forEach(act => {\n        const encodedAct = encodeURIComponent(JSON.stringify(act));\n        contentHtml += `\n          <button type=\"button\" class=\"hasat-copilot-action-btn\" data-action=\"${encodedAct}\">\n            \u26A1 ${escapeHtml(act.label || act.name)}\n          </button>\n        `;\n      });\n      contentHtml += '</div>';\n    }\n\n    // BUI Message Actions Toolbar (Hover Aksiyon Bar\u0131)\n    if (role === 'user') {\n      contentHtml += `\n        <div class=\"hasat-copilot-msg-actions\">\n          <button type=\"button\" class=\"hasat-copilot-action-btn-sm btn-edit\" title=\"Soruyu D\u00FCzenle\">\n            \u270F\uFE0F <span>D\u00FCzenle</span>\n          </button>\n          <button type=\"button\" class=\"hasat-copilot-action-btn-sm btn-copy\" title=\"Soruyu Kopyala\">\n            \uD83D\uDCCB <span>Kopyala</span>\n          </button>\n        </div>\n      `;\n    } else {\n      contentHtml += `\n        <div class=\"hasat-copilot-msg-actions\">\n          <button type=\"button\" class=\"hasat-copilot-action-btn-sm btn-copy\" title=\"Cevab\u0131 Kopyala\">\n            \uD83D\uDCCB <span>Kopyala</span>\n          </button>\n          <button type=\"button\" class=\"hasat-copilot-action-btn-sm btn-retry\" title=\"Yeniden Yan\u0131tla\">\n            \uD83D\uDD04 <span>Yeniden Dene</span>\n          </button>\n          <div class=\"hasat-copilot-feedback-group\">\n            <button type=\"button\" class=\"hasat-copilot-action-btn-sm icon-only btn-thumb-up\" title=\"Faydal\u0131\">\uD83D\uDC4D</button>\n            <button type=\"button\" class=\"hasat-copilot-action-btn-sm icon-only btn-thumb-down\" title=\"Yetersiz\">\uD83D\uDC4E</button>\n          </div>\n        </div>\n      `;\n    }\n\n    msgEl.innerHTML = `<div class=\"hasat-copilot-bubble\">${contentHtml}</div>`;\n    bodyEl.appendChild(msgEl);\n\n    // Kopyalama Butonu Olay\u0131\n    const copyBtn = msgEl.querySelector('.btn-copy');\n    if (copyBtn) {\n      copyBtn.addEventListener('click', async () => {\n        try {\n          await navigator.clipboard.writeText(cleanText);\n          copyBtn.innerHTML = '\u2713 Kopyaland\u0131';\n          copyBtn.classList.add('copied');\n          setTimeout(() => {\n            copyBtn.innerHTML = '\uD83D\uDCCB <span>Kopyala</span>';\n            copyBtn.classList.remove('copied');\n          }, 2000);\n        } catch (_) {\n          showToast('Metin panoya kopyalanamad\u0131');\n        }\n      });\n    }\n\n    // Soruyu D\u00FCzenleme Olay\u0131 (Kullan\u0131c\u0131 mesaj\u0131 input alan\u0131na geri aktar\u0131l\u0131r)\n    const editBtn = msgEl.querySelector('.btn-edit');\n    if (editBtn) {\n      editBtn.addEventListener('click', () => {\n        if (inputEl) {\n          inputEl.value = cleanText;\n          inputEl.focus();\n          inputEl.scrollIntoView({ behavior: 'smooth' });\n          showToast('Soru d\u00FCzenleme kutusuna aktar\u0131ld\u0131.');\n        }\n      });\n    }\n\n    // Yeniden Deneme Olay\u0131 (Son kullan\u0131c\u0131 sorusu tekrar g\u00F6nderilir)\n    const retryBtn = msgEl.querySelector('.btn-retry');\n    if (retryBtn) {\n      retryBtn.addEventListener('click', () => {\n        const lastUser = [...messages].reverse().find(m => m.role === 'user');\n        if (lastUser && lastUser.text) {\n          submitMessage(lastUser.text);\n        } else {\n          showToast('Yinelenecek soru bulunamad\u0131.');\n        }\n      });\n    }\n\n    // Geri Bildirim Olaylar\u0131 (Thumbs Up / Down)\n    const thumbUpBtn = msgEl.querySelector('.btn-thumb-up');\n    const thumbDownBtn = msgEl.querySelector('.btn-thumb-down');\n    if (thumbUpBtn && thumbDownBtn) {\n      thumbUpBtn.addEventListener('click', () => {\n        thumbUpBtn.classList.toggle('active');\n        thumbDownBtn.classList.remove('active');\n        if (thumbUpBtn.classList.contains('active')) {\n          showToast('Geri bildiriminiz i\u00E7in te\u015Fekk\u00FCrler! \uD83C\uDF31');\n        }\n      });\n      thumbDownBtn.addEventListener('click', () => {\n        thumbDownBtn.classList.toggle('active');\n        thumbUpBtn.classList.remove('active');\n        if (thumbDownBtn.classList.contains('active')) {\n          showToast('Geri bildiriminiz kaydedildi.');\n        }\n      });\n    }\n\n    // \u00DCr\u00FCn kart\u0131 t\u0131klama olaylar\u0131 (Kart\u0131n herhangi bir yerine bas\u0131ld\u0131\u011F\u0131nda reload olmadan yumu\u015Fak ge\u00E7i\u015F yapar)\n    msgEl.querySelectorAll('.hasat-copilot-product-card').forEach(card => {\n      card.addEventListener('click', (e) => {\n        const url = card.getAttribute('data-url');\n        if (url) {\n          e.preventDefault();\n          softNavigate(url);\n        }\n      });\n    });\n\n    // Aksiyon t\u0131klama olaylar\u0131n\u0131 ba\u011Fla\n    msgEl.querySelectorAll('.hasat-copilot-action-btn').forEach(btn => {\n      btn.addEventListener('click', () => {\n        try {\n          const raw = btn.getAttribute('data-action') || '{}';\n          let act;\n          try {\n            act = JSON.parse(decodeURIComponent(raw));\n          } catch (_) {\n            act = JSON.parse(raw);\n          }\n          executeBrowserAction(act);\n        } catch (e) {\n          console.error('Aksiyon parse hatas\u0131:', e);\n        }\n      });\n    });\n\n    bodyEl.scrollTop = bodyEl.scrollHeight;\n    return msgEl;\n  }\n\n  // --------------------------------------------------------------------------\n  // Ponytail Minimalist Soft Navigation (S\u0131f\u0131r Reload - Sadece #MainContent De\u011Fi\u015Fimi)\n  // --------------------------------------------------------------------------\n  function isSafeUrl(url) {\n    if (!url || typeof url !== 'string') return false;\n    const clean = url.trim();\n    if (clean.startsWith('//') || clean.toLowerCase().startsWith('javascript:') || clean.toLowerCase().startsWith('data:')) {\n      return false;\n    }\n    if (clean.startsWith('/')) return true;\n    try {\n      const parsed = new URL(clean, window.location.origin);\n      return parsed.origin === window.location.origin || parsed.hostname === 'hasat.market' || parsed.hostname === 'www.hasat.market';\n    } catch (_) {\n      return false;\n    }\n  }\n\n  async function softNavigate(url) {\n    if (!url || !isSafeUrl(url)) return;\n    const targetPath = url.replace('https://hasat.market', '');\n    if (window.location.pathname === targetPath || window.location.href === url) {\n      window.scrollTo({ top: 0, behavior: 'smooth' });\n      return;\n    }\n\n    try {\n      showToast('\u0130\u00E7erik y\u00FCkleniyor...');\n      const res = await fetch(url, { headers: { 'X-Requested-With': 'XMLHttpRequest' } });\n      if (!res.ok) throw new Error(`HTTP ${res.status}`);\n      const html = await res.text();\n      const doc = new DOMParser().parseFromString(html, 'text/html');\n      const newMain = doc.getElementById('MainContent');\n      const curMain = document.getElementById('MainContent');\n\n      if (newMain && curMain) {\n        curMain.innerHTML = newMain.innerHTML;\n        document.title = doc.title || document.title;\n        window.history.pushState({}, '', url);\n        window.scrollTo({ top: 0, behavior: 'smooth' });\n\n        // Yeni i\u00E7erikteki script etiketlerini canl\u0131ya ge\u00E7ir\n        curMain.querySelectorAll('script').forEach(s => {\n          if (s.src) {\n            const ns = document.createElement('script');\n            Array.from(s.attributes).forEach(a => ns.setAttribute(a.name, a.value));\n            document.head.appendChild(ns);\n          }\n        });\n\n        document.dispatchEvent(new CustomEvent('page:loaded', { detail: { url } }));\n        showToast('\u2705 G\u00F6r\u00FCnt\u00FCleniyor');\n        return;\n      }\n    } catch (err) {\n      console.warn('[Hasat Copilot] Soft navigation fallback to hard reload:', err);\n    }\n    if (isSafeUrl(url)) {\n      window.location.href = url;\n    }\n  }\n\n  window.addEventListener('popstate', () => {\n    if (window.location.pathname) {\n      softNavigate(window.location.pathname + window.location.search);\n    }\n  });\n\n  // --------------------------------------------------------------------------\n  // Browser Tool Bridge (Taray\u0131c\u0131 Eylemleri)\n  // --------------------------------------------------------------------------\n  function executeBrowserAction(action) {\n    if (!action) return;\n    const name = action.name || action.tool;\n    const args = action.args || {};\n\n    console.log('[Hasat Copilot] Executing browser action:', name, args);\n\n    // 1. Sayfa Y\u00F6nlendirme (Soft Navigation & Security Sandbox)\n    if (name === 'navigate_page' || args.clientAction === 'navigate') {\n      let targetUrl = args.url || (args.handle ? `/products/${args.handle}` : null);\n      if (targetUrl) {\n        // G\u00FCvenlik do\u011Frulamas\u0131: javascript:, data:, protocol-relative // engelle\n        if (isSafeUrl(targetUrl)) {\n          softNavigate(targetUrl);\n        } else {\n          console.warn('[Hasat Copilot Security] Engellenen g\u00FCvensiz y\u00F6nlendirme hedefi:', targetUrl);\n        }\n      }\n    }\n\n    // 2. Sayfa \u0130\u00E7i Noktaya Kayd\u0131rma (Scroll & Focus)\n    if (name === 'scroll_to_element' || args.clientAction === 'scroll_and_highlight') {\n      const selector = args.selector || '#ShowroomSection';\n      const targetEl = document.querySelector(selector);\n      if (targetEl) {\n        targetEl.scrollIntoView({ behavior: 'smooth', block: 'center' });\n        targetEl.classList.add('hasat-highlight-pulse');\n        setTimeout(() => targetEl.classList.remove('hasat-highlight-pulse'), 3000);\n        showToast('\u0130lgili b\u00F6l\u00FCme kayd\u0131r\u0131ld\u0131.');\n      } else {\n        showToast('Hedef b\u00F6l\u00FCm bu sayfada bulunamad\u0131.');\n      }\n    }\n\n    // 3. Vitrin Filtresi Uygulama\n    if (name === 'apply_filter' || args.clientAction === 'filter_vitrine') {\n      const category = (args.category || '').toLowerCase();\n      const filterBtn = document.querySelector(`[data-filter-category=\"${category}\"]`) || document.querySelector(`.category-tab[data-tab=\"${category}\"]`);\n      if (filterBtn) {\n        filterBtn.click();\n        showToast(`\"${category}\" kategorisi filtrelendi.`);\n      }\n    }\n\n    // 4. Sepete Ekleme (Shopify AJAX API)\n    if (name === 'add_to_cart' || args.clientAction === 'add_to_cart') {\n      addToShopifyCart(args);\n    }\n  }\n\n  function addToShopifyCart({ variantId, handle, quantity = 1 }) {\n    showToast('\u00DCr\u00FCn sepete ekleniyor...');\n\n    const payload = variantId ? { id: variantId, quantity } : { id: handle, quantity };\n\n    fetch('/cart/add.js', {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },\n      body: JSON.stringify(payload)\n    })\n      .then(res => res.json())\n      .then(cartItem => {\n        showToast('\u2705 \u00DCr\u00FCn sepete eklendi!');\n        if (typeof window.hasatRefreshCartDrawer === 'function') {\n          window.hasatRefreshCartDrawer();\n        }\n        if (typeof window.hasatOpenCart === 'function') {\n          window.hasatOpenCart();\n        } else if (window.theme && typeof window.theme.openCartDrawer === 'function') {\n          window.theme.openCartDrawer();\n        } else {\n          document.dispatchEvent(new CustomEvent('cart:updated', { detail: cartItem }));\n        }\n      })\n      .catch(err => {\n        console.warn('Shopify cart direct add fallback:', err);\n        if (handle) {\n          window.location.href = `/products/${handle}`;\n        }\n      });\n  }\n\n  // --------------------------------------------------------------------------\n  // SSE Streaming Mesajla\u015Fma\n  // --------------------------------------------------------------------------\n  async function submitMessage(promptOverride = null) {\n    const text = (typeof promptOverride === 'string' && promptOverride.trim())\n      ? promptOverride.trim()\n      : inputEl.value.trim();\n    if (!text || isStreaming) return;\n\n    if (!promptOverride) {\n      inputEl.value = '';\n      inputEl.style.height = 'auto';\n    }\n\n    // \u00D6nceki is-latest-user i\u015Faretlerini kald\u0131r ve yenisini ekle\n    bodyEl.querySelectorAll('.hasat-copilot-msg.is-latest-user').forEach(el => el.classList.remove('is-latest-user'));\n\n    appendMessageUI('user', text, null, null, { isLatestUser: true });\n    messages.push({ role: 'user', text });\n    saveChatState();\n\n    // Typing UI (\u0130lk ger\u00E7ek token gelene kadar ekranda kal\u0131r, bo\u015Fluk hissi olu\u015Fmaz)\n    const typingEl = document.createElement('div');\n    typingEl.className = 'hasat-copilot-msg is-assistant hasat-copilot-typing-msg';\n    typingEl.innerHTML = `\n      <div class=\"hasat-copilot-bubble\">\n        <div class=\"hasat-copilot-typing\"><span></span><span></span><span></span></div>\n      </div>\n    `;\n    bodyEl.appendChild(typingEl);\n    bodyEl.scrollTop = bodyEl.scrollHeight;\n\n    isStreaming = true;\n    sendBtn.disabled = true;\n    abortController = new AbortController();\n\n    let fullAnswer = '';\n    let streamData = null;\n    let streamActions = null;\n    let streamingMsgEl = null;\n    let bubbleEl = null;\n    let isStructuringPhase = false;\n\n    function ensureStreamingBubble() {\n      if (!streamingMsgEl) {\n        if (typingEl && typingEl.parentNode) typingEl.remove();\n        streamingMsgEl = document.createElement('div');\n        streamingMsgEl.className = 'hasat-copilot-msg is-assistant';\n        streamingMsgEl.innerHTML = `<div class=\"hasat-copilot-bubble\"></div>`;\n        bodyEl.appendChild(streamingMsgEl);\n        bubbleEl = streamingMsgEl.querySelector('.hasat-copilot-bubble');\n      }\n    }\n\n    function updateStreamingDisplay() {\n      if (!bubbleEl) return;\n      let displayRaw = fullAnswer;\n      let hasBlock = isStructuringPhase;\n\n      const codeFenceIdx = displayRaw.indexOf('```');\n      if (codeFenceIdx !== -1) {\n        displayRaw = displayRaw.substring(0, codeFenceIdx).trim();\n        hasBlock = true;\n      }\n      const jsonStandaloneIdx = displayRaw.search(/\\n\\s*\\{\\s*\"(actions|recommendedProducts)\"/);\n      if (jsonStandaloneIdx !== -1) {\n        displayRaw = displayRaw.substring(0, jsonStandaloneIdx).trim();\n        hasBlock = true;\n      }\n\n      let html = formatMarkdown(displayRaw);\n      if (hasBlock) {\n        html += `\n          <div class=\"hasat-copilot-inline-loading\">\n            <div class=\"hasat-copilot-typing\"><span></span><span></span><span></span></div>\n            <span class=\"hasat-loading-label\">\u00DCr\u00FCn \u00F6nerileri ve butonlar haz\u0131rlan\u0131yor...</span>\n          </div>\n        `;\n      }\n      bubbleEl.innerHTML = html;\n    }\n\n    try {\n      const response = await fetchWithFallback('/stream', {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json',\n          'Accept': 'text/event-stream'\n        },\n        body: JSON.stringify({\n          message: text,\n          sessionId: sessionId,\n          history: messages.slice(-8)\n        }),\n        signal: abortController.signal\n      });\n\n      if (!response.ok) {\n        throw new Error(`Sunucu yan\u0131t vermedi: ${response.status}`);\n      }\n\n      const reader = response.body.getReader();\n      const decoder = new TextDecoder('utf-8');\n      let buffer = '';\n\n      while (true) {\n        const { value, done } = await reader.read();\n        if (done) break;\n\n        buffer += decoder.decode(value, { stream: true });\n        const events = buffer.split('\\n\\n');\n        buffer = events.pop() || '';\n\n        for (const raw of events) {\n          if (!raw.trim()) continue;\n          let event = 'message';\n          let dataStr = '';\n\n          for (const line of raw.split('\\n')) {\n            if (line.startsWith('event:')) event = line.slice(6).trim();\n            else if (line.startsWith('data:')) dataStr = line.slice(5).trim();\n          }\n\n          if (event === 'status') {\n            try {\n              const st = JSON.parse(dataStr);\n              if (st.phase === 'structuring') {\n                isStructuringPhase = true;\n                if (bubbleEl) updateStreamingDisplay();\n              }\n            } catch (_) {}\n          }\n\n          if (event === 'token') {\n            let tokenText = '';\n            try {\n              const parsed = JSON.parse(dataStr);\n              tokenText = parsed.text || '';\n            } catch (_) {\n              tokenText = dataStr;\n            }\n\n            if (tokenText) {\n              fullAnswer += tokenText;\n              ensureStreamingBubble();\n              updateStreamingDisplay();\n              bodyEl.scrollTop = bodyEl.scrollHeight;\n            }\n          }\n\n          if (event === 'data') {\n            try { streamData = JSON.parse(dataStr); } catch (_) {}\n          }\n\n          if (event === 'actions') {\n            try { streamActions = JSON.parse(dataStr); } catch (_) {}\n          }\n\n          if (event === 'done') {\n            try {\n              const doneData = JSON.parse(dataStr);\n              if (doneData.text) fullAnswer = doneData.text;\n              if (doneData.data) streamData = doneData.data;\n              if (doneData.actions) streamActions = doneData.actions;\n            } catch (_) {}\n          }\n        }\n      }\n\n      // Ak\u0131\u015F bitti; ge\u00E7ici elemanlar\u0131 kald\u0131r\u0131p as\u0131l UI'y\u0131 temizce bas\n      if (typingEl && typingEl.parentNode) typingEl.remove();\n      if (streamingMsgEl && streamingMsgEl.parentNode) streamingMsgEl.remove();\n\n      const cleanFinalText = fullAnswer\n        .replace(/```json\\s*[\\s\\S]*?\\s*```/g, '')\n        .replace(/```[\\s\\S]*?```/g, '')\n        .replace(/\\n\\s*\\{\\s*\"(actions|recommendedProducts)\"[\\s\\S]*$/g, '')\n        .trim();\n\n      appendMessageUI('assistant', cleanFinalText, streamData, streamActions);\n      messages.push({ role: 'assistant', text: cleanFinalText, data: streamData, actions: streamActions });\n      saveChatState();\n\n      // Otomatik aksiyon \u00E7al\u0131\u015Ft\u0131rma (model hemen y\u00F6nlendirmek istemi\u015Fse)\n      if (streamActions && streamActions.length === 1 && streamActions[0].autoExecute) {\n        executeBrowserAction(streamActions[0]);\n      }\n\n    } catch (err) {\n      if (typingEl && typingEl.parentNode) typingEl.remove();\n      if (streamingMsgEl && streamingMsgEl.parentNode) streamingMsgEl.remove();\n      if (err.name !== 'AbortError') {\n        appendMessageUI('assistant', '\u00DCzg\u00FCn\u00FCm, \u015Fu anda yan\u0131t olu\u015Ftururken ge\u00E7ici bir ba\u011Flant\u0131 sorunu olu\u015Ftu. L\u00FCtfen tekrar deneyin.');\n      }\n    } finally {\n      isStreaming = false;\n      sendBtn.disabled = false;\n    }\n  }\n\n  // --------------------------------------------------------------------------\n  // Sesli Dikte (Speech Recognition)\n  // --------------------------------------------------------------------------\n  function setupVoiceRecognition() {\n    const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;\n    if (!SpeechRecognition || !voiceBtn) {\n      if (voiceBtn) voiceBtn.style.display = 'none';\n      return;\n    }\n\n    const recognition = new SpeechRecognition();\n    recognition.lang = 'tr-TR';\n    recognition.continuous = false;\n    recognition.interimResults = false;\n\n    let recording = false;\n\n    voiceBtn.addEventListener('click', () => {\n      if (recording) {\n        recognition.stop();\n      } else {\n        try {\n          recognition.start();\n          recording = true;\n          voiceBtn.classList.add('is-recording');\n        } catch (_) {}\n      }\n    });\n\n    recognition.onresult = (event) => {\n      const transcript = event.results[0][0].transcript;\n      inputEl.value = (inputEl.value ? inputEl.value + ' ' : '') + transcript;\n      inputEl.focus();\n    };\n\n    recognition.onend = () => {\n      recording = false;\n      voiceBtn.classList.remove('is-recording');\n    };\n\n    recognition.onerror = () => {\n      recording = false;\n      voiceBtn.classList.remove('is-recording');\n    };\n  }\n\n  // --------------------------------------------------------------------------\n  // G\u00F6rsel Y\u00FCkleme / Foto\u011Fraf\n  // --------------------------------------------------------------------------\n  function setupAttachment() {\n    if (!attachBtn || !fileInput) return;\n\n    attachBtn.addEventListener('click', () => fileInput.click());\n\n    fileInput.addEventListener('change', () => {\n      const file = fileInput.files[0];\n      if (!file) return;\n\n      const reader = new FileReader();\n      reader.onload = (e) => {\n        if (attachPreview && attachThumb) {\n          attachThumb.src = e.target.result;\n          attachPreview.classList.add('has-file');\n        }\n      };\n      reader.readAsDataURL(file);\n    });\n\n    if (removeAttachBtn) {\n      removeAttachBtn.addEventListener('click', () => {\n        fileInput.value = '';\n        if (attachPreview) attachPreview.classList.remove('has-file');\n      });\n    }\n  }\n\n  // --------------------------------------------------------------------------\n  // Basit Markdown Parser\n  // --------------------------------------------------------------------------\n  function formatMarkdown(text) {\n    if (!text) return '';\n    let html = escapeHtml(text);\n    html = html.replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>');\n    html = html.replace(/\\*(.*?)\\*/g, '<em>$1</em>');\n    html = html.replace(/^\\s*-\\s+(.*)$/gm, '<li>$1</li>');\n    html = html.replace(/(<li>.*<\\/li>)/s, '<ul>$1</ul>');\n    html = html.split('\\n\\n').map(p => p.startsWith('<ul>') ? p : `<p>${p.replace(/\\n/g, '<br/>')}</p>`).join('');\n    return html;\n  }\n\n  function escapeHtml(str) {\n    if (!str) return '';\n    return String(str)\n      .replace(/&/g, '&amp;')\n      .replace(/</g, '&lt;')\n      .replace(/>/g, '&gt;')\n      .replace(/\"/g, '&quot;')\n      .replace(/'/g, '&#39;');\n  }\n\n  function showToast(msg) {\n    const toast = document.createElement('div');\n    toast.style.cssText = 'position:fixed;bottom:32px;left:32px;background:#2d5a27;color:#fff;padding:10px 18px;border-radius:30px;font-size:13px;font-weight:600;z-index:999999;box-shadow:0 8px 24px rgba(0,0,0,0.2);animation:hasatFadeIn 0.3s ease;';\n    toast.textContent = msg;\n    document.body.appendChild(toast);\n    setTimeout(() => {\n      toast.style.opacity = '0';\n      toast.style.transition = 'opacity 0.4s ease';\n      setTimeout(() => toast.remove(), 400);\n    }, 2500);\n  }\n\n  // Sayfa y\u00FCklendi\u011Finde ba\u015Flat\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    init();\n  }\n})();\n"],
  "mappings": "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",
  "names": ["cartDrawer"]
}
