{
  "version": 3,
  "sources": ["/cdn/shop/t/5/assets/manual-autocomplete.js?version=26.19"],
  "sourcesContent": ["\nimport { getSlug, preloadSecondaryImage, renderProductTile, setupImageSwapObserver, getFocusableElements, trapFocus, enableFocusTrap, disableFocusTrap } from './custom-utils.js';\nimport { isMobileBreakpoint } from './utilities.js';\n\nconst isMobile = isMobileBreakpoint();\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    // Utility: Get scroll buttons\n    function getScrollButtons() {\n        return {\n            left: document.querySelector('.quicklinks-scroll-left'),\n            right: document.querySelector('.quicklinks-scroll-right'),\n        };\n    }\n\n    // Utility: Set scroll button visibility\n    function setScrollButtonsVisibility(visible) {\n        const { left, right } = getScrollButtons();\n        // Use global d-none class for hiding, remove for showing\n        [left, right].forEach(btn => {\n            if (!btn) return;\n            if (visible) {\n                btn.classList.remove('d-none');\n            } else {\n                btn.classList.add('d-none');\n            }\n        });\n    }\n\n    // Utility: Toggle visibility for d-none/d-inline-flex\n    function toggleVisibility(elem, visible) {\n        if (!elem) return;\n        elem.classList.toggle('d-none', !visible);\n        elem.classList.toggle('d-inline-flex', visible);\n    }\n    \n    // Check for the library immediately\n    const { autocomplete, getAlgoliaResults } = window['@algolia/autocomplete-js'];\n    \n    if (!autocomplete) {\n        return; // Stop execution if the library isn't there\n    }\n\n    // 1. Initialize the Algolia Search Client\n    const searchClient = algoliasearch(\n        window.algolia_application_id,              // **REQUIRED:** Your Application ID\n        window.algolia_search_key  // **REQUIRED:** Your Search-Only API Key (NEVER use the Admin Key)\n    );\n\n    // 2. Initialize the Autocomplete Component\n\n    // Place the autocomplete container after the close button\n    const closeBtn = document.getElementById('algolia-modal-close');\n    const input = document.getElementById('autocomplete-0-input');\n    const dialog = document.querySelector('.search-modal__content.dialog-modal');\n    const results = document.getElementById('algolia-modal-results');\n    const heading = document.getElementById('algolia-modal-heading');\n    heading?.classList.add('hide')\n    document.getElementById('algolia-modal-viewall-top')?.classList.add('hide');\n    const viewAllTop = document.getElementById('algolia-viewall-top');\n    viewAllTop?.classList.add('link')\n    const viewAllBottom = document.getElementById('algolia-viewall-bottom');\n\n    \n\n    // --- Close Modal Functionality --\n    function resetSearchModalState() {\n        // Clear input value using Algolia Autocomplete setter\n        if (instance && typeof instance.setQuery === 'function') {\n            instance.setQuery('');\n            if (typeof instance.refresh === 'function') instance.refresh();\n        } else if (input && 'value' in input) {\n            input.value = '';\n        }\n        // Hide view all buttons\n        if (viewAllTop) {\n            toggleVisibility(viewAllTop, false);\n        }\n        if (viewAllBottom) {\n            toggleVisibility(viewAllBottom, false);\n        }\n        // Reset heading\n        if (heading) heading.textContent = 'Most Popular Searches';\n        if (results) results.innerHTML = '';\n        // Disable focus trap on close\n        disableFocusTrap(dialog);\n    }\n\n    // Close the modal immediately on page load\n    if (dialog && typeof dialog.close === 'function') dialog.close();\n    document.body.classList.remove('modal-open');\n    document.body.style.top = '';\n\n    let blurTimeout;\n\n    async function loadEmptyStateFallback(query) {\n        const resultsContainer = document.getElementById('algolia-modal-results');\n\n        if (!resultsContainer) return;\n\n        // Clear product area before injecting fallback\n        resultsContainer.innerHTML = \"\";\n\n        // 1\uFE0F\u20E3 Fetch RECENTLY ORDERED PRODUCTS\n        const recent = await searchClient\n            .initIndex(window.algolia_purchase_index)\n            .search(\"\", {\n                hitsPerPage: 6,\n                filters: \"inventory_available:true OR product_type:'Gift Cards'\",\n            });\n\n        // Render product tiles inside wrapper div\n        const recentHTML = recent.hits\n            .map(hit => {\n                if(!isMobile) {\n                    preloadSecondaryImage(hit.handle);\n                }\n                return renderProductTile(hit);\n            })\n            .join(\"\");\n\n        resultsContainer.innerHTML = `<div id=\"algolia-modal-search-results\">${recentHTML}</div>`;\n        // \u2B50 CALL IMAGE SWAP SETUP AFTER PRODUCT RENDERING (Active Search Query) \u2B50\n        if(!isMobile) {\n            setupImageSwapObserver();\n        }  \n        \n        // Debounce blur: only blur if user hasn't typed for 500ms\n        const inputEl = document.getElementById('autocomplete-0-input');\n        if (inputEl) {\n            clearTimeout(blurTimeout);\n            blurTimeout = setTimeout(() => {\n                // Only blur if input is not focused (user not typing)\n                    inputEl.blur();\n                \n            }, 2000);\n        }\n    }\n    closeBtn.onclick = function () {\n        resetSearchModalState();\n        if (dialog && typeof dialog.close === 'function') {\n            dialog.close();\n        }\n        document.body.classList.remove('modal-open');\n        document.body.style.top = '';\n    };\n\n    // Enable focus trap when modal is opened\n    if (dialog) {\n        const observer = new MutationObserver(() => {\n            if (dialog.hasAttribute('open')) {\n                enableFocusTrap(dialog);\n            } else {\n                disableFocusTrap(dialog);\n            }\n        });\n        observer.observe(dialog, { attributes: true, attributeFilter: ['open'] });\n        // Also enable on load if already open\n        if (dialog.hasAttribute('open')) enableFocusTrap(dialog);\n    }\n\n    dialog && dialog.addEventListener('click', function(event) {\n        if (event.target === dialog) {\n            resetSearchModalState();\n        }\n    });\n    // Create a wrapper for autocomplete\n    let autocompleteWrapper = document.getElementById('aa-autocomplete-wrapper');\n    if (!autocompleteWrapper) {\n        autocompleteWrapper = document.createElement('div');\n        autocompleteWrapper.id = 'aa-autocomplete-wrapper';\n        closeBtn.insertAdjacentElement('afterend', autocompleteWrapper);\n    }\n    const instance = autocomplete({\n        container: '#aa-autocomplete-wrapper',\n        placeholder: 'Search products...',\n        panelContainer: document.getElementById('algolia-modal-results'),\n        openOnFocus: true,\n        insights: true,\n        autoFocus: true,\n        detachedMediaQuery: 'none',\n        debug: true,\n        onSubmit({ state }) {\n            const query = state.query && state.query.trim();\n            if (!query) {\n                if (event && typeof event.preventDefault === 'function') {\n                    event.preventDefault();\n                }\n                input?.focus();\n                if (instance && typeof instance.setQuery === 'function') {\n                    instance.setQuery('');\n                    if (typeof instance.refresh === 'function') instance.refresh();\n                }\n                return false;\n            }\n            if (query) {\n                window.location.href = '/search?q=' + encodeURIComponent(query);\n                if (instance && typeof instance.setQuery === 'function') {\n                    if (typeof instance.refresh === 'function') instance.refresh();\n                }\n                setTimeout(() => {\n                    closeBtn?.click();\n                }, 20);\n                return false;\n            }\n        },\n        onStateChange({ state }) {\n            // Only update quicklinks if the input field is focused\n            const inputEl = document.getElementById('autocomplete-0-input');\n            if (inputEl && document.activeElement === inputEl) {\n                // Build collectionsBySource from state\n                const collectionsBySource = {\n                    products: [],\n                    purchase_empty: [],\n                    suggestions: [],\n                    empty_suggestions: []\n                };\n                if (state && state.collections) {\n                    state.collections.forEach(col => {\n                        if (col.source.sourceId === 'suggestions') {\n                            collectionsBySource.suggestions = col.items;\n                        }\n                        if (col.source.sourceId === 'products') {\n                            collectionsBySource.products = col.items;\n                        }\n                        if (col.source.sourceId === 'purchase_empty') {\n                            collectionsBySource.purchase_empty = col.items;\n                        }\n                        if (col.source.sourceId === 'empty_suggestions') {\n                            collectionsBySource.empty_suggestions = col.items;\n                        }\n                    });\n                }\n\n                // Pass a new state object with collectionsBySource\n                updateQuicklinksFromState({ collectionsBySource });\n            }\n        },\n        getSources({ query }) {\n            let errorMsg = document.getElementById('algolia-modal-error');\n            if (!errorMsg) {\n                errorMsg = document.createElement('div');\n                errorMsg.id = 'algolia-modal-error';\n                errorMsg.textContent = '';\n                errorMsg.className='hide';\n                const headerRow = document.querySelector('.algolia-modal-header-row');\n                if (headerRow && headerRow.parentNode) {\n                    headerRow.parentNode.insertBefore(errorMsg, headerRow);\n                }\n            }\n            // if (errorMsg) errorMsg.remove();\n            // Update heading based on query\n            if (heading) {\n                if (query && query.trim()) {\n                    heading.textContent = 'Suggestions';\n                    if (viewAllTop) {\n                        toggleVisibility(viewAllTop, true);\n                        viewAllTop.href = '/search?q=' + encodeURIComponent(query);\n                    }\n                    if (viewAllBottom) {\n                        toggleVisibility(viewAllBottom, true);\n                        viewAllBottom.href = '/search?q=' + encodeURIComponent(query);\n                    }\n                } else {\n                    heading.textContent = '';\n                    if (viewAllTop) {\n                        toggleVisibility(viewAllTop, false);\n                    }\n                    if (viewAllBottom) {\n                        toggleVisibility(viewAllBottom, false);\n                    }\n                }\n            }\n            function getSuggestionsSource(query='') {\n                return {\n                    sourceId: 'suggestions',\n                    async getItems() {\n                        return getAlgoliaResults({\n                            searchClient,\n                            queries: [\n                                {\n                                    indexName: window.algolia_query_suggestions_index,\n                                    query,\n                                    params: {\n                                        hitsPerPage: 15,\n                                        attributesToHighlight: [\n                                            'query'\n                                        ],\n                                        attributesToSnippet: ['title:10'],\n                                        snippetEllipsisText: '\u2026',\n                                    },\n                                },\n                            ],\n                        });\n                    },\n                    templates: {\n                        item() {},\n                        noResults() {},\n                    },\n                };\n            }\n            function getNoResultsSuggestionsSource() {\n                return {\n                    sourceId: 'empty_suggestions',\n                    async getItems() {\n                        return getAlgoliaResults({\n                            searchClient,\n                            queries: [\n                                {\n                                    indexName: window.algolia_query_suggestions_index,\n                                    params: {\n                                        hitsPerPage: 15,\n                                        attributesToHighlight: [\n                                            'query'\n                                        ],\n                                        attributesToSnippet: ['title:10'],\n                                        snippetEllipsisText: '\u2026',\n                                    },\n                                },\n                            ],\n                        });\n                    },\n                    templates: {\n                        item() {},\n                        noResults() {},\n                    },\n                };\n            }\n            if (!query || !query.trim()) {\n                // Show purchase products when query is empty\n                return [\n                    {\n                        sourceId: 'purchase',\n                        getItemInputValue: () => \"\",\n \n                        async getItems() {\n                            return getAlgoliaResults({\n                                searchClient,\n                                queries: [\n                                    {\n                                        indexName: window.algolia_purchase_index,\n                                        query,\n                                        params: {\n                                            hitsPerPage: 6,\n                                            filters: \"inventory_available:true OR product_type:'Gift Cards'\",\n                                        },\n                                    },\n                                ],\n                            });\n                        },\n                        templates: {\n                            item({ item, html }) {\n                                dialog?.classList.remove('no-results-found');\n                                if (heading) heading.textContent = 'Most Popular Searches';\n                                if (viewAllTop) {\n                                    toggleVisibility(viewAllTop, false);\n                                }\n                                if (viewAllBottom) {\n                                    toggleVisibility(viewAllBottom, false);\n                                }\n                                let errorMsg = document.getElementById('algolia-modal-error');\n                                errorMsg?.classList?.add('hide');\n                                // Remove fallback wrapper if present before rendering autocomplete results\n                                const wrapper = document.getElementById('algolia-modal-search-results');\n                                if (wrapper) wrapper.remove();\n                                if(!isMobile) {\n                                    preloadSecondaryImage(item.handle);\n                                }\n                                const rendered = html([renderProductTile(item,true)]);\n                                // \u2B50 ADDED: Explicit DOM Cleanup BEFORE setupImageSwapObserver \u2B50\n                                // This targets the specific element that was just inserted (rendered)\n                                const newHitElement = document.querySelector(`[data-handle=\"${item.handle}\"]`); \n                                if (newHitElement) {\n                                    // 1. Remove the hover class immediately if it somehow persisted\n                                    newHitElement.removeAttribute('data-hoverInit');\n                                    // 2. Clear any lingering content inside the placeholder\n                                    const placeholder = newHitElement.querySelector('.secondary-image-placeholder');\n                                    if (placeholder) {\n                                        placeholder.innerHTML = '';\n                                        placeholder.removeAttribute('data-image-loaded');\n                                    }\n                                }\n                                // \u2B50 END CLEANUP \u2B50\n                                //\u2B50 CALL IMAGE SWAP SETUP AFTER PRODUCT RENDERING (Active Search Query) \u2B50\n                                setTimeout(() => {\n                                    if (typeof setupImageSwapObserver === 'function' && !isMobile) {\n                                        setupImageSwapObserver();\n                                    }\n                                }, 10);\n                                return rendered;\n                            },\n                        },\n                    },\n                    getSuggestionsSource(query),\n                    getNoResultsSuggestionsSource(),\n                ];\n            }\n            // Otherwise, show products from products index only\n            return [\n                {\n                    sourceId: 'products',\n                    getItemInputValue: ({ item }) => item.title,\n                    async getItems() {\n                        return getAlgoliaResults({\n                            searchClient,\n                            queries: [\n                                {\n                                    indexName: window.algolia_primary_index,\n                                    query,\n                                    params: {\n                                        hitsPerPage: 6,\n                                        filters: \"inventory_available:true OR product_type:'Gift Cards'\",\n                                        attributesToSnippet: ['title:10'],\n                                        snippetEllipsisText: '\u2026',\n                                        attributesToHighlight: [\n                                            'handle',\n                                            'title',\n                                            'vendor',\n                                            'options.color',\n                                            'tags'\n                                            \n                                            // '*', // returns all attributes in the index not just searchable attributes\n                                        \n                                        ],\n                                    },\n                                },\n                            ],\n                        });\n                    },\n                    templates: {\n                        item({ item, html }) {\n                            dialog?.classList.remove('no-results-found');\n                            let errorMsg = document.getElementById('algolia-modal-error');\n                            errorMsg?.classList?.add('hide');\n                            const wrapper = document.getElementById('algolia-modal-search-results');\n                            if (wrapper) wrapper.remove();\n                            if(!isMobile) {\n                                preloadSecondaryImage(item.handle);\n                            }\n                            const rendered = html([renderProductTile(item,true)]);\n                            // \u2B50 ADDED: Explicit DOM Cleanup BEFORE setupImageSwapObserver \u2B50\n                            // This targets the specific element that was just inserted (rendered)\n                            const newHitElement = document.querySelector(`[data-handle=\"${item.handle}\"]`); \n                            if (newHitElement) {\n                                // 1. Remove the hover class immediately if it somehow persisted\n                                newHitElement.removeAttribute('data-hoverInit');\n                                // 2. Clear any lingering content inside the placeholder\n                                const placeholder = newHitElement.querySelector('.secondary-image-placeholder');\n                                if (placeholder) {\n                                    placeholder.innerHTML = '';\n                                    placeholder.removeAttribute('data-image-loaded');\n                                }\n                            }\n                            // // \u2B50 END CLEANUP \u2B50\n                            // \u2B50 CALL IMAGE SWAP SETUP AFTER PRODUCT RENDERING (Active Search Query) \u2B50\n                            setTimeout(() => {\n                                if (typeof setupImageSwapObserver === 'function' && !isMobile) {\n                                    setupImageSwapObserver();\n                                }\n                            }, 10);\n                            return rendered;\n                        }\n                    },\n                },\n                {\n                    sourceId: 'purchase_empty',\n                    getItemInputValue: ({ item }) => item.title,\n                    async getItems() {\n                        return getAlgoliaResults({\n                            searchClient,\n                            queries: [\n                                {\n                                    indexName: window.algolia_purchase_index,\n                                    query: '',\n                                    params: {\n                                        hitsPerPage: 6,\n                                        filters: \"inventory_available:true OR product_type:'Gift Cards'\",\n                                        attributesToSnippet: ['title:10'],\n                                        snippetEllipsisText: '\u2026',\n                                        attributesToHighlight: [\n                                            'handle',\n                                            'title',\n                                            'vendor',\n                                            'options.color',\n                                            'tags'\n                                            \n                                            // '*', // returns all attributes in the index not just searchable attributes\n                                        \n                                        ],\n                                    },\n                                },\n                            ],\n                        });\n                    },\n                    templates: {\n                        item({ item, html }) {\n                            const wrapper = document.getElementById('algolia-modal-search-results');\n                            if (wrapper) wrapper.remove();\n                            if(!isMobile) {\n                                preloadSecondaryImage(item.handle);\n                            }\n                            const rendered = html([renderProductTile(item,true)]);\n                            // \u2B50 ADDED: Explicit DOM Cleanup BEFORE setupImageSwapObserver \u2B50\n                            // This targets the specific element that was just inserted (rendered)\n                            const newHitElement = document.querySelector(`[data-handle=\"${item.handle}\"]`); \n                            if (newHitElement) {\n                                // 1. Remove the hover class immediately if it somehow persisted\n                                newHitElement.removeAttribute('data-hoverInit');\n                                // 2. Clear any lingering content inside the placeholder\n                                const placeholder = newHitElement.querySelector('.secondary-image-placeholder');\n                                if (placeholder) {\n                                    placeholder.innerHTML = '';\n                                    placeholder.removeAttribute('data-image-loaded');\n                                }\n                            }\n                            // // \u2B50 END CLEANUP \u2B50\n                            // \u2B50 CALL IMAGE SWAP SETUP AFTER PRODUCT RENDERING (Active Search Query) \u2B50\n                            setTimeout(() => {\n                                if (typeof setupImageSwapObserver === 'function' && !isMobile) {\n                                    setupImageSwapObserver();\n                                }\n                            }, 10);\n                            return rendered;\n                        }\n                    },\n                },\n                getSuggestionsSource(query),\n                getNoResultsSuggestionsSource(),\n            ];\n        }\n    });\n    if(isMobile) {\n        // ---- iPhone FIX: trusted tap navigation via delegated listener with scroll suppression ----\n        (function attachTrustedNavigation() {\n            const root = document.querySelector('#algolia-modal-results');\n            if (!root) return;\n\n            let startY = 0, startX = 0, moved = false;\n            const SCROLL_THRESHOLD = 10; // px\n\n            function navigateTrusted(url) {\n                if (!url) return;\n                const a = document.createElement('a');\n                a.href = url;\n                a.rel = 'noopener noreferrer';\n                a.style.display = 'none';\n                document.body.appendChild(a);\n                a.click(); // real trusted click\n                setTimeout(() => {\n                    closeBtn?.click();\n                }, 20);\n                setTimeout(() => a.remove(), 50);\n            }\n\n            function onTouchStart(e) {\n                moved = false;\n                if (e.touches && e.touches.length) {\n                    startY = e.touches[0].clientY;\n                    startX = e.touches[0].clientX;\n                } else {\n                    startY = e.clientY;\n                    startX = e.clientX;\n                }\n            }\n\n            function onTouchMove(e) {\n                let y = e.touches && e.touches.length ? e.touches[0].clientY : e.clientY;\n                let x = e.touches && e.touches.length ? e.touches[0].clientX : e.clientX;\n                if (Math.abs(y - startY) > SCROLL_THRESHOLD || Math.abs(x - startX) > SCROLL_THRESHOLD) {\n                    moved = true;\n                }\n            }\n\n            function handler(e) {\n                // Suppress navigation if scroll detected\n                if (moved) return;\n                const el = e.target.closest('[data-handle], [data-url]');\n                if (!el) return;\n\n                const url = el.dataset.url || `/products/${el.dataset.handle}`;\n                if (!url) return;\n\n                // Prevent double triggers\n                if (el.__navigated) return;\n                el.__navigated = true;\n\n                e.stopPropagation(); // prevent Algolia synthetic handling\n                e.preventDefault();\n                navigateTrusted(url);\n                setTimeout(() => { el.__navigated = false }, 600);\n            }\n\n            // MUST use capture so it fires BEFORE Algolia's listeners\n            root.addEventListener('touchstart', onTouchStart, { capture: true, passive: false });\n            root.addEventListener('touchmove', onTouchMove, { capture: true, passive: false });\n            root.addEventListener('touchend', handler, { capture: true, passive: false });\n            root.addEventListener('mousedown', handler, { capture: true });\n        })();\n    }\n\n    // Block autocomplete's handler when clicking outside the panel\n    document.addEventListener(\n        \"mousedown\",\n        (e) => {\n        const panel = document.querySelector(\".aa-Panel\");\n        if (!panel) return;\n        if (!panel.contains(e.target)) {\n            e.stopImmediatePropagation();\n        }\n        },\n        true // capture mode so Algolia never sees the event\n    );\n\n    document.addEventListener(\n        \"touchstart\",\n        (e) => {\n        const panel = document.querySelector(\".aa-Panel\");\n        if (!panel) return;\n        if (!panel.contains(e.target)) {\n            e.stopImmediatePropagation();\n        }\n        },\n        true // capture mode so Algolia never sees the event\n    );\n\n    // Enable quicklinks scroll left/right functionality\n    const quicklinks = document.getElementById('algolia-modal-quicklinks');\n    const scrollLeftBtn = document.querySelector('.quicklinks-scroll-left');\n    const scrollRightBtn = document.querySelector('.quicklinks-scroll-right');\n\n    if (scrollLeftBtn && quicklinks) {\n        scrollLeftBtn.addEventListener('click', () => {\n            quicklinks.scrollBy({ left: -200, behavior: 'smooth' });\n        });\n    }\n    if (scrollRightBtn && quicklinks) {\n        scrollRightBtn.addEventListener('click', () => {\n            quicklinks.scrollBy({ left: 200, behavior: 'smooth' });\n        });\n    }\n\n    function buildLink(type='',category='',subcategory='') {\n        let link;\n        if(subcategory) {\n            link = getSlug(category) + `?refinementList[named_tags.categories.lvl2][0]=${encodeURIComponent(subcategory)}`\n        } else if(category) {\n            link = getSlug(category)\n        } else {\n            link = getSlug(type)\n        }\n        return link;\n    }\n    function updateQuicklinksFromState(state){\n        const quicklinksContainer = document.getElementById('algolia-modal-quicklinks');\n        if (!quicklinksContainer) return;\n\n        // Get the current query from the input field\n        const inputEl = document.getElementById('autocomplete-0-input');\n        const queryVal = inputEl && 'value' in inputEl ? String(inputEl.value).trim() : '';\n        let suggestions = state.collectionsBySource.suggestions || [];\n        const empty_suggestions = state.collectionsBySource.empty_suggestions || [];\n        const products = state.collectionsBySource.products || [];\n        const purchase_empty = state.collectionsBySource.purchase_empty || [];\n    \n        if(purchase_empty.length > 0 && queryVal !== '' && products.length === 0) {\n            dialog?.classList.add('no-results-found');\n            let errorMsg = document.getElementById('algolia-modal-error');\n            if (!errorMsg) {\n                errorMsg = document.createElement('div');\n                errorMsg.id = 'algolia-modal-error';\n                const headerRow = document.querySelector('.algolia-modal-header-row');\n                if (headerRow && headerRow.parentNode) {\n                    headerRow.parentNode.insertBefore(errorMsg, headerRow);\n                }\n            }\n            errorMsg.textContent = `Sorry, there are no results for '${queryVal}'`;\n            errorMsg?.classList?.remove('hide');\n            // Set heading to 'Most Popular Searches'\n            if (heading) heading.textContent = 'Most Popular Searches';\n\n            // Hide View All buttons\n            if (viewAllTop) {\n                toggleVisibility(viewAllTop, false);\n            }\n            if (viewAllBottom) {\n                toggleVisibility(viewAllBottom, false);\n            }\n        } else {\n            dialog?.classList.remove('no-results-found');\n            let errorMsg = document.getElementById('algolia-modal-error');\n            errorMsg?.classList?.add('hide');\n            // Set heading to 'Most Popular Searches'\n            if (heading) heading.textContent = queryVal ? 'Suggestions' : 'Most Popular Searches';\n\n            // Hide View All buttons\n            if(queryVal) {\n                if (viewAllTop) {\n                    toggleVisibility(viewAllTop, true);\n                    viewAllTop.href = '/search?q=' + encodeURIComponent(queryVal);\n                }\n                if (viewAllBottom) {\n                    toggleVisibility(viewAllBottom, true);\n                    viewAllBottom.href = '/search?q=' + encodeURIComponent(queryVal);\n                }\n            } else {\n                if (viewAllTop) {\n                    toggleVisibility(viewAllTop, false);\n                }\n                if (viewAllBottom) {\n                    toggleVisibility(viewAllBottom, false);\n                }\n            }\n            \n        }\n        \n        // Special quicklink for queries containing both 'gift' and 'card' (even partial)\n        // Or for queries containing 'olivela' (case-insensitive)\n        let collectionArr = [];\n        let suggestionArr = [];\n        let results = [];\n\n        // Pills rendering logic based on queryVal and products\n        if (!queryVal || (queryVal && products.length === 0)) {\n            if(suggestions.length === 0) {\n                suggestions = empty_suggestions;\n            }\n            // No query: show suggestions with query matchLevel 'full' or 'none'\n            suggestions.forEach(hit => {\n                if (hit && hit._highlightResult && hit._highlightResult.query && (hit._highlightResult.query.matchLevel === 'full' || hit._highlightResult.query.matchLevel === 'none')) {\n                    const text = String(hit.query).toLowerCase();\n                    if (text.includes('gift') || text.includes('card') || text.includes('olivela')) {\n                        suggestionArr.push({\n                            'type': 'gift-card',\n                            'label': 'Olivela'\n                        }); \n                        suggestionArr.push({\n                            'type': 'gift-card',\n                            'label': 'Gift Cards'\n                        });\n                    } else {\n                        suggestionArr.push({\n                            'type': 'search',\n                            'label': hit.query\n                        });\n                    }\n                }\n            });\n            results = suggestionArr;\n        } else if (queryVal && products.length > 0) {\n            // Query present and products found\n            // 1. Suggestions with query matchLevel 'full'\n            suggestions.forEach(hit => {\n                if (hit && hit._highlightResult && hit._highlightResult.query && hit._highlightResult.query.matchLevel === 'full') {\n\n                    const text = String(hit.query).toLowerCase();\n                    if (text.includes('gift') || text.includes('card') || text.includes('olivela')) {\n                        suggestionArr.push({\n                            'type': 'gift-card',\n                            'label': 'Olivela'\n                        });\n                        suggestionArr.push({\n                            'type': 'gift-card',\n                            'label': 'Gift Cards'\n                        });\n                    } \n                }\n            });\n            // 2. Products with vendor matchLevel 'full'\n            products.forEach(hit => {\n                if (hit && hit.vendor) {\n                    if(hit.vendor.toLowerCase() === 'olivela') {\n                        suggestionArr.push({\n                            'type': 'gift-card',\n                            'label': 'Olivela'\n                        });\n                    } else {\n                        suggestionArr.push({\n                            'type': 'collection',\n                            'label': hit.vendor,\n                            'link' : buildLink(hit.vendor)\n                        });\n                    }\n                }\n                // 3. Products with named_tags\n                if (hit && hit.named_tags) {\n                    // Support both array and object (JSON) structures\n                    if (typeof hit.named_tags === 'object' && hit.named_tags !== null) {\n                        // JSON object with keys as categories.lvl0 and categories.lvl1\n                        if (hit.named_tags['categories.lvl0']) {\n                            const lvl0 = hit.named_tags['categories.lvl0'];\n                            if (Array.isArray(lvl0)) {\n                                lvl0.forEach(val => {\n                                    if (val) {\n                                        collectionArr.push({\n                                            'type': 'collection',\n                                            'link': buildLink(val),\n                                            'label': val\n                                        });\n                                    }\n                                });\n                            } else if (typeof lvl0 === 'string') {\n                                collectionArr.push({\n                                    'type': 'collection',\n                                    'link': buildLink(lvl0),\n                                    'label': lvl0\n                                });\n                            }\n                        }\n                        if (hit.named_tags['categories.lvl1']) {\n                            const lvl1 = hit.named_tags['categories.lvl1'];\n                            if (Array.isArray(lvl1)) {\n                                lvl1.forEach(val => {\n                                    if (val) {\n                                        const parts = val.split('>');\n                                        const last = parts[parts.length - 1].trim();\n                                        collectionArr.push({\n                                            'type': 'collection',\n                                            'link': buildLink('',last),\n                                            'label': last\n                                        });\n                                    }\n                                });\n                            } else if (typeof lvl1 === 'string') {\n                                const parts = lvl1.split('>');\n                                const last = parts[parts.length - 1].trim();\n                                collectionArr.push({\n                                    'type': 'collection',\n                                    'label': last,\n                                    'link': buildLink('',last)\n                                });\n                            }\n                        }\n                        if (hit.named_tags['categories.lvl2']) {\n                            const lvl2 = hit.named_tags['categories.lvl2'];\n                            if (Array.isArray(lvl2)) {\n                                lvl2.forEach(val => {\n                                    if (val) {\n                                        const parts = val.split('>');\n                                        const last = parts[parts.length - 1].trim();\n                                        collectionArr.push({\n                                            'type': 'collection',\n                                            'link': buildLink('',parts[parts.length - 2].trim(),val),\n                                            'label': last\n                                        });\n                                    }\n                                });\n                            } else if (typeof lvl2 === 'string') {\n                                const parts = lvl2.split('>');\n                                const last = parts[parts.length - 1].trim();\n                                collectionArr.push({\n                                    'type': 'collection',\n                                    'label': last,\n                                    'link': buildLink('',parts[parts.length - 2].trim(),lvl2)\n                                });\n                            }\n                        }\n                    }\n                }\n            });\n\n            results = suggestionArr.concat(collectionArr);\n        }\n\n\n         // Remove duplicate values from results (by label and type)\n         const uniqueResults = [];\n         const seen = new Set();\n         (results || []).forEach(item => {\n             if (!item || !item.label) return;\n             const key = item.type + '|' + item.label.toLowerCase();\n             if (!seen.has(key)) {\n                 uniqueResults.push(item);\n                 seen.add(key);\n             }\n         });\n\n         // Render pills from uniqueResults array\n         const pillHtmlArr = uniqueResults.map(item => {\n             if (item.type === 'collection') {\n                 return `<a tabindex=\"0\" href=\"${item.link}\" class=\"algolia-modal-pill\">${item.label}</a>`;\n             } else if (item.type === 'gift-card') {\n                 return `<a tabindex=\"0\" href=\"/products/gift-card\" class=\"algolia-modal-pill\">${item.label}</a>`;\n             } else if (item.type === 'search') {\n                 return `<a tabindex=\"0\" href=\"${getSlug(item.label,'search')}\" class=\"algolia-modal-pill\">${item.label}</a>`;\n             }\n             return '';\n         });\n         quicklinksContainer.innerHTML = pillHtmlArr.join('');\n         quicklinksContainer.scrollLeft = 0;\n         if(uniqueResults.length > 0) {\n            document.getElementById('algolia-modal-heading')?.classList.remove('hide')\n            document.getElementById('algolia-modal-viewall-top')?.classList.remove('hide');\n         }\n\n         // Hide scroll buttons if no quicklinks\n         setScrollButtonsVisibility(pillHtmlArr.length > 0);\n    }   \n\n    if (dialog) {\n        // Delegate click for product tiles and quick links inside the modal\n        dialog.addEventListener('click', function(e) {\n            // Adjust selectors as needed for your product tiles and quick links\n            const link = e.target.closest('.ais-hit, a.algolia-modal-pill, img.ais-hit--picture,p.ais-hit--title, p.ais-hit--price');\n            if (link) {\n                setTimeout(() => {\n                    closeBtn?.click();\n                }, 20);\n            }\n        });  \n    }\n\n\n    \n    \n\n});\n"],
  "mappings": "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",
  "names": ["event", "query", "results"]
}
