{"component":{"id":45,"name":"ct_div_block","options":{"ct_id":45,"ct_parent":100002,"selector":"div_block-45-87","original":{"conditionspreview":"2","globalConditionsResult":true},"nicename":"Element Quick View","activeselector":false},"depth":2,"children":[{"id":12,"name":"ct_div_block","options":{"ct_id":12,"ct_parent":45,"selector":"div_block-12-87","original":{"flex-direction":"row","display":"flex","align-items":"center","gap":"10","width-unit":"%","justify-content":"center","border-radius":".5","border-radius-unit":"rem","custom-attributes":[{"name":"data-quick-view","value":"[oxygen ct_sign_sha256='50aa0771023909f815b206f2ae0a6b35ba8f4ace320315f9304bbdebfba6ecec' data='id' ]"}],"padding-top":"6","padding-right":"6","padding-bottom":"6","padding-left":"6","background-color":"#5221c4"},"nicename":"Button QuickView","classes":["oxy-quick-btn"],"activeselector":false},"depth":3,"children":[{"id":13,"name":"ct_fancy_icon","options":{"ct_id":13,"ct_parent":12,"selector":"fancy_icon-13-87","original":{"icon-id":"FontAwesomeicon-search","icon-size":"20","icon-color":"#e5e5e5"},"nicename":"Icon (#585)"},"depth":4}]},{"id":49,"name":"ct_code_block","options":{"ct_id":49,"ct_parent":45,"selector":"code_block-49-87","original":{"code-js":"document.addEventListener('DOMContentLoaded', () => {\n if (window.angular) return;\n\n const bodyScroll = document.querySelector('body');\n const modal = document.querySelector('.x-qv-modal');\n const modalDiv = document.querySelector('.x-qv-modal .x-qv-modal__content');\n let abortController = null;\n const scrollBarWidth = window.innerWidth - document.documentElement.clientWidth;\n\n function qvDisableScroll() {\n bodyScroll.style.overflow = 'hidden';\n bodyScroll.style.paddingRight = `${scrollBarWidth}px`;\n }\n\n function qvEnableScroll() {\n bodyScroll.style.overflow = '';\n bodyScroll.style.paddingRight = '';\n }\n\n if (!sessionStorage.getItem('sessionID')) {\n const sessionID = `quick-view-cache-${Date.now()}`;\n sessionStorage.setItem('sessionID', sessionID);\n localStorage.setItem(sessionID, sessionID);\n }\n const sessionID = sessionStorage.getItem('sessionID');\n\n window.addEventListener('beforeunload', () => {\n if (!sessionStorage.getItem('sessionID')) {\n localStorage.removeItem(sessionID);\n }\n });\n\n document.addEventListener('click', async (event) => {\n const button = event.target.closest('.oxy-quick-btn');\n if (!button) return;\n\n const quickViewValue = button.getAttribute('data-quick-view');\n\n if (abortController) abortController.abort();\n\n abortController = new AbortController();\n const signal = abortController.signal;\n\n const url = new URL(window.location.href);\n url.searchParams.set('quickterm', quickViewValue);\n\n qvDisableScroll();\n modal.classList.add('live', 'loading');\n modalDiv.style.display = 'none';\n\n const cachedData = await qvGetFromCache(sessionID, url.toString());\n if (cachedData) {\n qvUpdateModalContent(cachedData);\n return;\n }\n\n try {\n const response = await fetch(url.toString(), { signal });\n if (!response.ok) throw new Error('Network response was not ok');\n\n const html = await response.text();\n const parser = new DOMParser();\n const doc = parser.parseFromString(html, 'text/html');\n const newContent = doc.querySelector('.x-qv-modal').innerHTML;\n\n await qvManageCache(sessionID, url.toString(), newContent);\n qvUpdateModalContent(newContent);\n } catch (error) {\n if (error.name !== 'AbortError') {\n console.error('Error:', error);\n }\n }\n });\n\n async function qvManageCache(cacheName, key, data) {\n const cache = await caches.open(cacheName);\n const response = new Response(JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' }\n });\n await cache.put(key, response);\n }\n\n async function qvGetFromCache(cacheName, key) {\n const cache = await caches.open(cacheName);\n const cachedResponse = await cache.match(key);\n if (cachedResponse) {\n const cachedData = await cachedResponse.json();\n return cachedData;\n }\n return null;\n }\n\n function qvUpdateModalContent(content) {\n if (modal.innerHTML !== content) {\n modal.innerHTML = content;\n }\n\n modal.classList.remove('loading');\n qvReloadModal();\n qvCloseModalQuick();\n AOS.refresh();\n modalDiv.style.display = 'flex';\n\n qvUpdateButtonStates();\n }\n\n function qvUpdateButtonStates() {\n const allButtons = Array.from(document.querySelectorAll('.oxy-quick-btn'));\n const currentIndex = allButtons.findIndex(btn => btn.classList.contains('active'));\n\n if (currentIndex === 0) {\n qvEnableButton('.x-qv-modal__prev');\n qvDisableButton('.x-qv-modal__next');\n } else if (currentIndex === allButtons.length - 1) {\n qvDisableButton('.x-qv-modal__prev');\n qvEnableButton('.x-qv-modal__next');\n } else {\n qvEnableButton('.x-qv-modal__prev');\n qvEnableButton('.x-qv-modal__next');\n }\n\n qvToggleEndClass(currentIndex);\n }\n\n function qvToggleEndClass(currentIndex) {\n const allButtons = document.querySelectorAll('.oxy-quick-btn');\n const isFirst = currentIndex === 0;\n const isLast = currentIndex === allButtons.length - 1;\n\n const prevButton = document.querySelector('.x-qv-modal__prev');\n const nextButton = document.querySelector('.x-qv-modal__next');\n\n if (prevButton && nextButton) {\n if (isFirst) {\n prevButton.classList.add('end');\n nextButton.classList.remove('end');\n } else if (isLast) {\n nextButton.classList.add('end');\n prevButton.classList.remove('end');\n } else {\n prevButton.classList.remove('end');\n nextButton.classList.remove('end');\n }\n }\n }\n\n function qvReloadModal() {\n if (jQuery.fn.wc_product_gallery) {\n jQuery('.woocommerce-product-gallery').wc_product_gallery();\n }\n\n if (jQuery('.x-qv-modal .variations_form').length) {\n jQuery('.x-qv-modal .variations_form').wc_variation_form().trigger('check_variations');\n jQuery('.x-qv-modal .variations_form select').change();\n }\n\n if (typeof oxy_load_quickview === 'function') {\n oxy_load_quickview();\n }\n }\n\n function qvCloseModalQuick() {\n function close() {\n const modalContent = modal.querySelector('.x-qv-modal__content');\n if (!modalContent) return;\n\n modalContent.classList.remove('aos-animate');\n let delayTime = 400;\n qvEnableScroll();\n\n if (modalContent.hasAttribute('data-aos-duration')) {\n const duration = parseInt(modalContent.getAttribute('data-aos-duration'), 10);\n if (!isNaN(duration) && duration > 0) {\n delayTime = duration;\n }\n }\n\n setTimeout(() => {\n modal.classList.remove('live');\n }, delayTime);\n }\n\n modal.addEventListener('click', (event) => {\n const modalContent = modal.querySelector('.x-qv-modal__content');\n if (event.target === modal && modalContent && modalContent.getAttribute('data-quick-close-back') === 'true') {\n close();\n }\n if (event.target.closest('.x-qv-modal__close')) {\n close();\n }\n });\n\n document.addEventListener('keydown', (event) => {\n const modalContent = modal.querySelector('.x-qv-modal__content');\n if (event.key === 'Escape' && modalContent && modalContent.getAttribute('data-quick-close-esc') === 'true') {\n close();\n }\n });\n }\n\n function qvNavigateQuickView(direction) {\n const currentButton = document.querySelector('.oxy-quick-btn.active');\n if (!currentButton) return;\n\n const allButtons = Array.from(document.querySelectorAll('.oxy-quick-btn'));\n const currentIndex = allButtons.indexOf(currentButton);\n\n let targetIndex;\n if (direction === 'next') {\n targetIndex = currentIndex + 1;\n if (targetIndex >= allButtons.length) return;\n } else if (direction === 'prev') {\n targetIndex = currentIndex - 1;\n if (targetIndex < 0) return;\n }\n\n const targetButton = allButtons[targetIndex];\n if (targetButton) {\n const modalContent = modal.querySelector('.x-qv-modal__content');\n if (modalContent) modalContent.classList.remove('aos-animate');\n\n let delayTime = 400;\n if (modalContent && modalContent.hasAttribute('data-aos-duration')) {\n const duration = parseInt(modalContent.getAttribute('data-aos-duration'), 10);\n if (!isNaN(duration) && duration > 0) {\n delayTime = duration;\n }\n }\n\n setTimeout(() => {\n targetButton.click();\n }, delayTime);\n }\n }\n\n function qvDisableButton(selector) {\n const button = document.querySelector(selector);\n if (button) {\n button.classList.add('end');\n }\n }\n\n function qvEnableButton(selector) {\n const button = document.querySelector(selector);\n if (button) {\n button.classList.remove('end');\n }\n }\n\n modal.addEventListener('click', (event) => {\n const nextButton = event.target.closest('.x-qv-modal__next');\n const prevButton = event.target.closest('.x-qv-modal__prev');\n\n if (nextButton) {\n qvNavigateQuickView('next');\n } else if (prevButton) {\n qvNavigateQuickView('prev');\n }\n });\n\n document.addEventListener('click', (event) => {\n const clickedButton = event.target.closest('.oxy-quick-btn');\n if (clickedButton) {\n document.querySelectorAll('.oxy-quick-btn').forEach(btn => btn.classList.remove('active'));\n clickedButton.classList.add('active');\n qvUpdateButtonStates();\n }\n });\n});\n","code-css":".x-qv-modal {\n\tdisplay: none !important;\n\topacity: 0 !important;\n\ttransition: opacity 0.5s ease;\n\n}\n\n.x-qv-modal__next.end, \n.x-qv-modal__prev.end {\n opacity: 0.5 !important;\n}\n\n.x-qv-modal.live {\n\tposition: fixed !important;\n\tdisplay: flex !important;\n\topacity: 1 !important;\n\ttop: 0;\n\tleft: 0;\n\tanimation: fade-in 0.5s ease forwards;\n}\n\n@keyframes fade-in {\n\t0% {\n\t\topacity: 0;\n\t}\n\t100% {\n\t\topacity: 1;\n\t}\n}\n\n.x-qv-modal {\n position: fixed !important;\n}\n\n.ct-component .x-qv-modal {\n position: relative !important;\n}\n\n.ct-component .x-qv-modal {\n\tdisplay: flex !important;\n\topacity: 1 !important;\n}\n\n.x-qv-modal.loading .x-qv-modal-loading {\n\tdisplay: flex !important;\n}\n\n.x-qv-modal-loading {\n\tanimation: rotate-animation 0.8s infinite linear;\n}\n\n@keyframes rotate-animation {\n\t0% {\n\t\ttransform: rotate(0deg);\n\t}\n\t50% {\n\t\ttransform: rotate(180deg);\n\t}\n\t100% {\n\t\ttransform: rotate(360deg);\n\t}\n}\n\n\n","code-php":"\n","globalconditions":[]},"nicename":"Code QuickView","activeselector":false},"depth":3},{"id":50,"name":"ct_div_block","options":{"ct_id":50,"ct_parent":45,"selector":"div_block-50-87","original":{"custom-css":"","height-unit":"%","width-unit":"%","max-width-unit":"%","max-height-unit":"%","padding-top-unit":"%","padding-right-unit":"%","padding-bottom-unit":"%","padding-left-unit":"%","align-items":"center","justify-content":"center","background-color":"rgba(41,41,48,0.52)","padding-top":"5","padding-right":"5","padding-bottom":"5","padding-left":"5","selector-locked":"false","text-align":"left","z-index":"99"},"nicename":"QuickView Modal","activeselector":false,"media":{"phone-landscape":{"original":[]}},"classes":["x-qv-modal","modal-tech"],"key":"x-qv-modal"},"depth":3,"children":[{"id":51,"name":"ct_div_block","options":{"ct_id":51,"ct_parent":50,"selector":"div_block-51-87","original":{"height-unit":"auto","width":"100","width-unit":"%","max-height-unit":"%","max-width":"850","background-color":"#ffffff","aos-enable":"true","position":"relative","aos-type":"zoom-in","selector-locked":"false","custom-attributes":[{"name":"data-quick-close-esc","pinned":true,"value":"true"},{"name":"data-quick-close-back","pinned":true,"value":"true"}],"flex-direction":"column","display":"flex","text-align":"left","align-items":"stretch","justify-content":"space-between","max-height":"100"},"nicename":"Content","activeselector":"x-qv-modal__content","classes":["x-qv-modal__content"],"key":"x-qv-modal__content","media":{"page-width":{"original":{"max-width-unit":"%"}},"phone-landscape":{"original":[]}}},"depth":4,"children":[{"id":114,"name":"ct_fancy_icon","options":{"ct_id":114,"ct_parent":51,"selector":"fancy_icon-114-87","original":{"icon-id":"FontAwesomeicon-close","position":"absolute","top":"0","right":"0","icon-size":"22","icon-style":"2","border-radius":"0","icon-color":"#ffffff","icon-background-color":"#2d2d2d","icon-padding":"5","z-index":"2"},"nicename":"Icon Close","activeselector":false,"classes":["x-qv-modal__close"]},"depth":5},{"id":113,"name":"ct_fancy_icon","options":{"ct_id":113,"ct_parent":51,"selector":"fancy_icon-113-87","original":{"icon-size":"25","icon-id":"FontAwesomeicon-arrow-left","position":"absolute","top":"50","top-unit":"%","left":"-40","icon-color":"#ffffff"},"nicename":"Button Left","activeselector":false,"classes":["x-qv-modal__prev"]},"depth":5},{"id":155,"name":"ct_fancy_icon","options":{"ct_id":155,"ct_parent":51,"selector":"fancy_icon-155-87","original":{"icon-size":"25","icon-id":"FontAwesomeicon-arrow-right","position":"absolute","left-unit":"%","right":"-40","top":"50","top-unit":"%","icon-color":"#ffffff"},"nicename":"Icon Right","activeselector":false,"classes":["x-qv-modal__next"]},"depth":5},{"id":56,"name":"oxy_dynamic_list","options":{"ct_id":56,"ct_parent":51,"selector":"_dynamic_list-56-87","original":{"wp_query":"advanced","query_post_types":[],"wp_query_advanced_preset":"Custom Settings","wp_query_advanced":[{"key":"post_type","values":[{"value":"product"}]},{"key":"no_found_rows","values":[{"value":"true"}]},{"key":"post__in","values":[{"value":"[oxygen ct_sign_sha256='12a8d1c911b0379c5771bd51cee43ab3f97a8c6392d6c8fb45a11058ef8a5a1e' data='phpfunction' function='oxy_call_id_quickview' ]"}]},{"key":"posts_per_page","values":[{"value":"1"}]}],"overflow":"hidden","custom-css":"overflow-y: auto;","height":"100","height-unit":"%","globalconditions":[],"listrendertype":"1"},"nicename":"Repeater","activeselector":false,"media":{"tablet":{"original":{"max-height":"85","custom-css":"overflow-y: auto;","max-height-unit":"vh"}},"phone-landscape":{"original":{"max-height-unit":"vh"}}}},"depth":5,"children":[{"id":57,"name":"ct_div_block","options":{"ct_id":57,"ct_parent":56,"selector":"div_block-57-87","original":{"globalconditions":[],"height-unit":"%","width":"100","width-unit":"%"},"nicename":"Repeater Child","activeselector":false},"depth":6,"children":[{"id":90,"name":"oxy-product-builder","options":{"ct_id":90,"ct_parent":57,"selector":"-product-builder-90-87","original":[],"nicename":"Product Builder (#90)","activeselector":""},"depth":7,"children":[{"id":243,"name":"ct_new_columns","options":{"ct_id":243,"ct_parent":90,"selector":"new_columns-243-87","original":[],"nicename":"Columns (#243)","activeselector":""},"depth":8,"children":[{"id":246,"name":"ct_div_block","options":{"ct_id":246,"ct_parent":243,"selector":"div_block-246-87","original":{"width":"50","width-unit":"%","border-right-style":"solid","border-right-width":"1","border-right-color":"#d3d3d3"},"nicename":"Div (#246)","activeselector":false},"depth":8,"children":[{"id":242,"name":"ct_div_block","options":{"ct_id":242,"ct_parent":246,"selector":"div_block-242-87","original":[],"nicename":"Print Notice","classes":["x-qv-modal__notice"],"activeselector":"x-qv-modal__notice"},"depth":9},{"id":258,"name":"oxy-product-images","options":{"ct_id":258,"ct_parent":"246","selector":"-product-images-258-87","original":{"oxy-product-images_original_thumb_margins_margin-right":"10","oxy-product-images_original_thumb_margins_margin-top":"10","oxy-product-images_images_align":"horizontally"},"nicename":"Product Images (#258)","activeselector":false},"depth":9}]},{"id":247,"name":"ct_div_block","options":{"ct_id":247,"ct_parent":243,"selector":"div_block-247-87","original":{"width":"50","width-unit":"%","padding-top":"40","padding-right":"40","padding-bottom":"40","padding-left":"40"},"nicename":"Div (#247)","activeselector":false},"depth":8,"children":[{"id":204,"name":"ct_headline","options":{"ct_id":204,"ct_parent":247,"selector":"headline-204-87","original":{"tag":"h3","line-height":"1.2","font-weight":"500"},"nicename":"Heading (#204)","ct_content":"","activeselector":false},"depth":9,"children":[{"id":212,"name":"ct_span","options":{"ct_id":212,"ct_parent":204,"selector":"span-212-87","original":[],"nicename":"Span (#212)","ct_content":"[oxygen ct_sign_sha256='a09f8a55cb58c4942709e5f588fb3c6d1465e4a624d50a99aa951c90d29147e4' data='title' ]"},"depth":10}]},{"id":211,"name":"oxy-product-meta","options":{"ct_id":211,"ct_parent":247,"selector":"-product-meta-211-87","original":{"margin-bottom":"40"},"nicename":"Product Meta (#211)","activeselector":false},"depth":9},{"id":214,"name":"ct_text_block","options":{"ct_id":214,"ct_parent":247,"selector":"text_block-214-87","original":[],"nicename":"Text (#214)","ct_content":"","activeselector":""},"depth":9,"children":[{"id":215,"name":"ct_span","options":{"ct_id":215,"ct_parent":214,"selector":"span-215-87","original":[],"nicename":"Span (#215)","ct_content":"[oxygen ct_sign_sha256='183e1703092b767182f95194fae2642e69a77d472ef251df3c3b05c826b5f914' data='excerpt' ]"},"depth":10}]},{"id":218,"name":"ct_div_block","options":{"ct_id":218,"ct_parent":247,"selector":"div_block-218-87","original":{"width":"100","width-unit":"%","padding-top":"10","border-top-width":"1","border-top-style":"solid","border-top-color":"#d3d3d3","margin-top":"40","gap":"20"},"nicename":"Div (#218)"},"depth":9,"children":[{"id":217,"name":"oxy-product-price","options":{"ct_id":217,"ct_parent":218,"selector":"-product-price-217-87","original":{"oxy-product-price_stacking_list":"horizontal"},"nicename":"Product Price (#217)","activeselector":false},"depth":10},{"id":219,"name":"oxy-product-cart-button","options":{"ct_id":219,"ct_parent":218,"selector":"-product-cart-button-219-87","original":[],"nicename":"Product Cart Button (#219)"},"depth":10},{"id":221,"name":"ct_link_text","options":{"ct_id":221,"ct_parent":218,"selector":"text_block-221-87","original":{"margin-left-unit":"auto","margin-right-unit":"auto","padding-top":"5","padding-right":"20","padding-bottom":"5","padding-left":"20","width":"100","width-unit":"%","text-align":"center","border-top-width":"1","border-right-width":"1","border-bottom-width":"1","border-left-width":"1","border-all-width":"1","border-top-style":"solid","border-right-style":"solid","border-bottom-style":"solid","border-left-style":"solid","border-all-style":"solid","border-top-color":"#606060","border-right-color":"#606060","border-bottom-color":"#606060","border-left-color":"#606060","border-all-color":"#606060","url":"[oxygen ct_sign_sha256='c0f575db23a5be7cb3c5c930abaa18f536fdceb4b05216ef932ffe572d44d6e4' data='permalink' ]","color":"#282828"},"nicename":"Text Link (#221)","ct_content":" All Information
","activeselector":false,"hover":{"background-color":"#212121","color":"#ffffff"}},"depth":10}]}]}]}]}]}]}]},{"id":88,"name":"ct_fancy_icon","options":{"ct_id":88,"ct_parent":50,"selector":"fancy_icon-88-87","original":{"icon-id":"FontAwesomeicon-refresh"},"nicename":"Icon LOADING","classes":["x-qv-modal-loading"]},"depth":4}]}]},"classes":{"oxy-quick-btn":{"key":"oxy-quick-btn","original":{"selector-locked":"true","custom-css":"cursor: pointer;"}},"x-qv-modal":{"key":"x-qv-modal","original":{"width-unit":"%","max-width-unit":"%","height-unit":"%","selector-locked":"true","position":"fixed","opacity":"0","z-index":"9","top":"0","left":"0","width":"100","max-width":"100","height":"100","display":"none"}},"modal-tech":{"key":"modal-tech","original":{}},"x-qv-modal__content":{"key":"x-qv-modal__content","original":{"selector-locked":"true"}},"x-qv-modal__close":{"key":"x-qv-modal__close","original":{"selector-locked":"true","custom-css":"cursor: pointer;","icon-color":"#333333"}},"x-qv-modal__prev":{"key":"x-qv-modal__prev","original":{"custom-css":"cursor: pointer;","selector-locked":"true"}},"x-qv-modal__next":{"key":"x-qv-modal__next","original":{"selector-locked":"true","custom-css":"cursor: pointer;"}},"x-qv-modal__notice":{"key":"x-qv-modal__notice","original":{"width-unit":"%","selector-locked":"true","display":"block","width":"100"}},"x-qv-modal-loading":{"key":"x-qv-modal-loading","original":{"icon-color":"#ffffff","icon-size":"30","icon-style":"","display":"none","position":"absolute"}}}}