Privacy Policyted_at":"2021-12-16T15:59:39+00:00","alt":null,"width":1210,"height":1210,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot_2021-12-16_at_15.35.36.png?v=1639670379","variant_ids":[42166822633698]},"available":false,"name":"Burgtec Top Cap - Purple","public_title":"Purple","options":["Purple"],"price":599,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","featured_media":{"alt":null,"id":28858640302306,"position":4,"preview_image":{"aspect_ratio":1.0,"height":1210,"width":1210,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot_2021-12-16_at_15.35.36.png?v=1639670379"}},"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":42166822666466,"title":"Bronze","option1":"Bronze","option2":null,"option3":null,"sku":"9305","requires_shipping":true,"taxable":true,"featured_image":{"id":36308592296162,"product_id":7476243169506,"position":5,"created_at":"2021-12-16T15:59:52+00:00","updated_at":"2021-12-16T15:59:52+00:00","alt":null,"width":1210,"height":1
210,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot_2021-12-16_at_15.35.38.png?v=1639670392","variant_ids":[42166822666466]},"available":false,"name":"Burgtec Top Cap - Bronze","public_title":"Bronze","options":["Bronze"],"price":599,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","featured_media":{"alt":null,"id":28858642071778,"position":5,"preview_image":{"aspect_ratio":1.0,"height":1210,"width":1210,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot_2021-12-16_at_15.35.38.png?v=1639670392"}},"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":42166822699234,"title":"Orange","option1":"Orange","option2":null,"option3":null,"sku":"9306","requires_shipping":true,"taxable":true,"featured_image":{"id":36308593410274,"product_id":7476243169506,"position":6,"created_at":"2021-12-16T16:00:06+00:00","updated_at":"2021-12-16T16:00:06+00:00","alt":null,"width":1210,"height":1210,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot_2021 nt=42170956841186" }, { "@type" : "Offer","sku": "RSP8064001","availability" : "http://schema.org/OutOfStock", "price" : 750.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/rockshox-reverb-axs-seatpost-30-9?variant=42170956873954" }, { "@type" : "Offer","sku": "RSP8064002","availability" : "http://schema.org/OutOfStock", "price" : 750.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/rockshox-reverb-axs-seatpost-30-9?variant=42170956906722" }, { "@type" : "Offer","sku": "RSP8064003","availability" : "http://schema.org/OutOfStock", "price" : 750.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/rockshox-reverb-axs-seatpost-30-9?variant=42170956939490" } ] } Cookie Policy-12-16_at_15.35.41.png?v=1639670406","variant_ids":[42166822699234]},"available":false,"name":"Burgtec Top Cap - Orange","public_title":"Orange","options":["Orange"],"price":599,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","featured_media":{"alt":null,"id":28858643284194,"position":6,"preview_image":{"aspect_ratio":1.0,"height":1210,"width":1210,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot_2021-12-16_at_15.35.41.png?v=1639670406"}},"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":42166822732002,"title":"Silver","option1":"Silver","option2":null,"option3":null,"sku":"9307","requires_shipping":true,"taxable":true,"featured_image":{"id":36308594327778,"product_id":7476243169506,"position":7,"created_at":"2021-12-16T16:00:23+00:00","updated_at":"2021-12-16T16:00:23+00:00","alt":null,"width":1210,"height":1210,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot_2021-12-16_at_15.35.44.png?v=1639670423","variant_ids":[42166822732002]},"available":false,"name":"Burgtec Top Cap - Silver","public_title":"Silver","options":["Silver"],"price":599,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","featured_media":{"alt":null,"id":28858644070626,"position":7,"preview_image":{"aspect_ratio":1.0,"height":1210,"width":1210,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot_2021-12-16_at_15.35.44.png?v=1639670423"}},"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":42166822764770,"title":"Yellow","option1":"Yellow","option2":null,"option3":null,"sku":"9308","requires_shipping":true,"taxable":true,"featured_image":{"id":36308594655458,"product_id":7476243169506,"position":8,"created_at":"2021-12-16T16:00:27+00:00","updated_at":"2021-12-16T16:00:27+00:00","alt":null,"width":1210,"height":1210,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot_2021-12-16_at_15.35.47.png?v=1639670427","variant_ids":[42166822764770]},"available":false,"name":"Burgtec Top Cap - Yellow","public_title":"Yel£7.99
Terms of Servicelow","options":["Yellow"],"price":599,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","featured_media":{"alt":null,"id":28858644398306,"position":8,"preview_image":{"aspect_ratio":1.0,"height":1210,"width":1210,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot_2021-12-16_at_15.35.47.png?v=1639670427"}},"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":42166822797538,"title":"Pink","option1":"Pink","option2":null,"option3":null,"sku":"9309","requires_shipping":true,"taxable":true,"featured_image":{"id":36308595376354,"product_id":7476243169506,"position":9,"created_at":"2021-12-16T16:00:43+00:00","updated_at":"2021-12-16T16:00:43+00:00","alt":null,"width":1210,"height":1210,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot_2021-12-16_at_15.35.49.png?v=1639670443","variant_ids":[42166822797538]},"available":false,"name":"Burgtec Top Cap - Pink","public_title":"Pink","options":["Pink"],"price":599,"weight":0,"compare_at_price":null,"invent
"Shipping: {{ date }}","shipping_applies_to_all_products":true,"shipping_text":"Estimated to ship within 2 months","payment_type":"full","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"discount_text":"Save {{ discount }}","billing_title":"Full payment","billing_description":null,"enable_billing_widget":false,"inventory_provider":"stoq","preorder_badge_enabled":false,"preorder_badge_text":"Preorder","preorder_badge_text_color":"#FFFFFF","preorder_badge_background_color":"#000000","preorder_discounted_price_enabled":null,"payment_line_item_property_enabled":false,"shipping_line_item_property_enabled":true,"custom_line_item_property_text":null,"preorder_button_text_color":"#ffffff","preorder_button_background_color":"#565557","preorder_button_colors_enabled":true,"markets_enabled":false,"market_id":13779632354,"shopify_market_ids":[],"use_shopify_selling_pla
span class="visually-hidden">Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable
n":true,"use_simplified_shipping_text":false,"translations":{},"payment_options":[{"billing_type":"no_remaining_balance","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","billing_at":"2025-07-26T09:20:38.472Z","billing_after_n_intervals":7,"billing_after_interval_type":"day","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"billing_title":"Full payment","billing_description":null,"discount_text":"Save {{ discount }}","shopify_selling_plan_id":713071886719,"is_default":true,"type":"full","translations":{}}],"require_preorder_acknowledgement":false,"preorder_acknowledgement_text":"I acknowledge and agree to the preorder terms and conditions for this product.","preorder_min_quantity":null,"preorder_max_quantity":null,"countdown_timer_enabled":false,"countdown_timer_insert_selector":null,"countdown_timer_insert_selector_type":"afterend","countdown_timer_style":"text","countdown_timer_text_color":"#000000","coProduct Details>
a class="product__media product__media--featured"
href="/collections/new-collection/products/life-systems-pocket-first-aid-kit-hire"
title="Life Systems Pocket First Aid Kit - HIRE"
aria-label="Life Systems Pocket First Aid Kit - HIRE"
handle":"restrap-downtube-bag","description":"\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cspan\u003eThe Restrap Downtube Bag is designed to boost carrying capacity by utilising the otherwise dead space beneath the downtube. Particularly useful for smaller frames, or anyone who requires extra capacity. The Downtube Bag adds 1.2L of fully waterproof stowage, attached simply via velcro; no need for specific bosses.\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003eThe Downtube Bag has a fully waterproof construction, with a roll top closure to keep the elements, road spray or trail debris where they should be. A single, integrated, velcro strap wraps around the Downtube Bag and downtube, securing it tightly in place and minimising rattles. A stitched in grip pad prevents the bag from sliding out of position. The bolt-free attachment means the Downtube Bag can be swapped from bike-to-bike in seconds.\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003
eWhile you can store what you like in the Downtube Bag, we believe that it is most useful for spares, tools and heavier items. By storing them in a low and central location, you help maintain the bike’s natural centre of gravity. This is also useful if you run a dropper seat post on your bike and are unable to store items under your saddle; or if your bikepacking set up means that you aren’t able to run a tool pouch in its usual location.\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003eThe Downtube Bag is designed to fit all bikes, from the skinniest of steel tubing up to 19cm circumference downtubes. And while there’s no prizes for guessing where it was designed to fit, there’s nothing stopping you from getting creative with where you choose to fit the bag; cargo cages, seatpost or elsewhere.\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003eHand made in our Yorkshire workshop, all bags are finished with the classic Restrap label, made from vegan-friendly PU.\u003c\/span\u003espan class="visually-hidden">Life Systems Pocket First Aid Kit - HIREocations":[]}],"images":[],"featured_image":null,"options":["Title"],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cspan\u003eThe Restrap Downtube Bag is designed to boost carrying capacity by utilising the otherwise dead space beneath the downtube. Particularly useful for smaller frames, or anyone who requires extra capacity. The Downtube Bag adds 1.2L of fully waterproof stowage, attached simply via velcro; no need for specific bosses.\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003eThe Downtube Bag has a fully waterproof construction, with a roll top closure to keep the elements, road spray or trail debris where they should be. A single, integrated, velcro strap wraps around the Downtube Bag and downtube, securing it tightly in place and minimising rattles. A stitched in grip pad prevents the bag from sliding out of position. The bolt-free attachment means the Downtube Bag can be swapped f
>
e finished with the classic Restrap label, made from vegan-friendly PU.\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003eProduct Weight - 130g\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003eCapacity - 1.2 Litres\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e"};
window._RestockRocketConfig.variantsInventoryPolicy = {46007570563298 : "deny",};
window._RestockRocketConfig.variantsInventoryQuantity = {46007570563298 : parseInt("100"),};
window._RestockRocketConfig.variantsPreorderCount = {46007570563298 : parseInt(""),};
window._RestockRocketConfig.variantsPreorderCountForMarket = {46007570563298 : null,};
window._RestockRocketConfig.variantsPreorderMaxCount = {46007570563298 : parseInt(""),};
window._RestockRocketConfig.variantsPreorderMaxCountForMarket = {46007570563298 : null,};
window._RestockRocketConfig.variantsShippingText = {46007570563298 : "",};
window._RestockRocketConfig.variantsShippingTextForMarket = {46007570563298 : null,};
window._Rest>
s || !settings.updated_at) {
console.debug('STOQ - Invalid settings data structure');
return null;
}
if (!settings.cache) {
console.debug('STOQ - settings caching disabled');
return null;
}
// Check if translations are enabled but missing from cache
// This handles the backfill period where DB has translations but metafield doesn't
if (settings.multi_language_enabled) {
if (!settings.translations) {
// Translations enabled but no translation data in metafield
// Metafield hasn't been backfilled yet - force refresh
console.debug('STOQ - multi-language enabled but no translation data in cache, fetching fresh');
return null;
}
// Translations object exists in metafield - cache is valid
// If current locale isn't translated, applyTranslations will gracefully use default locale from base fields
if (window._RestockRocketConfig.normalizedLocale &&
!Object.
<
!settings.multi_language_enabled) {
return settings;
}
if (!settings.translations) {
console.debug('STOQ - No translations found, skipping translation');
return settings;
}
const normalizedLocale = window._RestockRocketConfig.normalizedLocale;
const translations = settings.translations;
if (!normalizedLocale) {
// No matching locale has translations; drop payload to save memory
console.debug('STOQ - No matching locale for translations. Available:', Object.keys(translations || {}));
delete settings.translations;
return settings;
}
console.debug(`STOQ - Applying translations for normalized locale: ${normalizedLocale} (original: ${window._RestockRocketConfig.locale})`);
const translatedFields = translations[normalizedLocale];
if (translatedFields && typeof translatedFields === 'object') {
Object.keys(translatedFields).forEach(function(key) {
const value = translatedFields[key
ings from metafields with expiry check
const cachedSettings = window._RestockRocketConfig.cachedSettings;
const validCachedSettings = cachedSettings ? checkSettingsExpiry(cachedSettings) : null;
if (validCachedSettings) {
console.debug('STOQ - using cached settings');
initializeScripts(validCachedSettings);
} else {
console.debug('STOQ - fetching fresh settings');
const headers = {
'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop,
'ngrok-skip-browser-warning': 'skip'
};
if (window.Shopify?.theme?.role === 'main') {
headers['X-Shopify-Theme-Schema-Name'] = window.Shopify.theme.schema_name;
headers['X-Shopify-Theme-Schema-Version'] = window.Shopify.theme.schema_version;
headers['X-Shopify-Theme-Store-Id'] = window.Shopify.theme.theme_store_id;
}
fetch(
`${window._RestockRocketConfig.host}/api/v1/setting.json?translation_locale=${window._RestockRocketConfig.normalizedLocale}`,
{ headers }
)
return integration.type === 'hijack' && integration.enabled && integration.page_types.includes(window._RestockRocketConfig.pageType);
})
if(window._RestockRocketConfig.pageType === 'collection' && (settings.show_button_on_collection || settings.preorder_collection_enabled)) {
createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection);
} else if(window._RestockRocketConfig.pageType === 'index' && (settings.show_button_on_index || settings.preorder_index_enabled)) {
createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection);
} else if(window._RestockRocketConfig.pageType === 'search' && (settings.show_button_on_search || settings.preorder_search_enabled)) {
createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection);
} else if(window._RestockRocketConfig.pageType === 'page' && (settings.show_button_on_page || settings.preorder_page_enabled)) {
createRestockRocketScript(window._RestockRocketConfig.scridiv class="product__media-hover-img product__media" style="background-image: url(//projektride.co.uk/cdn/shop/files/Screenshot2022-02-24at21.18.32_9d81277b-124e-4fdc-8a0f-fbfb40a9343d_600x.png?v=1691610357)">ailable with retries
const maxRetries = 10;
const retryDelay = 500;
function attemptCartCheck(attempt = 1) {
if (window._RestockRocket && window._RestockRocket.updateCartSellingPlans) {
window._RestockRocket.updateCartSellingPlans()
.then(hasUpdates => {
if (hasUpdates) {
console.debug('STOQ - cart selling plans updated successfully');
} else {
console.debug('STOQ - no cart selling plan updates needed');
}
})
.catch(error => {
console.error('STOQ - error updating cart selling plans:', error);
});
} else if (attempt
>
maxRetries) {
console.debug(`STOQ - API not ready, retry ${attempt}/${maxRetries}`);
setTimeout(() => attemptCartCheck(attempt + 1), retryDelay);
} else {
console.debug('STOQ - API not loaded after max retries, skipping cart selling plan check');
}
}
attemptCartCheck();
}
.restock-rocket-button,.restock-rocket-button-float{opacity:1!important;border:none!important;cursor:pointer!important;background-image:none!important;box-shadow:none!important;padding:15px 20px;font-size:16px;width:100%;font-family:inherit}@font-face{font-family:OpenSans;font-weight:200;src:url(https://d382hokyqag45a.cloudfront.net/assets/OpenSans-Light.woff)}@font-face{font-family:OpenSans;font-weight:300;src:url(https://d382hokyqag45a.cloudfront.net/assets/OpenSans-Regular.woff)}@font-face{font-family:OpenSans;font-weight:600;src:url(https://d382hokyqag45a.cloudfront.net/assets/OpenSans-SemiBold.woff)}.restock-rocket-button-container{position:relative;z-index:1;width:100%}.restock-rocket-button-container-float-right{position:fixed;z-index:123123;top:calc(50% - 200px);right:0;transform:rotate(270deg);transform-origin:bottom right}.restock-rocket-button-container-float-left{position:fixed;z-index:123123;top:calc(50% - 200px);left:40px;transform:rotate(90deg);transform-origin:top left}.restock-rocket-button-container-float-left:hover,.restock-rocket-button-container-float-right:hover,.restock-rocket-button-container:hover,.restock-rocket-button-float:hover,.restock-rocket-button:hover{opacity:.8}.restock-rocket-button{min-height:50px;margin-top:10px;margin-bottom:10px}.restock-rocket-button-collection{position:relative;font-size:13px;line-height:1;padding:7px;height:auto;z-index:3}.restock-rocket-wrapper{background-color:rgba(0,0,0,.5);z-index:123123123;width:100%;height:100%;overflow:auto;position:fixed;right:0;top:0;transition-property:all;transition-duration:.3s;display:flex;flex-direction:column;justify-content:center;}.restock-rocket-wrapper-inline{width:100%;height:100%;margin-top:20px}.restock-rocket-preorder-description{padding:10px 15px;margin-top:20px;display:flex;flex-direction:column;gap:10px;}.preorder-description-details{margin-bottom:0;display:flex;flex-direction:column;gap:10px;}.preorder-detail-item{display:flex;flex-direction:row;justify-content:start;gap:8px;align-items:center;}.restock-rocket-payment-widget{border:1px solid #ebebeb;margin-bottom:20px;}.restock-rocket-payment-option{display:flex;flex-wrap:wrap;align-items:center;gap:5px;padding:15px 20px;}.restock-rocket-payment-option:not(:last-child){border-bottom:1px solid #ebebeb;}.restock-rocket-payment-input-container{flex:1 1 auto;min-width:0}.restock-rocket-preorder-discount-badge{background:#ebebeb;height:25px;line-height:25px;padding:0 15px;border-radius:25px;font-size:0.8rem;flex:0 0 auto}.restock-rocket-payment-input{margin-right:10px;margin-top:-3px;vertical-align:middle;margin-left:0;accent-color:#202223}.restock-rocket-payment-description{margin-top:4px;flex:1 1 100%}.restock-rocket-preorder-badge{font-size:13px;line-height:1;padding:5px 13px 6px;border-radius:40px;height:auto;border:none;width:auto;z-index:2;margin:0;background:0 0}.preorder-badge-collection{position:absolute;top:10px;right:10px}.preorder-badge-product{margin-left:10px}.restock-rocket-price-strike{text-decoration:liLife Systems Pocket First Aid Kit - HIREline-height:1}.restock-rocket-preorder-countdown-timer .countdown-label{font-size:14px;font-weight:500;text-align:center;text-transform:capitalize;opacity:.7}@media (max-width:768px){.restock-rocket-preorder-countdown-timer{padding:14px}.restock-rocket-preorder-countdown-timer .countdown-box{min-width:55px;padding:14px 10px;font-size:26px}.restock-rocket-preorder-countdown-timer .countdown-label{font-size:11px}}@media (max-width:480px){.restock-rocket-preorder-countdown-timer{padding:12px}.restock-rocket-preorder-countdown-timer .countdown-units{width:100%;gap:10px}.restock-rocket-preorder-countdown-timer .countdown-box{width:100%;min-width:50px;padding:12px 8px;font-size:24px}.restock-rocket-preorder-countdown-timer .countdown-label{font-size:10px}}.restock-rocket-toast{position:fixed;cursor:pointer;background:#fff;border:0;min-width:40px;min-height:40px;box-shadow:0 0 15px rgba(0,0,0,.1)!important;z-index:622004;padding:20px 30px;font-family:inherit;font-size:inherit;color:#000;display:flex;justify-content:
X(0)}100%{transform:translateX(-100%)}}@-webkit-keyframes slide-out-left{0%{-webkit-transform:translateX(0)}100%{-webkit-transform:translateX(-100%)}}@keyframes slide-out-right{0%{transform:translateX(0)}100%{transform:translateX(100%)}}@-webkit-keyframes slide-out-right{0%{-webkit-transform:translateX(0)}100%{-webkit-transform:translateX(100%)}}
span class="visually-hidden">Life Systems Pocket First Aid Kit - HIREocations":[]}],"images":[],"featured_image":null,"options":["Title"],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cspan\u003eThe Restrap Downtube Bag is designed to boost carrying capacity by utilising the otherwise dead space beneath the downtube. Particularly useful for smaller frames, or anyone who requires extra capacity. The Downtube Bag adds 1.2L of fully waterproof stowage, attached simply via velcro; no need for specific bosses.\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003eThe Downtube Bag has a fully waterproof construction, with a roll top closure to keep the elements, road spray or trail debris where they should be. A single, integrated, velcro strap wraps around the Downtube Bag and downtube, securing it tightly in place and minimising rattles. A stitched in grip pad prevents the bag from sliding out of position. The bolt-free attachment means the Downtube Bag can be swapped f
> e finished with the classic Restrap label, made from vegan-friendly PU.\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003eProduct Weight - 130g\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003eCapacity - 1.2 Litres\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e"}; window._RestockRocketConfig.variantsInventoryPolicy = {46007570563298 : "deny",}; window._RestockRocketConfig.variantsInventoryQuantity = {46007570563298 : parseInt("100"),}; window._RestockRocketConfig.variantsPreorderCount = {46007570563298 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderCountForMarket = {46007570563298 : null,}; window._RestockRocketConfig.variantsPreorderMaxCount = {46007570563298 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderMaxCountForMarket = {46007570563298 : null,}; window._RestockRocketConfig.variantsShippingText = {46007570563298 : "",}; window._RestockRocketConfig.variantsShippingTextForMarket = {46007570563298 : null,}; window._Rest> s || !settings.updated_at) { console.debug('STOQ - Invalid settings data structure'); return null; } if (!settings.cache) { console.debug('STOQ - settings caching disabled'); return null; } // Check if translations are enabled but missing from cache // This handles the backfill period where DB has translations but metafield doesn't if (settings.multi_language_enabled) { if (!settings.translations) { // Translations enabled but no translation data in metafield // Metafield hasn't been backfilled yet - force refresh console.debug('STOQ - multi-language enabled but no translation data in cache, fetching fresh'); return null; } // Translations object exists in metafield - cache is valid // If current locale isn't translated, applyTranslations will gracefully use default locale from base fields if (window._RestockRocketConfig.normalizedLocale && !Object.
<!settings.multi_language_enabled) { return settings; } if (!settings.translations) { console.debug('STOQ - No translations found, skipping translation'); return settings; } const normalizedLocale = window._RestockRocketConfig.normalizedLocale; const translations = settings.translations; if (!normalizedLocale) { // No matching locale has translations; drop payload to save memory console.debug('STOQ - No matching locale for translations. Available:', Object.keys(translations || {})); delete settings.translations; return settings; } console.debug(`STOQ - Applying translations for normalized locale: ${normalizedLocale} (original: ${window._RestockRocketConfig.locale})`); const translatedFields = translations[normalizedLocale]; if (translatedFields && typeof translatedFields === 'object') { Object.keys(translatedFields).forEach(function(key) { const value = translatedFields[key
ings from metafields with expiry check const cachedSettings = window._RestockRocketConfig.cachedSettings; const validCachedSettings = cachedSettings ? checkSettingsExpiry(cachedSettings) : null; if (validCachedSettings) { console.debug('STOQ - using cached settings'); initializeScripts(validCachedSettings); } else { console.debug('STOQ - fetching fresh settings'); const headers = { 'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop, 'ngrok-skip-browser-warning': 'skip' }; if (window.Shopify?.theme?.role === 'main') { headers['X-Shopify-Theme-Schema-Name'] = window.Shopify.theme.schema_name; headers['X-Shopify-Theme-Schema-Version'] = window.Shopify.theme.schema_version; headers['X-Shopify-Theme-Store-Id'] = window.Shopify.theme.theme_store_id; } fetch( `${window._RestockRocketConfig.host}/api/v1/setting.json?translation_locale=${window._RestockRocketConfig.normalizedLocale}`, { headers } )return integration.type === 'hijack' && integration.enabled && integration.page_types.includes(window._RestockRocketConfig.pageType); }) if(window._RestockRocketConfig.pageType === 'collection' && (settings.show_button_on_collection || settings.preorder_collection_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'index' && (settings.show_button_on_index || settings.preorder_index_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'search' && (settings.show_button_on_search || settings.preorder_search_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'page' && (settings.show_button_on_page || settings.preorder_page_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scridiv class="product__media-hover-img product__media" style="background-image: url(//projektride.co.uk/cdn/shop/files/Screenshot2022-02-24at21.18.32_9d81277b-124e-4fdc-8a0f-fbfb40a9343d_600x.png?v=1691610357)">ailable with retries const maxRetries = 10; const retryDelay = 500; function attemptCartCheck(attempt = 1) { if (window._RestockRocket && window._RestockRocket.updateCartSellingPlans) { window._RestockRocket.updateCartSellingPlans() .then(hasUpdates => { if (hasUpdates) { console.debug('STOQ - cart selling plans updated successfully'); } else { console.debug('STOQ - no cart selling plan updates needed'); } }) .catch(error => { console.error('STOQ - error updating cart selling plans:', error); }); } else if (attempt
> maxRetries) { console.debug(`STOQ - API not ready, retry ${attempt}/${maxRetries}`); setTimeout(() => attemptCartCheck(attempt + 1), retryDelay); } else { console.debug('STOQ - API not loaded after max retries, skipping cart selling plan check'); } } attemptCartCheck(); }.restock-rocket-button,.restock-rocket-button-float{opacity:1!important;border:none!important;cursor:pointer!important;background-image:none!important;box-shadow:none!important;padding:15px 20px;font-size:16px;width:100%;font-family:inherit}@font-face{font-family:OpenSans;font-weight:200;src:url(https://d382hokyqag45a.cloudfront.net/assets/OpenSans-Light.woff)}@font-face{font-family:OpenSans;font-weight:300;src:url(https://d382hokyqag45a.cloudfront.net/assets/OpenSans-Regular.woff)}@font-face{font-family:OpenSans;font-weight:600;src:url(https://d382hokyqag45a.cloudfront.net/assets/OpenSans-SemiBold.woff)}.restock-rocket-button-container{position:relative;z-index:1;width:100%}.restock-rocket-button-container-float-right{position:fixed;z-index:123123;top:calc(50% - 200px);right:0;transform:rotate(270deg);transform-origin:bottom right}.restock-rocket-button-container-float-left{position:fixed;z-index:123123;top:calc(50% - 200px);left:40px;transform:rotate(90deg);transform-origin:top left}.restock-rocket-button-container-float-left:hover,.restock-rocket-button-container-float-right:hover,.restock-rocket-button-container:hover,.restock-rocket-button-float:hover,.restock-rocket-button:hover{opacity:.8}.restock-rocket-button{min-height:50px;margin-top:10px;margin-bottom:10px}.restock-rocket-button-collection{position:relative;font-size:13px;line-height:1;padding:7px;height:auto;z-index:3}.restock-rocket-wrapper{background-color:rgba(0,0,0,.5);z-index:123123123;width:100%;height:100%;overflow:auto;position:fixed;right:0;top:0;transition-property:all;transition-duration:.3s;display:flex;flex-direction:column;justify-content:center;}.restock-rocket-wrapper-inline{width:100%;height:100%;margin-top:20px}.restock-rocket-preorder-description{padding:10px 15px;margin-top:20px;display:flex;flex-direction:column;gap:10px;}.preorder-description-details{margin-bottom:0;display:flex;flex-direction:column;gap:10px;}.preorder-detail-item{display:flex;flex-direction:row;justify-content:start;gap:8px;align-items:center;}.restock-rocket-payment-widget{border:1px solid #ebebeb;margin-bottom:20px;}.restock-rocket-payment-option{display:flex;flex-wrap:wrap;align-items:center;gap:5px;padding:15px 20px;}.restock-rocket-payment-option:not(:last-child){border-bottom:1px solid #ebebeb;}.restock-rocket-payment-input-container{flex:1 1 auto;min-width:0}.restock-rocket-preorder-discount-badge{background:#ebebeb;height:25px;line-height:25px;padding:0 15px;border-radius:25px;font-size:0.8rem;flex:0 0 auto}.restock-rocket-payment-input{margin-right:10px;margin-top:-3px;vertical-align:middle;margin-left:0;accent-color:#202223}.restock-rocket-payment-description{margin-top:4px;flex:1 1 100%}.restock-rocket-preorder-badge{font-size:13px;line-height:1;padding:5px 13px 6px;border-radius:40px;height:auto;border:none;width:auto;z-index:2;margin:0;background:0 0}.preorder-badge-collection{position:absolute;top:10px;right:10px}.preorder-badge-product{margin-left:10px}.restock-rocket-price-strike{text-decoration:li
01313745324