{"product_id":"f-one-rocket-air","title":"F-One ROCKET AIR","description":"\u003ch3\u003eEasy to store and carry\u003c\/h3\u003e\u003chr style=\"max-width: 600px; margin: 1rem 0 !important;\"\u003eThe ROCKET AIR range is a line of inflatable boards essentially dedicated to foiling sports: Surf foil, SUP foil, wing foil, windfoil and even kitefoil.\n\nThey are developed following the outlines and sizes as the rigid boards and offer great stability with the extra volume brought by the inflatable technology. The foil position is also identical and provides the same perfect balance in flight and for take-off. The ROCKET AIR boards are nearly indestructible and will grant you some extra padding if you fall. They are built using higher grade Dropstitch, bringing extra stiffness that is essential to control the board properly when foiling. The weight of the board is incredibly light, making them easy to handle and a lot of fun, even for advanced riders. Finally, the ROCKET AIR boards can all be stored in a small bag to be easily brought on your next adventure.\u003cstyle\u003e\n    .progress-container {\n        display: flex;\n        justify-content: space-between;\n        background-color: #f9f9f9;\n        padding: 40px 25px 60px 25px;\n    }\n    .progress-ring {\n        width: 150px;\n        height: 150px;\n        position: relative;\n        text-align: center;\n    }\n    .progress-ring circle {\n        fill: transparent;\n        stroke: #ff6800;\n        stroke-width: 15;\n        transform: rotate(-90deg);\n        transform-origin: 50% 50%;\n        transition: stroke-dashoffset 0.5s;\n    }\n    .progress-ring .ring-background {\n        fill: transparent;\n        stroke: #ccc;\n        stroke-width: 15;\n        transform: rotate(-90deg);\n        transform-origin: 50% 50%;\n    }\n    .progress-text {\n        position: absolute;\n        top: 50%;\n        left: 50%;\n        transform: translate(-50%, -50%);\n        font-size: 24px;\n    }\n    .progress-title {\n        font-size: 20px;\n        color: black;\n        margin-top: 10px;\n    }\n    @media (max-width: 768px) {\n        .progress-container {\n            flex-direction: column;\n            align-items: center;\n        }\n        .progress-ring {\n            margin-bottom: 50px;\n        }\n    }\n\u003c\/style\u003e\n\u003ch3\u003ePERFORMANCE\u003c\/h3\u003e\n\u003chr style=\"border: none; border-top: 1px solid #B3B3B3; width: 30%; margin: 0 0 20px 0;\"\u003e\n\n\u003cdiv class=\"progress-container\"\u003e\n    \u003cdiv class=\"progress-ring\" id=\"ring1\" data-progress=\"100\"\u003e\n        \u003csvg width=\"150\" height=\"150\"\u003e\n            \u003ccircle class=\"ring-background\" cx=\"75\" cy=\"75\" r=\"65\"\u003e\u003c\/circle\u003e\n            \u003ccircle class=\"ring\" cx=\"75\" cy=\"75\" r=\"65\"\u003e\u003c\/circle\u003e\n        \u003c\/svg\u003e\n        \u003cdiv class=\"progress-title\"\u003eAccessibility\u003c\/div\u003e\n        \u003cdiv class=\"progress-text\" id=\"progress1\"\u003e0%\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"progress-ring\" id=\"ring2\" data-progress=\"100\"\u003e\n        \u003csvg width=\"150\" height=\"150\"\u003e\n            \u003ccircle class=\"ring-background\" cx=\"75\" cy=\"75\" r=\"65\"\u003e\u003c\/circle\u003e\n            \u003ccircle class=\"ring\" cx=\"75\" cy=\"75\" r=\"65\"\u003e\u003c\/circle\u003e\n        \u003c\/svg\u003e\n        \u003cdiv class=\"progress-title\"\u003eFreeride\u003c\/div\u003e\n        \u003cdiv class=\"progress-text\" id=\"progress2\"\u003e0%\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"progress-ring\" id=\"ring3\" data-progress=\"40\"\u003e\n        \u003csvg width=\"150\" height=\"150\"\u003e\n            \u003ccircle class=\"ring-background\" cx=\"75\" cy=\"75\" r=\"65\"\u003e\u003c\/circle\u003e\n            \u003ccircle class=\"ring\" cx=\"75\" cy=\"75\" r=\"65\"\u003e\u003c\/circle\u003e\n        \u003c\/svg\u003e\n        \u003cdiv class=\"progress-title\"\u003eFreestyle\u003c\/div\u003e\n        \u003cdiv class=\"progress-text\" id=\"progress3\"\u003e0%\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"progress-ring\" id=\"ring4\" data-progress=\"75\"\u003e\n        \u003csvg width=\"150\" height=\"150\"\u003e\n            \u003ccircle class=\"ring-background\" cx=\"75\" cy=\"75\" r=\"65\"\u003e\u003c\/circle\u003e\n            \u003ccircle class=\"ring\" cx=\"75\" cy=\"75\" r=\"65\"\u003e\u003c\/circle\u003e\n        \u003c\/svg\u003e\n        \u003cdiv class=\"progress-title\"\u003eCarving\u003c\/div\u003e\n        \u003cdiv class=\"progress-text\" id=\"progress4\"\u003e0%\u003c\/div\u003e\n    \u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    document.addEventListener(\"DOMContentLoaded\", function() {\n        function animateProgress(ringId, from, to, duration) {\n            const ring = document.querySelector(`#ring${ringId} .ring`);\n            const text = document.getElementById(`progress${ringId}`);\n            const title = document.querySelector(`#ring${ringId} .progress-title`);\n            const circumference = 2 * Math.PI * 65; \/\/ Hardcoding the radius as 65 for this example\n            const increment = (to - from) \/ (duration * 60);\n            let current = from;\n\n            function update() {\n                if ((increment \u003e 0 \u0026\u0026 current \u003c to) || (increment \u003c 0 \u0026\u0026 current \u003e to)) {\n                    const offset = circumference - (current \/ 100) * circumference;\n                    ring.style.strokeDasharray = `${circumference} ${circumference}`;\n                    ring.style.strokeDashoffset = offset;\n                    text.textContent = `${Math.round(current)}%`;\n\n                    current += increment;\n                    requestAnimationFrame(update);\n                } else {\n                    const offset = circumference - (to \/ 100) * circumference;\n                    ring.style.strokeDashoffset = offset;\n                    text.textContent = `${to}%`;\n                }\n            }\n\n            update();\n        }\n\n        function handleIntersection(entries, observer) {\n            entries.forEach((entry) =\u003e {\n                if (entry.isIntersecting) {\n                    const ringId = entry.target.id.replace('ring', '');\n                    const from = 0;\n                    const to = parseInt(entry.target.getAttribute('data-progress'), 10);\n                    animateProgress(ringId, from, to, 2);\n                    observer.unobserve(entry.target);\n                }\n            });\n        }\n\n        const rings = document.querySelectorAll('.progress-ring');\n\n        const observer = new IntersectionObserver(handleIntersection, {\n            root: null,\n            rootMargin: '0px',\n            threshold: 0.2 \/\/ Adjust this threshold as needed\n        });\n\n        rings.forEach((ring) =\u003e {\n            observer.observe(ring);\n        });\n    });\n\u003c\/script\u003e","brand":"F-One","offers":[{"title":"125L","offer_id":50625029243217,"sku":"FW23-77218-1001-5.10","price":615.0,"currency_code":"EUR","in_stock":true},{"title":"140L","offer_id":50619928772945,"sku":"FW23-77218-1001-6.6","price":799.0,"currency_code":"EUR","in_stock":false},{"title":"190L","offer_id":50619928805713,"sku":"FW23-77218-1001-7.2","price":919.0,"currency_code":"EUR","in_stock":false},{"title":"168L","offer_id":50619928838481,"sku":"FW23-77218-1001-7.6","price":919.0,"currency_code":"EUR","in_stock":false},{"title":"185L","offer_id":50619928871249,"sku":"FW23-77218-1001-7.11","price":939.0,"currency_code":"EUR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0512\/0838\/8795\/products\/f-one-rocket-air-2022_db190f24-39f3-4b67-89fc-46d3b3fe9932.jpg?v=1652378267","url":"https:\/\/www.billy.be\/products\/f-one-rocket-air","provider":"Billy.be","version":"1.0","type":"link"}