,"vendor":"Surly","type":"","tags":["Disc Trucker"],"price":95000,"price_min":95000,"price_max":95000,"available":true,"price_varies":false,"compare_at_price":null,"compare_at_price_min":0,"compare_at_price_max":0,"compare_at_price_varies":false,"variants":[{"id":42354619154658,"title":"42 \/ Pea Lime Soup","option1":"42","option2":"Pea Lime Soup","option3":null,"sku":"FMSUDTF42G","requires_shipping":true,"taxable":true,"featured_image":{"id":36611095134434,"product_id":7524204347618,"position":1,"created_at":"2022-01-27T21:15:42+00:00","updated_at":"2022-01-27T21:15:50+00:00","alt":null,"width":1228,"height":766,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-01-27at21.12.50.png?v=1643318150","variant_ids":[42354619154658,42354619220194,42354619285730,42354619351266,42354619416802,42354619482338,42354619547874,42354619613410,42354619678946,42354619744482,42354619810018,42354619875554]},"available":true,"name":"Surly Disc Trucker Frameset - Pea Lime Soup - 42 \/ Pea Lime Soup","public_title"
4619351266,42354619416802,42354619482338,42354619547874,42354619613410,42354619678946,42354619744482,42354619810018,42354619875554]},"available":false,"name":"Surly Disc Trucker Frameset - Pea Lime Soup - 44 \/ Pea Lime Soup","public_title":"44 \/ Pea Lime Soup","options":["44","Pea Lime Soup"],"price":95000,"weight":15000,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":null,"id":29164641943778,"position":1,"preview_image":{"aspect_ratio":1.603,"height":766,"width":1228,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-01-27at21.12.50.png?v=1643318150"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":42354619285730,"title":"46 \/ Pea Lime Soup","option1":"46","option2":"Pea Lime Soup","option3":null,"sku":"FMSUDTF46G","requires_shipping":true,"taxable":true,"featured_image":{"id":36611095134434,"product_id":7524204347618,"position":1,"created_at":"2022-01-27T21:15:42+00:00","u
up","option1":"48","option2":"Pea Lime Soup","option3":null,"sku":"FMSUDTF48G","requires_shipping":true,"taxable":true,"featured_image":{"id":36611095134434,"product_id":7524204347618,"position":1,"created_at":"2022-01-27T21:15:42+00:00","updated_at":"2022-01-27T21:15:50+00:00","alt":null,"width":1228,"height":766,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-01-27at21.12.50.png?v=1643318150","variant_ids":[42354619154658,42354619220194,42354619285730,42354619351266,42354619416802,42354619482338,42354619547874,42354619613410,42354619678946,42354619744482,42354619810018,42354619875554]},"available":false,"name":"Surly Disc Trucker Frameset - Pea Lime Soup - 48 \/ Pea Lime Soup","public_title":"48 \/ Pea Lime Soup","options":["48","Pea Lime Soup"],"price":95000,"weight":15000,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":null,"id":29164641943778,"position":1,"preview_image":{"aspect_ratio":1.603,"height":766,"width":1228,"src":"\/\/projektrid
95000,"weight":15000,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":null,"id":29164641943778,"position":1,"preview_image":{"aspect_ratio":1.603,"height":766,"width":1228,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-01-27at21.12.50.png?v=1643318150"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":42354619482338,"title":"52 \/ Pea Lime Soup","option1":"52","option2":"Pea Lime Soup","option3":null,"sku":"FMSUDTF52G","requires_shipping":true,"taxable":true,"featured_image":{"id":36611095134434,"product_id":7524204347618,"position":1,"created_at":"2022-01-27T21:15:42+00:00","updated_at":"2022-01-27T21:15:50+00:00","alt":null,"width":1228,"height":766,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-01-27at21.12.50.png?v=1643318150","variant_ids":[42354619154658,42354619220194,42354619285730,42354619351266,42354619416802,42354619482338,42354619547874,42354619
eight":766,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-01-27at21.12.50.png?v=1643318150","variant_ids":[42354619154658,42354619220194,42354619285730,42354619351266,42354619416802,42354619482338,42354619547874,42354619613410,42354619678946,42354619744482,42354619810018,42354619875554]},"available":true,"name":"Surly Disc Trucker Frameset - Pea Lime Soup - 54 \/ Pea Lime Soup","public_title":"54 \/ Pea Lime Soup","options":["54","Pea Lime Soup"],"price":95000,"weight":15000,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":null,"id":29164641943778,"position":1,"preview_image":{"aspect_ratio":1.603,"height":766,"width":1228,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-01-27at21.12.50.png?v=1643318150"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":42354619613410,"title":"56 \/ Pea Lime Soup","option1":"56","option2":"Pea Lime Soup","option3":null,"sku":
mage":{"id":36611095134434,"product_id":7524204347618,"position":1,"created_at":"2022-01-27T21:15:42+00:00","updated_at":"2022-01-27T21:15:50+00:00","alt":null,"width":1228,"height":766,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-01-27at21.12.50.png?v=1643318150","variant_ids":[42354619154658,42354619220194,42354619285730,42354619351266,42354619416802,42354619482338,42354619547874,42354619613410,42354619678946,42354619744482,42354619810018,42354619875554]},"available":false,"name":"Surly Disc Trucker Frameset - Pea Lime Soup - 64 \/ Pea Lime Soup","public_title":"64 \/ Pea Lime Soup","options":["64","Pea Lime Soup"],"price":95000,"weight":15000,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":null,"id":29164641943778,"position":1,"preview_image":{"aspect_ratio":1.603,"height":766,"width":1228,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-01-27at21.12.50.png?v=1643318150"}},"requires_selling_plan":false,"selling_plan_allocdce-d885-4d51-9d67-ee3007b91003.png?v=1645565035"},"aspect_ratio":1.921,"height":1170,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-02-22at21.21.42_076b1dce-d885-4d51-9d67-ee3007b91003.png?v=1645565035","width":2248}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cmeta charset=\"utf-8\"\u003e\n\u003cp data-mce-fragment=\"1\"\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cspan\u003ePlease get in touch with a member of the team to discuss the availability of size, build kit, and colour if the option you require is out of stock - 0131 374 5324 \/ edinburgh@projektride.co.uk\u003c\/span\u003e\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eDisc Trucker enjoys the same reputation as Long Haul Trucker: It’s one of the best-riding and most value-packed drop bar touring bikes out there. Sometimes, however, a combination of load, climate, and terrain demands a bit more braking performance than a standard rim-brake LHT can provide.\u003c\/p\u003e\n\ clearance, plus increased stack height for a more upright and comfortable riding position on those long hauls\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003eFlat-mount disc brake mounts\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003eFrame sizes 42–56cm are available for 26” diameter wheels, while frame sizes 56–64cm are available for 700c diameter wheels\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003eClearance for 26” x 2.1” tyres with or without mudguards, or 700c x 47mm with or without mudguards\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp data-mce-fragment=\"1\"\u003eThanks for considering ProjektRide for your next purchase. All bikes are fully assembled and test rode before leaving our bike shop in Edinburgh. Please allow 5-7 days for bicycle delivery although we aim to post bikes out the same day.\u003c\/p\u003e\n\u003cp data-mce-fragment=\"1\"\u003eIf any purchases are to be made using any cycle to work schemes, please either pop into the shop or get in touch via email0"),42354619875554 : parseInt("0"),};
window._RestockRocketConfig.variantsPreorderCount = {42354619154658 : parseInt(""),42354619220194 : parseInt(""),42354619285730 : parseInt(""),42354619351266 : parseInt(""),42354619416802 : parseInt(""),42354619482338 : parseInt(""),42354619547874 : parseInt(""),42354619613410 : parseInt(""),42354619678946 : parseInt(""),42354619744482 : parseInt(""),42354619810018 : parseInt(""),42354619875554 : parseInt(""),};
window._RestockRocketConfig.variantsPreorderCountForMarket = {42354619154658 : null,42354619220194 : null,42354619285730 : null,42354619351266 : null,42354619416802 : null,42354619482338 : null,42354619547874 : null,42354619613410 : null,42354619678946 : null,42354619744482 : null,42354619810018 : null,42354619875554 : null,};
window._RestockRocketConfig.variantsPreorderMaxCount = {42354619154658 : parseInt(""),42354619220194 : parseInt(""),42354619285730 : parseInt(""),42354619351266 : parseInt(""),42354619416802 : parseInt(""),42354619482338 : parseI354619547874 : null,42354619613410 : null,42354619678946 : null,42354619744482 : null,42354619810018 : null,42354619875554 : null,};window._RestockRocketConfig.selected_variant_id = 42354619154658;
window._RestockRocketConfig.selected_variant_available = (window._RestockRocketConfig.product.variants.find(function(variant) { return variant.id == window._RestockRocketConfig.selected_variant_id }) || {}).available;
try {
var _sqCfg = window._RestockRocketConfig;
var _sqPlanEnabled = Array.isArray(_sqCfg.sellingPlans) &&
_sqCfg.sellingPlans.some(function (p) { return p && p.enabled; });
var _sqPreCount = ((_sqCfg.cachedPreorderVariantIds &&
_sqCfg.cachedPreorderVariantIds.preorder_variant_ids) || []).length;
_sqCfg.preordersConfigured = !!(_sqPlanEnabled && _sqPreCount);
} catch (e) { }
try {
var _sqc = window._RestockRocketConfig;
var _sqOn = !!(_sqc.cachedSettings && _sqc.cachedSettings.block_accelerated_checkout);
var _sqPre = (_sqc.cachedPreorderVariantIds &&
85/assets/restockrocket-product.js'
window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/01a0958b-0d97-7d26-bb37-d8c9bf182bac/restockrocket-1-585/assets/restockrocket-collection.js'
window._RestockRocketConfig.scriptUrlProductBis = 'https://cdn.shopify.com/extensions/01a0958b-0d97-7d26-bb37-d8c9bf182bac/restockrocket-1-585/assets/restockrocket-product-bis.js'
window._RestockRocketConfig.scriptUrlCollectionBis = 'https://cdn.shopify.com/extensions/01a0958b-0d97-7d26-bb37-d8c9bf182bac/restockrocket-1-585/assets/restockrocket-collection-bis.js'
window._RestockRocketConfig.scriptHost = window._RestockRocketConfig.scriptUrlProduct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1)
window._RestockRocketConfig.host = (window._RestockRocketConfig.cachedSettings && window._RestockRocketConfig.cachedSettings.api_host) || 'https://app.restockrocket.io'
try {
const _stoqVersionMatch = window._RestockRocketConfig.scriptHost.match(/(\d+)\/?(?:ass
<
<
&
!Object.prototype.hasOwnProperty.call(settings.translations, window._RestockRocketConfig.normalizedLocale)) {
console.debug('STOQ - locale not explicitly translated, will use default language from cache');
}
}
const updatedAt = new Date(settings.updated_at);
if (isNaN(updatedAt.getTime())) {
console.debug('STOQ - Invalid updated_at date format in settings');
return null;
}
const age = Date.now() - updatedAt.getTime();
if (age
SETTINGS_CACHE_DURATION) {
console.debug('STOQ - settings changed recently, skipping cache');
return null;
}
return settings;
} catch (error) {
console.debug('STOQ - Error checking settings cache:', error);
return null;
}
}
function createRestockRocketContainer() {
const restockRocketContainer = document.createElement('div');
restockRocketContainer.id = 'restock-rocket';
document.body.appendChild(restockRocketContainer);
}
function createRestockRocketScript(scriptUrl) {
const restockRocketScriptElement = document.createElement('script');
restockRocketScriptElement.setAttribute('defer', 'defer');
restockRocketScriptElement.src = scriptUrl;
document.body.appendChild(restockRocketScriptElement);
}
createRestockRocketContainer()
console.debug('STOQ - extension activated')
try {
const _stoqInitConfig = window._RestockRocketConfig;
const _stoqDetectedVariantIds = (_stoqInitConfig.product && Array.isArray(_stoqI
Slovenia (EUR€)
liquid_cache_age: _stoqInitConfig.liquidCacheAge,
inventory_policy: (_stoqInitConfig.variantsInventoryPolicy || {})[_stoqSelectedVariantId] || '',
inventory_quantity: (_stoqInitConfig.variantsInventoryQuantity || {})[_stoqSelectedVariantId],
});
} catch (e) {
console.debug('STOQ - stoq_initialized publish failed:', e);
}
try {
var _sqTrack = window._RestockRocketConfig;
if (_sqTrack.preordersConfigured) {
document.addEventListener('click', function (e) {
try {
var t = e.target;
if (!t || !t.closest) return;
var host = t.closest('.shopify-payment-button, shopify-payment-terms');
if (!host) return;
var channel = host.matches && host.matches('shopify-payment-terms')
? 'shop_pay_installments' : 'buy_now';
var form = host.closest('form');
var vidEl = form && form.querySelector('[name="id"]');
var variantId = (vidEl && vidEl.value) || _sqTrack.selected_variant_id || '';
ck.product.id) || '',
channel: channel,
market_id: _sqTrack.marketId || '',
country_code: _sqTrack.countryIsoCode || '',
page_type: _sqTrack.pageType || '',
cart_token: _sqTrack.cartToken || '',
page_url: (window.location && window.location.href) || '',
properties: {
is_preorder_variant: (function () {
var vid = Number(variantId);
var has = function (a) { return Array.isArray(a) && a.indexOf(vid) !== -1; };
return has(_sqTrack.preorderVariantIds) ||
has(_sqTrack.cachedPreorderVariantIds &&
_sqTrack.cachedPreorderVariantIds.preorder_variant_ids);
})(),
in_enabled_plan: !!_sqPlan,
is_instock_variant: (function () {
var has = function (a) { return Array.isArray(a) && a.indexOf(_sqVidNum) !== -1; };
return has(_sqTrack.inStockVariantIds) ||
h
} catch (err) { }
}, true);
}
} catch (e) { }
function applyTranslations(settings) {
try {
if (!settings || !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) {
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];
if (value !== null && value !== undefined && value !== '') {
settings[key] = value;
}
});
} else {
console.debug('STOQ - No translated fields found for locale:', normalizedLocale);
}
delete settings.translations;
return settings;
} catch (e) {
console.debug('STOQ - error applying translations:', e);
return settings;
}
}
function setupCartSellingPlanUpdater(settings) {
window.addEventListener('stoq:inventory-data-loaded', function(event) {
console.debug('STOQ - Inventory data loaded, updating cart selling plans');
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 -
atus); }
return response.json();
})
.then(function(body) {
if (body && body.errors && body.errors.length) {
throw new Error('Storefront API errors: ' + body.errors.map(function(e) { return e && e.message; }).join(', '));
}
const value = body && body.data && body.data.shop && body.data.shop.metafield && body.data.shop.metafield.value;
if (!value) { throw new Error('Storefront API returned no settings metafield value'); }
cfg.storefrontSettings = JSON.parse(value);
console.debug('STOQ - stored live settings from Storefront API on config.storefrontSettings');
})
.catch(function(e) {
console.debug('STOQ - Storefront settings fetch failed (non-fatal):', e && e.message);
});
}
if (typeof window.requestIdleCallback === 'function') {
window.requestIdleCallback(run, { timeout: 5000 });
} else {
setTimeout(run, 0);
}
})();
const cachedSettings = window._RestockRocketConfig.cachedSettiSt. Helena (SHP£)
t ok');
}
return response.json();
})
.then(function(settings) {
initializeScripts(settings);
})
.catch(function(error) {
if (cachedSettings) {
console.debug('STOQ - using expired cached settings as fallback');
initializeScripts(cachedSettings);
} else {
console.error('STOQ - failed to load settings:', error);
}
})
.catch(function(e) {
console.error(e)
})
}
function fetchEmbedConfig(endpoint, apply) {
return fetch(
`${window._RestockRocketConfig.host}/api/v1/embed/${endpoint}.json`,
{
headers: {
'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop,
'ngrok-skip-browser-warning': 'skip'
}
}
)
.then(function(response) {
if (!response.ok) throw new Error(`Failed to fetch ${endpoint}`);
return response.json();
})
.then(function(data) {
try {
apply(data);
} catch (applyError) {
c
lags && typeof data.read_flags === 'object' && !Array.isArray(data.read_flags)) {
window._RestockRocketConfig.readFlags = data.read_flags;
}
}),
fetchEmbedConfig('integrations', function(data) {
if (Array.isArray(data)) {
window._RestockRocketConfig.integrations = data;
}
})
]),
new Promise(function(resolve) { setTimeout(resolve, 1000); })
]).then(function() { loadScripts(settings); });
return;
}
loadScripts(settings);
}
function loadScripts(settings) {
setupCartSellingPlanUpdater(settings);
if(settings.enable_app) {
const hijackIntegration = window._RestockRocketConfig.integrations.find(function(integration) {
return integration.type === 'hijack' && integration.enabled && integration.page_types.includes(window._RestockRocketConfig.pageType);
})
const hasEnabledOffer = Array.isArray(window._RestockRocketConfig.sellingPlans)
&& window
at-right","storefront_form_duplicate_error":"You've already subscribed for alerts to this product.","storefront_mixed_cart_error":"Preorders must be purchased separately from regular items. Please complete your current order first, or clear your cart to continue.","storefront_error_heading":"Error","default_locale":"en","collection_page_button_text_color":"#FFFFFF","collection_page_button_background_color":"#202223","show_button_if_any_out_of_stock":false,"show_button_if_any_variant_out_of_stock_collection":false,"show_button_on_index":false,"insert_button_after_selector_collection":".product-grid-item__info","insert_button_after_selector_index":".product-grid-item__info","push_enabled":false,"push_allowed":false,"storefront_form_push_label":"Push","storefront_form_push_description":"Click 'Allow' to be notified via push notification","storefront_form_push_error":"Permission rejected! Please review notification settings and try again","storefront_font_family":"OpenSans","insert_button_after_selector_collectionScriptUrl);
} else if(pageType === 'product') {
createRestockRocketScript(productScriptUrl);
} else if(hijackIntegration) {
createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection);
} else if(usePreorderBuild) {
createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection);
} else {
console.debug(`STOQ - no scripts enabled for ${pageType}`);
}
const appLoadedEvent = new CustomEvent('stoq:loaded', {
detail: {
pageType: window._RestockRocketConfig.pageType,
enabled: settings.enable_app,
settings: settings,
preorderEnabled: settings.preorder_enabled
}
});
console.debug('STOQ - dispatching app loaded event');
window.dispatchEvent(appLoadedEvent);
}
}
f stock. Get notified when it's restocked again by entering your details below!","preorder_enabled":true,"preorder_buy_button_selector":"","preorder_add_to_cart_button_selector":".product__submit__holder .product__submit__buttons button","preorder_badge_selector":"","preorder_button_out_of_stock_text":"Out of stock","preorder_button_add_to_cart_text":"Add to cart","preorder_form_selector":"form[action*=\"/cart/add\"]","preorder_collection_enabled":false,"preorder_collection_form_selector":"form[action*=\"/cart/add\"]","preorder_collection_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_index_enabled":false,"preorder_index_form_selector":"form[action*=\"/cart/add\"]","preorder_index_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_page_enabled":false,"preorder_page_form_selector":"form[action*=\"/cart/add\"]","preorder_page_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_search_enabled":false,"preorder_search_form_selector":"forhtml.stoq-buy-now-pending .shopify-payment-button{pointer-events:none!important}Sudan (GBP£)
adge_if_any_variant_is_preorder":false,"enable_console_debug":false,"inline_form_enabled":false,"inline_form_selector":".product__form","inline_form_selector_type":"afterend","storefront_form_prefill_customer":true,"storefront_form_show_image":false,"storefront_form_text_color":"#202223","storefront_form_background_color":"#FFFFFF","storefront_form_border_radius":0,"market_setup_type":"single_market","shopify_app_id":5940125,"preorder_progress_bar_insert_selector":null,"preorder_progress_bar_insert_selector_type":"beforebegin","countdown_timer_insert_selector":null,"countdown_timer_insert_selector_type":"afterend","configure_notify_me_enabled":false,"restock_note_insert_selector":null,"restock_note_insert_selector_type":"afterend","restock_note_background_color":"#f3f4f6","restock_note_text_color":"#202223","restock_note_border_radius":4,"preorder_modal_continue_button_text":"Continue","preorder_modal_cancel_button_text":"Cancel","meta_pixel_enabled":false,"meta_pixel_id":null,"cache":true,"cached_at":"2026-0
18,43936266682594,43936266715362,43936293978338,43936294011106,43936316424418,43936316457186,43936320880866,43936320913634,43936320946402,43936327041250,43936327074018,43936327106786,43936331661538,43936332349666,43936351224034,43936353714402,43936362889442,43936362922210,43936388153570,43936389333218,43936395526370,43936398508258,43936408568034,43936414400738,43936700727522,43936706101474,43936706134242,43936706167010,43936706199778,43936706232546,43936706265314,43938298233058,43938298265826,43938298298594,43938298331362,43938298364130,43938298396898,43938298429666,43938298462434,43938299805922,43938299838690,43938299871458,43938299904226,43938299936994,43938299969762,43938300002530,43938308587746,43938308653282,43938308718818,43938308751586,43938308784354,43938308817122,43938322612450,43938322645218,43938322677986,43981336051938,43981336084706,43981336117474,43981336150242,43981345587426,43981345620194,43981345652962,43981345685730,43981357580514,43981357613282,43981362462946,43981362495714,43981362528482,4
080125823,58434279833983],"updated_at":"2026-09-15T19:11:58Z","market_locations_enabled":false,"market_id":382140642,"preorder_location_filter_enabled":false,"preorder_location_filter_ids":[],"collection_id":null,"bulk_operation":true};window._RestockRocketConfig.cachedInStockVariantIds = { in_stock_variant_ids: [] };window._RestockRocketConfig.cachedOutOfStockVariantIds = { out_of_stock_variant_ids: [] };window._RestockRocketConfig.cachedVariantPreorderLimits = {"variant_preorder_limits":{},"updated_at":"2026-09-15T19:01:17Z","shopify_market_id":382140642,"market_locations_enabled":false};
window._RestockRocketConfig.cachedVariantPreorderLimitsMarketKey = "variant_preorder_limits_for_market_382140642";window._RestockRocketConfig.cachedVariantShippingTexts = {"variant_shipping_texts":{},"updated_at":"2026-09-15T19:01:16Z","shopify_market_id":382140642,"market_locations_enabled":false};
window._RestockRocketConfig.cachedVariantShippingTextsMarketKey = "variant_shipping_texts_for_market_382140642";
wind
type":"asap","quantity_limit_text":"{{ quantity }} units available for preorder","preorder_button_description_show_shipping":true,"preorder_button_description_icons_enabled":true,"preorder_shipping_text":"Estimated to ship within 2 months","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,"Svalbard & Jan Mayen (GBP£)
enabled":false,"acknowledgement_line_item_property_text":"Preorder Terms Accepted","preorder_min_quantity":null,"preorder_max_quantity":null,"countdown_timer_enabled":false,"countdown_timer_style":"text","countdown_timer_text_color":"#000000","countdown_timer_background_color":"#f5f5f5","countdown_timer_border_radius":8,"countdown_timer_format":"DHMS","countdown_timer_use_schedule_dates":true,"countdown_timer_custom_start_date":null,"countdown_timer_custom_end_date":null,"countdown_timer_starts_text":null,"countdown_timer_ends_text":null,"countdown_timer_days_label":"Days","countdown_timer_hours_label":"Hours","countdown_timer_minutes_label":"Mins","countdown_timer_seconds_label":"Secs","schedule_offer":false,"schedule_start_date":null,"schedule_end_date":null,"updated_at":"2026-08-31T15:28:37.678Z","allow_mixed_cart":true,"mixed_cart_error_message":"Preorders must be purchased separately from regular items. Please complete your current order first, or clear your cart to continue.","b2b_enabled":true,"preorde
at);
const maxDate = max ? new Date(max) : null;
return (!maxDate || (planDate && !isNaN(planDate) && planDate > maxDate)) ? plan.updated_at : max;
}
return max;
}, '')
: null;
const cachedDate = new Date(cachedData.cached_at);
const maxDate = maxUpdatedAt ? new Date(maxUpdatedAt) : null;
const useCached = !maxUpdatedAt || (cachedDate && !isNaN(cachedDate) && (!maxDate || cachedDate > maxDate));
if (useCached) {
if (Array.isArray(cachedData.plans)) {
window._RestockRocketConfig.sellingPlans = cachedData.plans;
window._RestockRocketConfig.disabledSellingPlanIds = cachedData.disabled_plan_ids || [];
console.debug('[RR] Using selling plans from cachedSellingPlans (cached_at: ' + cachedData.cached_at + ')');
}
} else {
window._RestockRocketConfig.disabledSellingPlanIds = [];
console.debug('[RR] Using selling plans fro
ng luggage anywhere on the bike, for tying items together, or even repairs - our tough Hypalon straps are designed to be versatile and hold steady.\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003eObjects strapped to bike are for scale only, we don't recommend fixing meal deals to your bike.\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003eAvailable in three sizes, 25cm, 45cm and 65cm.\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003eSold as pairs or a mix of all three.\u003c\/span\u003e\u003c\/p\u003e","published_at":"2024-09-27T14:02:28+01:00","created_at":"2024-09-27T14:02:28+01:00","vendor":"Restrap","type":"bag","tags":["spo-cs-disabled","spo-default","spo-disabled","spo-notify-me-disabled","Straps"],"price":1000,"price_min":1000,"price_max":1800,"available":false,"price_varies":true,"compare_at_price":null,"compare_at_price_min":0,"compare_at_price_max":0,"compare_at_price_varies":false,"variants":[{"id":46007576723682,"title":"Small \/ Orange","option1":"Small","opti
tion3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Restrap Fast Straps - Medium \/ Orange","public_title":"Medium \/ Orange","options":["Medium","Orange"],"price":1200,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":46007576821986,"title":"Medium \/ Black","option1":"Medium","option2":"Black","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Restrap Fast Straps - Medium \/ Black","public_title":"Medium \/ Black","options":["Medium","Black"],"price":1200,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":46007576854754,"title":"Large \/ Orange","option1":"Large","option2":"Orange","option3":nullSweden (SEKkr)
_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Restrap Fast Straps - Mixed \/ Orange","public_title":"Mixed \/ Orange","options":["Mixed","Orange"],"price":1800,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":46007576953058,"title":"Mixed \/ Black","option1":"Mixed","option2":"Black","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Restrap Fast Straps - Mixed \/ Black","public_title":"Mixed \/ Black","options":["Mixed","Black"],"price":1800,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}],"images":["\/\/projektride.co.uk\/cdn\/shop\/files\/RS_FST_SML_BLK_FastStraps_Black_Small_4f5e3246-1cac-4f99-bd4d-df8e52caa61b.jpg?v=17
strapped to bike are for scale only, we don't recommend fixing meal deals to your bike.\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003eAvailable in three sizes, 25cm, 45cm and 65cm.\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003eSold as pairs or a mix of all three.\u003c\/span\u003e\u003c\/p\u003e"};window._RestockRocketConfig.variantsInventoryPolicy = {46007576723682 : "deny",46007576756450 : "deny",46007576789218 : "deny",46007576821986 : "deny",46007576854754 : "deny",46007576887522 : "deny",46007576920290 : "deny",46007576953058 : "deny",};
window._RestockRocketConfig.variantsInventoryQuantity = {46007576723682 : parseInt("0"),46007576756450 : parseInt("0"),46007576789218 : parseInt("0"),46007576821986 : parseInt("0"),46007576854754 : parseInt("0"),46007576887522 : parseInt("0"),46007576920290 : parseInt("0"),46007576953058 : parseInt("0"),};
window._RestockRocketConfig.variantsPreorderCount = {46007576723682 : parseInt(""),46007576756450 : parseInt(""),46007576789218
indow._RestockRocketConfig.liquidCacheAge = Math.max(0, liquidCacheAge);
if (liquidCacheAge
0) {
console.debug(`STOQ - Client clock appears ahead of server by ${Math.abs(Math.round(liquidCacheAge / 60))} minutes, assuming cache fresh`);
window._RestockRocketConfig.isLiquidCacheFresh = true;
} else if (liquidCacheAge
= LIQUID_CACHE_MAX_AGE) {
console.debug(`STOQ - Liquid cache is fresh (${Math.round(liquidCacheAge / 60)} minutes old)`);
window._RestockRocketConfig.isLiquidCacheFresh = true;
} else {
console.debug(`STOQ - Liquid cache is stale (${Math.round(liquidCacheAge / 60)} minutes old, max ${Math.round(LIQUID_CACHE_MAX_AGE / 60)} minutes)`);
window._RestockRocketConfig.isLiquidCacheFresh = false;
}
}
function checkSettingsExpiry(settings) {
try {
if (!settings || !settings.updated_at) {
console.debug('STOQ - Invalid settings data structure');
return null;
}
if (!settings.cache) {
console.debug('STOQ - settings caching disabled');
return null;
}
if (settings.multi_language_enabled) {
if (!settings.translations) {
console.debug('STOQ - multi-language enabled but no translation data in cache, fetching fresh');
return null;
}
if (window._RestockRocketConfig.normalizedLocale &
nitConfig.product.variants))
? _stoqInitConfig.product.variants.map(function(v) { return v.id })
: [];
const _stoqSelectedVariantId = _stoqInitConfig.selected_variant_id;
var _stoqPageSeq = 0;
try {
_stoqPageSeq = (parseInt(window.sessionStorage.getItem('_stoq_pls') || '0', 10) || 0) + 1;
window.sessionStorage.setItem('_stoq_pls', String(_stoqPageSeq));
} catch (e) { }
Shopify?.analytics?.publish?.('stoq_initialized', {
cart_token: _stoqInitConfig.cartToken || '',
page_url: window.location.href,
page_type: _stoqInitConfig.pageType || '',
shop_domain: _stoqInitConfig.shop || '',
market_id: _stoqInitConfig.marketId || '',
country_code: _stoqInitConfig.countryIsoCode || '',
detected_variant_ids: _stoqDetectedVariantIds,
selected_variant_id: _stoqSelectedVariantId || '',
page_load_seq: _stoqPageSeq,
liquid_rendered_at: _stoqInitConfig.liquidRenderedAt || 0,
app_version: _stoqInitConfig.appVersion || '',
var _sqVidNum = Number(variantId);
var _sqPlan = null;
var _sqPlans = Array.isArray(_sqTrack.sellingPlans) ? _sqTrack.sellingPlans : [];
var _sqMktId = Number(_sqTrack.marketId);
var _sqForVariant = function (pl) {
return pl && pl.enabled && Array.isArray(pl.variant_ids) &&
pl.variant_ids.indexOf(_sqVidNum) !== -1;
};
_sqPlans.forEach(function (pl) {
if (!_sqPlan && _sqForVariant(pl) && pl.markets_enabled &&
Array.isArray(pl.shopify_market_ids) &&
pl.shopify_market_ids.indexOf(_sqMktId) !== -1) { _sqPlan = pl; }
});
if (!_sqPlan) {
_sqPlans.forEach(function (pl) {
if (!_sqPlan && _sqForVariant(pl) && !pl.markets_enabled) { _sqPlan = pl; }
});
}
Shopify?.analytics?.publish?.('stoq_accelerated_checkout_clicked', {
variant_id: variantId,
product_id: (_sqTrack.product && _sqTra