{"title":"Variable Speed Pool Pump","description":"\u003cdiv\u003e\n\u003cdiv data-zone-id=\"0\" data-line-index=\"0\" data-line=\"true\"\u003e\u003cspan\u003eUpgrade your pool with powerful, quiet, and energy-efficient variable speed pumps. Adjust performance for filtration, cleaning, or circulation while reducing energy use, lowering operating costs, and keeping your water consistently clean, clear, and ready to enjoy every day, all season.\u003c\/span\u003e\u003c\/div\u003e\n\u003c\/div\u003e","products":[{"product_id":"1-5-hp-swimming-pool-pump-shspp01a","title":"1.5 HP Swimming Pool Pump - SHSPP01A","description":"\u003cstyle\u003e\n  .hspp01a-content {\n    width: 100%;\n    max-width: 1920px;\n    margin: 0 auto;\n    overflow: hidden;\n  }\n\n  .hspp01a-image {\n    display: block;\n    width: 100%;\n    height: auto;\n    margin: 0;\n    user-select: none;\n    -webkit-user-drag: none;\n  }\n\n  \/* 图片集合之间的空白 *\/\n  .hspp01a-divider {\n    width: 100%;\n    height: 40px;\n  }\n\n  \/* 左右滑动区域 *\/\n  .hspp01a-slider {\n    position: relative;\n    width: 100%;\n    overflow: hidden;\n  }\n\n  .hspp01a-slider-track {\n    display: flex;\n    width: 100%;\n    overflow-x: auto;\n    overflow-y: hidden;\n    scroll-snap-type: x mandatory;\n    scroll-behavior: smooth;\n    -webkit-overflow-scrolling: touch;\n    scrollbar-width: none;\n    cursor: grab;\n    user-select: none;\n    touch-action: pan-y;\n  }\n\n  .hspp01a-slider-track::-webkit-scrollbar {\n    display: none;\n  }\n\n  .hspp01a-slider-track.is-dragging {\n    cursor: grabbing;\n    scroll-behavior: auto;\n    scroll-snap-type: none;\n  }\n\n  .hspp01a-slide {\n    flex: 0 0 100%;\n    width: 100%;\n    min-width: 100%;\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n    user-select: none;\n  }\n\n  .hspp01a-slide picture,\n  .hspp01a-slide img {\n    display: block;\n    width: 100%;\n    user-select: none;\n    -webkit-user-drag: none;\n  }\n\n  \/* 左右按钮 *\/\n  .hspp01a-arrow {\n    position: absolute;\n    top: 50%;\n    z-index: 5;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 44px;\n    height: 44px;\n    padding: 0;\n    border: 0;\n    border-radius: 50%;\n    color: #222222;\n    background: rgba(255, 255, 255, 0.85);\n    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);\n    cursor: pointer;\n    transform: translateY(-50%);\n    transition:\n      background 0.2s ease,\n      opacity 0.2s ease;\n    appearance: none;\n    -webkit-appearance: none;\n  }\n\n  .hspp01a-arrow:hover {\n    background: #ffffff;\n  }\n\n  .hspp01a-arrow:focus-visible,\n  .hspp01a-dot:focus-visible {\n    outline: 2px solid #222222;\n    outline-offset: 2px;\n  }\n\n  .hspp01a-arrow:disabled {\n    opacity: 0.35;\n    cursor: not-allowed;\n  }\n\n  .hspp01a-arrow--prev {\n    left: 20px;\n  }\n\n  .hspp01a-arrow--next {\n    right: 20px;\n  }\n\n  .hspp01a-arrow svg {\n    display: block;\n    width: 22px;\n    height: 22px;\n    pointer-events: none;\n  }\n\n  \/* 底部圆点 *\/\n  .hspp01a-dots {\n    position: absolute;\n    bottom: 18px;\n    left: 50%;\n    z-index: 5;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    transform: translateX(-50%);\n  }\n\n  .hspp01a-dot {\n    display: block;\n    width: 9px;\n    height: 9px;\n    min-width: 9px;\n    padding: 0;\n    border: 1px solid rgba(0, 0, 0, 0.35);\n    border-radius: 50%;\n    background: rgba(255, 255, 255, 0.7);\n    cursor: pointer;\n    transition:\n      width 0.2s ease,\n      background 0.2s ease,\n      border-radius 0.2s ease;\n    appearance: none;\n    -webkit-appearance: none;\n  }\n\n  .hspp01a-dot.is-active {\n    width: 24px;\n    border-radius: 10px;\n    background: #222222;\n  }\n\n  \/* 手机端 *\/\n  @media screen and (max-width: 749px) {\n    .hspp01a-divider {\n      height: 24px;\n    }\n\n    .hspp01a-arrow {\n      width: 36px;\n      height: 36px;\n    }\n\n    .hspp01a-arrow--prev {\n      left: 10px;\n    }\n\n    .hspp01a-arrow--next {\n      right: 10px;\n    }\n\n    .hspp01a-arrow svg {\n      width: 18px;\n      height: 18px;\n    }\n\n    .hspp01a-dots {\n      bottom: 10px;\n      gap: 6px;\n    }\n\n    .hspp01a-dot {\n      width: 7px;\n      height: 7px;\n      min-width: 7px;\n    }\n\n    .hspp01a-dot.is-active {\n      width: 20px;\n    }\n  }\n\u003c\/style\u003e\n\n\u003cdiv class=\"hspp01a-content\"\u003e\n\n  \u003c!-- 01：上下排列 --\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(max-width: 749px)\" srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP01A-A__01_e1b19b50-cac8-43ed-a69e-f2e989e85395.jpg?v=1784279615\"\u003e\n    \u003cimg class=\"hspp01a-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP01A-A__01.jpg?v=1784279178\" alt=\"HSPP01A-A+ Product Overview\" loading=\"eager\"\u003e\u003c\/picture\u003e\n\n  \u003cdiv class=\"hspp01a-divider\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n\n  \u003c!-- 02至02-3：左右滑动 --\u003e\n  \u003cdiv class=\"hspp01a-slider\"\u003e\n\n    \u003cdiv class=\"hspp01a-slider-track\"\u003e\n\n      \u003c!-- 02 --\u003e\n      \u003cdiv class=\"hspp01a-slide\"\u003e\n        \u003cpicture\u003e\n          \u003csource media=\"(max-width: 749px)\" srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP01A-A__02_7466ef04-a76a-4275-9601-b6de1a99f3fa.jpg?v=1784279614\"\u003e\n          \u003cimg class=\"hspp01a-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP01A-A__02.jpg?v=1784279176\" alt=\"HSPP01A-A+ Product Feature 1\" loading=\"lazy\" draggable=\"false\"\u003e\u003c\/picture\u003e\n      \u003c\/div\u003e\n\n      \u003c!-- 02-1 --\u003e\n      \u003cdiv class=\"hspp01a-slide\"\u003e\n        \u003cpicture\u003e\n          \u003csource media=\"(max-width: 749px)\" srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP01A-A__02-1_1392167a-4584-4a78-87a8-957121ac885d.jpg?v=1784279614\"\u003e\n          \u003cimg class=\"hspp01a-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP01A-A__02-1.jpg?v=1784279166\" alt=\"HSPP01A-A+ Product Feature 2\" loading=\"lazy\" draggable=\"false\"\u003e\u003c\/picture\u003e\n      \u003c\/div\u003e\n\n      \u003c!-- 02-2 --\u003e\n      \u003cdiv class=\"hspp01a-slide\"\u003e\n        \u003cpicture\u003e\n          \u003csource media=\"(max-width: 749px)\" srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP01A-A__02-2_42f52eb9-74bd-4f53-8500-75d0cc72d3f1.jpg?v=1784279614\"\u003e\n          \u003cimg class=\"hspp01a-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP01A-A__02-2.jpg?v=1784279137\" alt=\"HSPP01A-A+ Product Feature 3\" loading=\"lazy\" draggable=\"false\"\u003e\u003c\/picture\u003e\n      \u003c\/div\u003e\n\n      \u003c!-- 02-3 --\u003e\n      \u003cdiv class=\"hspp01a-slide\"\u003e\n        \u003cpicture\u003e\n          \u003csource media=\"(max-width: 749px)\" srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP01A-A__02-3.jpg?v=1784279613\"\u003e\n          \u003cimg class=\"hspp01a-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP01A-A__02-3_2.jpg?v=1784279158\" alt=\"HSPP01A-A+ Product Feature 4\" loading=\"lazy\" draggable=\"false\"\u003e\u003c\/picture\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n    \u003c!-- 上一张按钮 --\u003e\n    \u003cbutton class=\"hspp01a-arrow hspp01a-arrow--prev\" type=\"button\" aria-label=\"Previous image\"\u003e\n      \u003csvg viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\n        \u003cpath d=\"M15 18l-6-6 6-6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003c\/path\u003e\n      \u003c\/svg\u003e\n    \u003c\/button\u003e\n\n    \u003c!-- 下一张按钮 --\u003e\n    \u003cbutton class=\"hspp01a-arrow hspp01a-arrow--next\" type=\"button\" aria-label=\"Next image\"\u003e\n      \u003csvg viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\n        \u003cpath d=\"M9 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003c\/path\u003e\n      \u003c\/svg\u003e\n    \u003c\/button\u003e\n\n    \u003c!-- 底部圆点 --\u003e\n    \u003cdiv class=\"hspp01a-dots\" aria-label=\"Image navigation\"\u003e\n      \u003cbutton class=\"hspp01a-dot is-active\" type=\"button\" aria-label=\"Image 1\" aria-current=\"true\"\u003e\u003c\/button\u003e\n\n      \u003cbutton class=\"hspp01a-dot\" type=\"button\" aria-label=\"Image 2\" aria-current=\"false\"\u003e\u003c\/button\u003e\n\n      \u003cbutton class=\"hspp01a-dot\" type=\"button\" aria-label=\"Image 3\" aria-current=\"false\"\u003e\u003c\/button\u003e\n\n      \u003cbutton class=\"hspp01a-dot\" type=\"button\" aria-label=\"Image 4\" aria-current=\"false\"\u003e\u003c\/button\u003e\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"hspp01a-divider\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n\n  \u003c!-- 03：上下排列 --\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(max-width: 749px)\" srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP01A-A__03_f587751f-6ff1-4082-bc68-68e7b011a994.jpg?v=1784279614\"\u003e\n    \u003cimg class=\"hspp01a-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP01A-A__03.jpg?v=1784279144\" alt=\"HSPP01A-A+ Product Details\" loading=\"lazy\"\u003e\u003c\/picture\u003e\n\n  \u003cdiv class=\"hspp01a-divider\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n\n  \u003c!-- 04：上下排列 --\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(max-width: 749px)\" srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP01A-A__04_ca99e541-9746-4b52-9aa2-a2310a659ad6.jpg?v=1784279614\"\u003e\n    \u003cimg class=\"hspp01a-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP01A-A__04.jpg?v=1784279148\" alt=\"HSPP01A-A+ Usage Information\" loading=\"lazy\"\u003e\u003c\/picture\u003e\n\n  \u003cdiv class=\"hspp01a-divider\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n\n  \u003c!-- 05：上下排列 --\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(max-width: 749px)\" srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP01A-A__05_79dae724-fb07-4f63-9e2e-cc41d702a1f8.jpg?v=1784279613\"\u003e\n    \u003cimg class=\"hspp01a-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP01A-A__05.jpg?v=1784279141\" alt=\"HSPP01A-A+ Product Information\" loading=\"lazy\"\u003e\u003c\/picture\u003e\n\n\u003c\/div\u003e\n\n\u003cscript\u003e\n  (function () {\n    function initializeHspp01aSliders() {\n      var sliders = document.querySelectorAll(\n        '.hspp01a-slider:not([data-slider-initialized])'\n      );\n\n      sliders.forEach(function (slider) {\n        slider.setAttribute('data-slider-initialized', 'true');\n\n        var track = slider.querySelector('.hspp01a-slider-track');\n        var slides = Array.prototype.slice.call(\n          slider.querySelectorAll('.hspp01a-slide')\n        );\n        var prevButton = slider.querySelector('.hspp01a-arrow--prev');\n        var nextButton = slider.querySelector('.hspp01a-arrow--next');\n        var dots = Array.prototype.slice.call(\n          slider.querySelectorAll('.hspp01a-dot')\n        );\n\n        if (!track || slides.length === 0) {\n          return;\n        }\n\n        var currentIndex = 0;\n        var isDragging = false;\n        var startX = 0;\n        var startScrollLeft = 0;\n        var dragDistance = 0;\n        var scrollTimer = null;\n        var resizeTimer = null;\n\n        function getSlideWidth() {\n          return track.clientWidth;\n        }\n\n        function normalizeIndex(index) {\n          return Math.max(0, Math.min(index, slides.length - 1));\n        }\n\n        function updateControls(index) {\n          currentIndex = normalizeIndex(index);\n\n          dots.forEach(function (dot, dotIndex) {\n            var isActive = dotIndex === currentIndex;\n\n            dot.classList.toggle('is-active', isActive);\n            dot.setAttribute(\n              'aria-current',\n              isActive ? 'true' : 'false'\n            );\n          });\n\n          if (prevButton) {\n            prevButton.disabled = currentIndex === 0;\n          }\n\n          if (nextButton) {\n            nextButton.disabled =\n              currentIndex === slides.length - 1;\n          }\n        }\n\n        function goToSlide(index, smooth) {\n          var targetIndex = normalizeIndex(index);\n          var slideWidth = getSlideWidth();\n\n          if (!slideWidth) {\n            return;\n          }\n\n          track.scrollTo({\n            left: targetIndex * slideWidth,\n            behavior: smooth === false ? 'auto' : 'smooth'\n          });\n\n          updateControls(targetIndex);\n        }\n\n        if (prevButton) {\n          prevButton.addEventListener('click', function (event) {\n            event.preventDefault();\n            event.stopPropagation();\n            goToSlide(currentIndex - 1, true);\n          });\n        }\n\n        if (nextButton) {\n          nextButton.addEventListener('click', function (event) {\n            event.preventDefault();\n            event.stopPropagation();\n            goToSlide(currentIndex + 1, true);\n          });\n        }\n\n        dots.forEach(function (dot, index) {\n          dot.addEventListener('click', function (event) {\n            event.preventDefault();\n            event.stopPropagation();\n            goToSlide(index, true);\n          });\n        });\n\n        track.addEventListener('scroll', function () {\n          window.clearTimeout(scrollTimer);\n\n          scrollTimer = window.setTimeout(function () {\n            if (isDragging) {\n              return;\n            }\n\n            var slideWidth = getSlideWidth();\n\n            if (!slideWidth) {\n              return;\n            }\n\n            var index = Math.round(\n              track.scrollLeft \/ slideWidth\n            );\n\n            updateControls(index);\n          }, 80);\n        });\n\n        track.addEventListener('mousedown', function (event) {\n          if (event.button !== 0) {\n            return;\n          }\n\n          isDragging = true;\n          startX = event.clientX;\n          startScrollLeft = track.scrollLeft;\n          dragDistance = 0;\n\n          track.classList.add('is-dragging');\n          event.preventDefault();\n        });\n\n        window.addEventListener('mousemove', function (event) {\n          if (!isDragging) {\n            return;\n          }\n\n          dragDistance = event.clientX - startX;\n          track.scrollLeft =\n            startScrollLeft - dragDistance;\n        });\n\n        function endDrag() {\n          if (!isDragging) {\n            return;\n          }\n\n          isDragging = false;\n          track.classList.remove('is-dragging');\n\n          var slideWidth = getSlideWidth();\n\n          if (!slideWidth) {\n            return;\n          }\n\n          var threshold = slideWidth * 0.15;\n          var targetIndex = Math.round(\n            track.scrollLeft \/ slideWidth\n          );\n\n          if (Math.abs(dragDistance) \u003e threshold) {\n            targetIndex =\n              dragDistance \u003c 0\n                ? currentIndex + 1\n                : currentIndex - 1;\n          }\n\n          goToSlide(targetIndex, true);\n        }\n\n        window.addEventListener('mouseup', endDrag);\n        track.addEventListener('mouseleave', endDrag);\n\n        slides.forEach(function (slide) {\n          var images = slide.querySelectorAll('img');\n\n          images.forEach(function (image) {\n            image.setAttribute('draggable', 'false');\n\n            image.addEventListener(\n              'dragstart',\n              function (event) {\n                event.preventDefault();\n              }\n            );\n          });\n        });\n\n        window.addEventListener('resize', function () {\n          window.clearTimeout(resizeTimer);\n\n          resizeTimer = window.setTimeout(function () {\n            goToSlide(currentIndex, false);\n          }, 100);\n        });\n\n        updateControls(0);\n      });\n    }\n\n    if (document.readyState === 'loading') {\n      document.addEventListener(\n        'DOMContentLoaded',\n        initializeHspp01aSliders\n      );\n    } else {\n      initializeHspp01aSliders();\n    }\n\n    document.addEventListener(\n      'shopify:section:load',\n      initializeHspp01aSliders\n    );\n  })();\n\u003c\/script\u003e","brand":"Dewenwils","offers":[{"title":"Default Title","offer_id":53340418408745,"sku":"HSPP01A","price":489.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP01A-1.jpg?v=1784282320"},{"product_id":"3-hp-swimming-pool-pump-shspp02a","title":"3 HP Swimming Pool Pump - SHSPP02A","description":"\u003cstyle\u003e\n  .hspp02a-content {\n    width: 100%;\n    max-width: 1920px;\n    margin: 0 auto;\n    overflow: hidden;\n  }\n\n  .hspp02a-image {\n    display: block;\n    width: 100%;\n    height: auto;\n    margin: 0;\n    user-select: none;\n    -webkit-user-drag: none;\n  }\n\n  \/* 图片集合之间的空白 *\/\n  .hspp02a-divider {\n    width: 100%;\n    height: 40px;\n  }\n\n  \/* 左右滑动区域 *\/\n  .hspp02a-slider {\n    position: relative;\n    width: 100%;\n    overflow: hidden;\n  }\n\n  .hspp02a-slider-track {\n    display: flex;\n    width: 100%;\n    overflow-x: auto;\n    overflow-y: hidden;\n    scroll-snap-type: x mandatory;\n    scroll-behavior: smooth;\n    -webkit-overflow-scrolling: touch;\n    scrollbar-width: none;\n    cursor: grab;\n    user-select: none;\n    touch-action: pan-y;\n  }\n\n  .hspp02a-slider-track::-webkit-scrollbar {\n    display: none;\n  }\n\n  .hspp02a-slider-track.is-dragging {\n    cursor: grabbing;\n    scroll-behavior: auto;\n    scroll-snap-type: none;\n  }\n\n  .hspp02a-slide {\n    flex: 0 0 100%;\n    width: 100%;\n    min-width: 100%;\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n    user-select: none;\n  }\n\n  .hspp02a-slide picture,\n  .hspp02a-slide img {\n    display: block;\n    width: 100%;\n    pointer-events: auto;\n    user-select: none;\n    -webkit-user-drag: none;\n  }\n\n  \/* 左右切换按钮 *\/\n  .hspp02a-arrow {\n    position: absolute;\n    top: 50%;\n    z-index: 5;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 44px;\n    height: 44px;\n    padding: 0;\n    border: 0;\n    border-radius: 50%;\n    color: #222222;\n    background: rgba(255, 255, 255, 0.85);\n    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);\n    cursor: pointer;\n    transform: translateY(-50%);\n    transition:\n      background 0.2s ease,\n      opacity 0.2s ease;\n    appearance: none;\n    -webkit-appearance: none;\n  }\n\n  .hspp02a-arrow:hover {\n    background: #ffffff;\n  }\n\n  .hspp02a-arrow:focus-visible,\n  .hspp02a-dot:focus-visible {\n    outline: 2px solid #222222;\n    outline-offset: 2px;\n  }\n\n  .hspp02a-arrow:disabled {\n    opacity: 0.35;\n    cursor: not-allowed;\n  }\n\n  .hspp02a-arrow--prev {\n    left: 20px;\n  }\n\n  .hspp02a-arrow--next {\n    right: 20px;\n  }\n\n  .hspp02a-arrow svg {\n    display: block;\n    width: 22px;\n    height: 22px;\n    pointer-events: none;\n  }\n\n  \/* 底部切换圆点 *\/\n  .hspp02a-dots {\n    position: absolute;\n    bottom: 18px;\n    left: 50%;\n    z-index: 5;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    transform: translateX(-50%);\n  }\n\n  .hspp02a-dot {\n    display: block;\n    width: 9px;\n    height: 9px;\n    min-width: 9px;\n    padding: 0;\n    border: 1px solid rgba(0, 0, 0, 0.35);\n    border-radius: 50%;\n    background: rgba(255, 255, 255, 0.7);\n    cursor: pointer;\n    transition:\n      width 0.2s ease,\n      background 0.2s ease,\n      border-radius 0.2s ease;\n    appearance: none;\n    -webkit-appearance: none;\n  }\n\n  .hspp02a-dot.is-active {\n    width: 24px;\n    border-radius: 10px;\n    background: #222222;\n  }\n\n  \/* 手机端 *\/\n  @media screen and (max-width: 749px) {\n    .hspp02a-divider {\n      height: 24px;\n    }\n\n    .hspp02a-arrow {\n      width: 36px;\n      height: 36px;\n    }\n\n    .hspp02a-arrow--prev {\n      left: 10px;\n    }\n\n    .hspp02a-arrow--next {\n      right: 10px;\n    }\n\n    .hspp02a-arrow svg {\n      width: 18px;\n      height: 18px;\n    }\n\n    .hspp02a-dots {\n      bottom: 10px;\n      gap: 6px;\n    }\n\n    .hspp02a-dot {\n      width: 7px;\n      height: 7px;\n      min-width: 7px;\n    }\n\n    .hspp02a-dot.is-active {\n      width: 20px;\n    }\n  }\n\u003c\/style\u003e\n\n\u003cdiv class=\"hspp02a-content\"\u003e\n\n  \u003c!-- 01：单独上下排列 --\u003e\n  \u003cpicture\u003e\n    \u003csource srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP02A-A__01_040ace86-5d10-491d-9734-ed75b31acf9e.jpg?v=1784281038\" media=\"(max-width: 749px)\"\u003e\n    \u003cimg loading=\"eager\" alt=\"HSPP02A-A+ Product Overview\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP02A-A__01.jpg?v=1784280810\" class=\"hspp02a-image\"\u003e\u003c\/picture\u003e\n\n  \u003c!-- 01和02图片集合之间的空白 --\u003e\n  \u003cdiv aria-hidden=\"true\" class=\"hspp02a-divider\"\u003e\u003c\/div\u003e\n\n  \u003c!-- 02至02-3：左右滑动集合 --\u003e\n  \u003cdiv class=\"hspp02a-slider\"\u003e\n\n    \u003cdiv class=\"hspp02a-slider-track\"\u003e\n\n      \u003c!-- 02 --\u003e\n      \u003cdiv class=\"hspp02a-slide\"\u003e\n        \u003cpicture\u003e\n          \u003csource srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP02A-A__02_14f6c881-f6e2-47d1-a0bc-9229418a397e.jpg?v=1784281038\" media=\"(max-width: 749px)\"\u003e\n          \u003cimg loading=\"lazy\" draggable=\"false\" alt=\"HSPP02A-A+ Product Feature 1\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP02A-A__02.jpg?v=1784280811\" class=\"hspp02a-image\"\u003e\u003c\/picture\u003e\n      \u003c\/div\u003e\n\n      \u003c!-- 02-1 --\u003e\n      \u003cdiv class=\"hspp02a-slide\"\u003e\n        \u003cpicture\u003e\n          \u003csource srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP02A-A__02-1_b19900d1-a4b0-4290-8f35-59d74ac2a357.jpg?v=1784281038\" media=\"(max-width: 749px)\"\u003e\n          \u003cimg loading=\"lazy\" draggable=\"false\" alt=\"HSPP02A-A+ Product Feature 2\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP02A-A__02-1.jpg?v=1784280810\" class=\"hspp02a-image\"\u003e\u003c\/picture\u003e\n      \u003c\/div\u003e\n\n      \u003c!-- 02-2 --\u003e\n      \u003cdiv class=\"hspp02a-slide\"\u003e\n        \u003cpicture\u003e\n          \u003csource srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP02A-A__02-2_9406a15d-f326-413b-b7e5-1156bd6a6774.jpg?v=1784281038\" media=\"(max-width: 749px)\"\u003e\n          \u003cimg loading=\"lazy\" draggable=\"false\" alt=\"HSPP02A-A+ Product Feature 3\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP02A-A__02-2.jpg?v=1784280811\" class=\"hspp02a-image\"\u003e\u003c\/picture\u003e\n      \u003c\/div\u003e\n\n      \u003c!-- 02-3 --\u003e\n      \u003cdiv class=\"hspp02a-slide\"\u003e\n        \u003cpicture\u003e\n          \u003csource srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP02A-A__02-3_2c2fe707-5f85-4f02-8c57-89f96609da16.jpg?v=1784281038\" media=\"(max-width: 749px)\"\u003e\n          \u003cimg loading=\"lazy\" draggable=\"false\" alt=\"HSPP02A-A+ Product Feature 4\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP02A-A__02-3.jpg?v=1784280811\" class=\"hspp02a-image\"\u003e\u003c\/picture\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n    \u003c!-- 上一张按钮 --\u003e\n    \u003cbutton aria-label=\"Previous image\" type=\"button\" class=\"hspp02a-arrow hspp02a-arrow--prev\"\u003e\n      \u003csvg aria-hidden=\"true\" viewbox=\"0 0 24 24\"\u003e\n        \u003cpath stroke-linejoin=\"round\" stroke-linecap=\"round\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" d=\"M15 18l-6-6 6-6\"\u003e\u003c\/path\u003e\n      \u003c\/svg\u003e\n    \u003c\/button\u003e\n\n    \u003c!-- 下一张按钮 --\u003e\n    \u003cbutton aria-label=\"Next image\" type=\"button\" class=\"hspp02a-arrow hspp02a-arrow--next\"\u003e\n      \u003csvg aria-hidden=\"true\" viewbox=\"0 0 24 24\"\u003e\n        \u003cpath stroke-linejoin=\"round\" stroke-linecap=\"round\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" d=\"M9 6l6 6-6 6\"\u003e\u003c\/path\u003e\n      \u003c\/svg\u003e\n    \u003c\/button\u003e\n\n    \u003c!-- 底部切换圆点 --\u003e\n    \u003cdiv aria-label=\"Image navigation\" class=\"hspp02a-dots\"\u003e\n      \u003cbutton aria-label=\"Image 1\" aria-current=\"true\" type=\"button\" class=\"hspp02a-dot is-active\"\u003e\u003c\/button\u003e\n\n      \u003cbutton aria-label=\"Image 2\" aria-current=\"false\" type=\"button\" class=\"hspp02a-dot\"\u003e\u003c\/button\u003e\n\n      \u003cbutton aria-label=\"Image 3\" aria-current=\"false\" type=\"button\" class=\"hspp02a-dot\"\u003e\u003c\/button\u003e\n\n      \u003cbutton aria-label=\"Image 4\" aria-current=\"false\" type=\"button\" class=\"hspp02a-dot\"\u003e\u003c\/button\u003e\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\n  \u003c!-- 02图片集合和03之间的空白 --\u003e\n  \u003cdiv aria-hidden=\"true\" class=\"hspp02a-divider\"\u003e\u003c\/div\u003e\n\n  \u003c!-- 03：单独上下排列 --\u003e\n  \u003cpicture\u003e\n    \u003csource srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP02A-A__03_8aeca579-0df3-401e-acc7-59158d5ae130.jpg?v=1784281038\" media=\"(max-width: 749px)\"\u003e\n    \u003cimg loading=\"lazy\" alt=\"HSPP02A-A+ Product Details\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP02A-A__03.jpg?v=1784280811\" class=\"hspp02a-image\"\u003e\u003c\/picture\u003e\n\n  \u003c!-- 03和04之间的空白 --\u003e\n  \u003cdiv aria-hidden=\"true\" class=\"hspp02a-divider\"\u003e\u003c\/div\u003e\n\n  \u003c!-- 04：单独上下排列 --\u003e\n  \u003cpicture\u003e\n    \u003csource srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP02A-A__04_52d92175-1c4d-492b-b68e-e028f38992fa.jpg?v=1784281038\" media=\"(max-width: 749px)\"\u003e\n    \u003cimg loading=\"lazy\" alt=\"HSPP02A-A+ Usage Information\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP02A-A__04.jpg?v=1784280812\" class=\"hspp02a-image\"\u003e\u003c\/picture\u003e\n\n  \u003c!-- 04和05之间的空白 --\u003e\n  \u003cdiv aria-hidden=\"true\" class=\"hspp02a-divider\"\u003e\u003c\/div\u003e\n\n  \u003c!-- 05：单独上下排列 --\u003e\n  \u003cpicture\u003e\n    \u003csource srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP02A-A__05_a82f5ff9-afba-4ea9-b6e5-b003be4a8b95.jpg?v=1784281038\" media=\"(max-width: 749px)\"\u003e\n    \u003cimg loading=\"lazy\" alt=\"HSPP02A-A+ Product Information\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP02A-A__05.jpg?v=1784280811\" class=\"hspp02a-image\"\u003e\u003c\/picture\u003e\n\n\u003c\/div\u003e\n\n\u003cscript\u003e\n  (function () {\n    function initializeHspp02aSliders() {\n      var sliders = document.querySelectorAll(\n        '.hspp02a-slider:not([data-slider-initialized])'\n      );\n\n      sliders.forEach(function (slider) {\n        slider.setAttribute('data-slider-initialized', 'true');\n\n        var track = slider.querySelector('.hspp02a-slider-track');\n        var slides = Array.prototype.slice.call(\n          slider.querySelectorAll('.hspp02a-slide')\n        );\n        var prevButton = slider.querySelector('.hspp02a-arrow--prev');\n        var nextButton = slider.querySelector('.hspp02a-arrow--next');\n        var dots = Array.prototype.slice.call(\n          slider.querySelectorAll('.hspp02a-dot')\n        );\n\n        if (!track || slides.length === 0) {\n          return;\n        }\n\n        var currentIndex = 0;\n        var isDragging = false;\n        var startX = 0;\n        var startScrollLeft = 0;\n        var dragDistance = 0;\n        var scrollTimer = null;\n\n        function getSlideWidth() {\n          return track.clientWidth;\n        }\n\n        function normalizeIndex(index) {\n          return Math.max(0, Math.min(index, slides.length - 1));\n        }\n\n        function updateControls(index) {\n          currentIndex = normalizeIndex(index);\n\n          dots.forEach(function (dot, dotIndex) {\n            var isActive = dotIndex === currentIndex;\n\n            dot.classList.toggle('is-active', isActive);\n            dot.setAttribute(\n              'aria-current',\n              isActive ? 'true' : 'false'\n            );\n          });\n\n          if (prevButton) {\n            prevButton.disabled = currentIndex === 0;\n          }\n\n          if (nextButton) {\n            nextButton.disabled = currentIndex === slides.length - 1;\n          }\n        }\n\n        function goToSlide(index, smooth) {\n          var targetIndex = normalizeIndex(index);\n          var slideWidth = getSlideWidth();\n\n          if (!slideWidth) {\n            return;\n          }\n\n          track.scrollTo({\n            left: targetIndex * slideWidth,\n            behavior: smooth === false ? 'auto' : 'smooth'\n          });\n\n          updateControls(targetIndex);\n        }\n\n        if (prevButton) {\n          prevButton.addEventListener('click', function (event) {\n            event.preventDefault();\n            event.stopPropagation();\n            goToSlide(currentIndex - 1, true);\n          });\n        }\n\n        if (nextButton) {\n          nextButton.addEventListener('click', function (event) {\n            event.preventDefault();\n            event.stopPropagation();\n            goToSlide(currentIndex + 1, true);\n          });\n        }\n\n        dots.forEach(function (dot, index) {\n          dot.addEventListener('click', function (event) {\n            event.preventDefault();\n            event.stopPropagation();\n            goToSlide(index, true);\n          });\n        });\n\n        track.addEventListener('scroll', function () {\n          window.clearTimeout(scrollTimer);\n\n          scrollTimer = window.setTimeout(function () {\n            if (isDragging) {\n              return;\n            }\n\n            var slideWidth = getSlideWidth();\n\n            if (!slideWidth) {\n              return;\n            }\n\n            var index = Math.round(track.scrollLeft \/ slideWidth);\n            updateControls(index);\n          }, 80);\n        });\n\n        track.addEventListener('mousedown', function (event) {\n          if (event.button !== 0) {\n            return;\n          }\n\n          isDragging = true;\n          startX = event.clientX;\n          startScrollLeft = track.scrollLeft;\n          dragDistance = 0;\n\n          track.classList.add('is-dragging');\n          event.preventDefault();\n        });\n\n        window.addEventListener('mousemove', function (event) {\n          if (!isDragging) {\n            return;\n          }\n\n          dragDistance = event.clientX - startX;\n          track.scrollLeft = startScrollLeft - dragDistance;\n        });\n\n        window.addEventListener('mouseup', function () {\n          if (!isDragging) {\n            return;\n          }\n\n          isDragging = false;\n          track.classList.remove('is-dragging');\n\n          var slideWidth = getSlideWidth();\n\n          if (!slideWidth) {\n            return;\n          }\n\n          var threshold = slideWidth * 0.15;\n          var targetIndex = Math.round(track.scrollLeft \/ slideWidth);\n\n          if (Math.abs(dragDistance) \u003e threshold) {\n            if (dragDistance \u003c 0) {\n              targetIndex = currentIndex + 1;\n            } else {\n              targetIndex = currentIndex - 1;\n            }\n          }\n\n          goToSlide(targetIndex, true);\n        });\n\n        track.addEventListener('mouseleave', function () {\n          if (!isDragging) {\n            return;\n          }\n\n          isDragging = false;\n          track.classList.remove('is-dragging');\n\n          var slideWidth = getSlideWidth();\n\n          if (!slideWidth) {\n            return;\n          }\n\n          var targetIndex = Math.round(track.scrollLeft \/ slideWidth);\n          goToSlide(targetIndex, true);\n        });\n\n        slides.forEach(function (slide) {\n          var images = slide.querySelectorAll('img');\n\n          images.forEach(function (image) {\n            image.setAttribute('draggable', 'false');\n\n            image.addEventListener('dragstart', function (event) {\n              event.preventDefault();\n            });\n          });\n        });\n\n        window.addEventListener('resize', function () {\n          goToSlide(currentIndex, false);\n        });\n\n        updateControls(0);\n      });\n    }\n\n    if (document.readyState === 'loading') {\n      document.addEventListener(\n        'DOMContentLoaded',\n        initializeHspp02aSliders\n      );\n    } else {\n      initializeHspp02aSliders();\n    }\n\n    document.addEventListener(\n      'shopify:section:load',\n      initializeHspp02aSliders\n    );\n  })();\n\u003c\/script\u003e","brand":"Dewenwils","offers":[{"title":"Default Title","offer_id":53340488270121,"sku":"HSPP02A","price":579.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/files\/HSPP02A-1.jpg?v=1784282296"}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0718\/7608\/4009\/collections\/HSPP02A-1.jpg?v=1784511084","url":"https:\/\/dewenwils.com\/collections\/pool-pump.oembed","provider":"Dewenwils","version":"1.0","type":"link"}