cturedContent\": {\n \"_type\": \"SqspHostedVideo\",\n \"videoCodec\": \"h264\",\n \"audioCodec\": \"aac\",\n \"alexandriaUrl\": \"https:\/\/video.squarespace-cdn.com\/content\/v1\/60d2d479d2b7b75136ea090c\/13d35982-0bd5-43ad-9abf-de4988207c31\/{variant}\",\n \"alexandriaLibraryId\": \"60d2d479d2b7b75136ea090c\",\n \"aspectRatio\": 1.7777777777777777,\n \"durationSeconds\": 7.741067\n },\n \"videoCodec\": \"h264\",\n \"audioCodec\": \"aac\",\n \"alexandriaUrl\": \"https:\/\/video.squarespace-cdn.com\/content\/v1\/60d2d479d2b7b75136ea090c\/13d35982-0bd5-43ad-9abf-de4988207c31\/{variant}\",\n \"alexandriaLibraryId\": \"60d2d479d2b7b75136ea090c\",\n \"aspectRatio\": 1.7777777777777777,\n \"durationSeconds\": 7.741067,\n \"items\": [ ],\n \"pushedServices\": { },\n \"pendingPushedServices\": { },\n \"usageId\": \"c8532979-97e0-3e70-a35c-d6b1c534793a\",\n \"assetProtect Would you like to add on any equipment?ionLevel\": \"LIBRARY\",\n \"originalSize\": \"1920:1080\",\n \"recordTypeLabel\": \"sqsp-hosted-video\"\n }\n },\n \"backgroundImageId\": null,\n \"backgroundMediaEffect\": {\n \"type\": \"none\"\n },\n \"divider\": null,\n \"typeName\": \"portfolio-grid-basic\"\n }' data-animation=\"none\" data-controller=\"SectionWrapperController\" data-controllers-bound=\"SectionWrapperController\" data-active=\"true\"\u003e\n\u003cdiv class=\"section-border\"\u003e\n\u003cdiv class=\"section-background\"\u003e\n\u003cdiv data-controllers-bound=\"VideoBackgroundNative\" data-controller=\"VideoBackgroundNative\"\u003e\n\u003cdiv class=\"sqs-video-background-native content-fill\" data-config-native-video='{\n \"id\": \"63d94ec831372c305496eb74\",\n \"recordType\": 61,\n \"addedOn\": 1675185864735,\n \"updatedOn\": 1675185864735,\n \"authorId\": \"5155d3f4e4b02f77ba725967\",\n \"systemDataId\": \"13d35982-0bd5-43ad-9abf-de4988207c31\",\n \"systemDataVariants\":
\"1920:1080,640:360\",\n \"systemDataSourceType\": \"mp4\",\n \"filename\": \"2.mov\",\n \"body\": null,\n \"likeCount\": 0,\n \"commentCount\": 0,\n \"publicCommentCount\": 0,\n \"commentState\": 1,\n \"author\": {\n \"id\": \"5155d3f4e4b02f77ba725967\",\n \"displayName\": \"klaus dyba\",\n \"firstName\": \"klaus\",\n \"lastName\": \"dyba\",\n \"websiteUrl\": \"\",\n \"bio\": \"\"\n },\n \"contentType\": \"video\/mp4\",\n \"structuredContent\": {\n \"_type\": \"SqspHostedVideo\",\n \"videoCodec\": \"h264\",\n \"audioCodec\": \"aac\",\n \"alexandriaUrl\": \"https:\/\/video.squarespace-cdn.com\/content\/v1\/60d2d479d2b7b75136ea090c\/13d35982-0bd5-43ad-9abf-de4988207c31\/{variant}\",\n \"alexandriaLibraryId\": \"60d2d479d2b7b75136ea090c\",\n \"aspectRatio\": 1.7777777777777777,\n \"durationSeconds\": 7.741067\n },\n \"videoCodec\": \"h264\",\n \"audioCodec\": \"aac\",\n \"alexandriaUrl\": \"https:\/\/vProduct Details ideo.squarespace-cdn.com\/content\/v1\/60d2d479d2b7b75136ea090c\/13d35982-0bd5-43ad-9abf-de4988207c31\/{variant}\",\n \"alexandriaLibraryId\": \"60d2d479d2b7b75136ea090c\",\n \"aspectRatio\": 1.7777777777777777,\n \"durationSeconds\": 7.741067,\n \"items\": [ ],\n \"pushedServices\": { },\n \"pendingPushedServices\": { },\n \"usageId\": \"c8532979-97e0-3e70-a35c-d6b1c534793a\",\n \"assetProtectionLevel\": \"LIBRARY\",\n \"originalSize\": \"1920:1080\",\n \"recordTypeLabel\": \"sqsp-hosted-video\"\n }' data-config-playback-speed=\"1\" data-config-filter=\"1\" data-config-filter-strength=\"52\"\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eFrame\u003c\/td\u003e\n\u003ctd\u003e6061-T6 hydro-formed Aluminium, TA, rack \/ fender mounts, stealth dropper ready, 86.5 mm T47 BB shell\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eFork\u003c\/td\u003e\n\u003ctd\u003e6061 aluminium, TA, 1.1\/2'' - 1.1\/8'',
ndow._RestockRocketConfig.product.variants.find(function(variant) { return variant.id == window._RestockRocketConfig.selected_variant_id }).available;window._RestockRocketConfig.scriptUrlProduct = 'https://cdn.shopify.com/extensions/019b6e86-8dbc-7c58-99fb-8c695965347e/restock-rocket-shopify-423/assets/restockrocket-product.js' window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/019b6e86-8dbc-7c58-99fb-8c695965347e/restock-rocket-shopify-423/assets/restockrocket-collection.js' window._RestockRocketConfig.scriptHost = window._RestockRocketConfig.scriptUrlProduct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1) window._RestockRocketConfig.host = 'https://app.restockrocket.io' const SETTINGS_CACHE_DURATION = 15 * 60 * 1000; // 15 minutes in milliseconds function checkSettingsExpiry(settings) { try { if (!settings || !settings.updated_at) { console.debug('STOQ - Invalid settings data structure'); return null; Mountain bike saddle bag adapter for dropper posts.Hire Lazer Compact Helmet } 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.prototype.hasOwnProperty.call(settings.translations, window._RestockRocketConfig.normalizedLocale)) { conso
le.debug('STOQ - locale not explicitly translated, will use default language from cache'); } // Don't return null - continue using cache even for untranslated locales } 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')
function applyTranslations(settings) {
try {
// Skip translation logic entirely if multi-language is not enabled
if (!settings || The custom-made Backcountry Dropper Post Adapter allows the
!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];
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;
}
}
// First try to get settings from metafields with expiry check
const cachedSettings = window._RestockRocketConfig.cachedSettings;
const v
alidCachedSettings = 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 }
)
.then(function(response) {
if (!response.ok) {
throw new Error('Network response was not ok');
<}
return response.json();
})
.then(function(settings) {
initializeScripts(settings);
})
.catch(function(error) {
// If request failed and we have cached settings (even if expired), use them as fallback
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 initializeScripts(settings) {
settings = applyTranslations(settings);
window._RestockRocketConfig.settings = settings;
console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`);
if(settings.enable_app) {
const hijackIntegration = window._RestockRocketConfig.integrations.find(function(integration) {
return integration.type === 'hijack' && integration.enabled && integration.page_types.includes(window._RestockRockeBackcountry Saddle Packa class="product__media product__media--featured"
href="/collections/accessories-mudguards/products/hire-smith-convoy-helmet"
title="Hire Lazer Compact Helmet"
aria-label="Hire Lazer Compact Helmet"
style="background-image: url(//projektride.co.uk/cdn/shop/files/my2023_tempo-kineticore-black_right_1400x1011800x600-removebg-preview_1_600x.png?v=1747484784)">
tConfig.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.scriptUrlCollection);
} else if(window._RestockRocketConfig.pageType === 'product') {
createRestockRocketSc
The saddle bag dropper post adapter comes with a choice of shims for mountain bike dropper posts with 30.9mm, 31.6mm and 34.9mm lower diameters and is easily fitted using a 3mm hex wrench. The broad, flat rear section and ridged strap retainer improve stability over rough terrain and the dropper post saddle bag adapter is compatible with any bag that uses a 25mm seat post strap (or smaller).
.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:line-through;color: #666666;}.restock-rocket-discounted-price{margin-left:10px;}.restock-rocket-acknowledgement-checkboTECHNICAL
The Backcountry Dropper Post Adapter is designed to work with mountain bike dropper posts with a 25mm or 26mm upper stanchion diameter. These sizes are typical for posts with a 30.9mm, 31.6mm or 34.9mm lower section diameter. If you have any questions over compatibility, please Hire Ortlieb 40L Pannier Bagscontact us.
Materials
< a class="product__media product__media--featured" href="/collections/accessories-mudguards/products/hire-ortlieb-40l-pannier-bags" title="Hire Ortlieb 40L Pannier Bags" aria-label="Hire Ortlieb 40L Pannier Bags" style="background-image: url(//projektride.co.uk/cdn/shop/files/resize_width_1000_600x.jpg?v=1741085512)"> Hire Ortlieb 40L Pannier Bags>
