Collection:
Delay
Compare (0/5)
112 products
Filter
/* microFusa: direct children from Father collection. No writes or tokens. */
(() => {
if (customElements.get('mf-lg-father-loader')) return;
class MfLgFatherLoader extends HTMLElement {
connectedCallback() {
if (this.life) return;
this.life = new AbortController();
this.status = this.querySelector('[data-mf-status]');
this.retry = this.querySelector('[data-mf-retry]');
this.results = this.querySelector('[data-mf-results]');
this.grid = this.querySelector('.collection-grid');
this.seed = this.querySelector('template[data-mf-page]');
this.retry.addEventListener('click', () => this.load(), {signal: this.life.signal});
this.grid.addEventListener('scroll', () => this.updateArrows(), {signal: this.life.signal});
this.addEventListener('click', event => {
const button = event.target.closest('.flickity-nav');
if (!button || !this.contains(button)) return;
const cards = this.grid.children;
const step = cards.length > 1 ? cards[1].offsetLeft - cards[0].offsetLeft : this.grid.clientWidth;
this.grid.scrollBy({left: button.name === 'prev' ? -step : step,
behavior: matchMedia('(prefers-reduced-motion: reduce)').matches ? 'auto' : 'smooth'});
}, {signal: this.life.signal});
this.observer = new ResizeObserver(() => this.updateArrows());
this.observer.observe(this.grid);
this.load();
}
disconnectedCallback() {
this.life?.abort();
this.request?.abort();
this.observer?.disconnect();
cancelAnimationFrame(this.frame);
this.life = null;
}
announce(text) {
cancelAnimationFrame(this.frame);
this.status.textContent = '';
this.frame = requestAnimationFrame(() => { this.status.textContent = text; });
}
updateArrows() {
const previous = this.querySelector('.flickity-prev');
const next = this.querySelector('.flickity-next');
const maximum = this.grid.scrollWidth - this.grid.clientWidth;
if (previous) previous.disabled = this.grid.scrollLeft <= 1;
if (next) next.disabled = maximum <= 1 || this.grid.scrollLeft >= maximum - 1;
}
async load() {
this.request?.abort();
const controller = new AbortController();
this.request = controller;
const fromRetry = document.activeElement === this.retry;
this.setAttribute('aria-busy', 'true');
this.retry.disabled = true;
this.results.hidden = true;
this.status.classList.remove('mf-lg-status-done');
this.announce(this.dataset.loading);
const cards = new Map();
try {
if (!this.seed) throw new Error('Missing pagination metadata');
const total = Number(this.seed.dataset.total);
const pages = Math.max(1, Number(this.seed.dataset.pages));
const initialPage = Number(this.seed.dataset.page);
const parent = this.seed.dataset.parent;
if (!Number.isInteger(total) || total < 0 || total > 25000 ||
!Number.isInteger(pages) || pages > 100 || initialPage < 1 || initialPage > pages) {
throw new Error('Unsupported pagination range');
}
let scanned = 0;
for (let page = 1; page <= pages; page += 1) {
if (controller.signal.aborted) return;
let template = this.seed;
if (page !== initialPage) {
const url = new URL(window.location.href);
url.searchParams.delete('sections');
url.searchParams.delete('section_id');
url.searchParams.set('section_id', this.dataset.section);
url.searchParams.set(this.seed.dataset.param || 'page', String(page));
const timer = setTimeout(() => controller.abort(), 20000);
let response;
let html;
try {
response = await fetch(url, {signal: controller.signal, credentials: 'same-origin'});
if (!response.ok) throw new Error(`Section HTTP ${response.status}`);
html = await response.text();
} finally { clearTimeout(timer); }
const documentPage = new DOMParser().parseFromString(html, 'text/html');
const loader = documentPage.querySelector('mf-lg-father-loader');
if (!loader || loader.dataset.section !== this.dataset.section) throw new Error('Wrong section');
template = loader.querySelector('template[data-mf-page]');
}
if (!template || Number(template.dataset.page) !== page ||
Number(template.dataset.total) !== total ||
Math.max(1, Number(template.dataset.pages)) !== pages || template.dataset.parent !== parent) {
throw new Error('Pagination context changed or incomplete');
}
const pageScanned = Number(template.dataset.scanned);
const expected = Math.min(250, Math.max(0, total - (page - 1) * 250));
if (pageScanned !== expected) throw new Error('Truncated collection page');
scanned += pageScanned;
for (const child of template.content.querySelectorAll('template[data-mf-child]')) {
const card = child.content.firstElementChild;
if (!card) throw new Error('Missing child card');
cards.set(child.dataset.mfChild, {id: child.dataset.mfChild, title: child.dataset.title, card});
}
this.announce(`${this.dataset.loading} (${scanned}/${total})`);
}
if (!this.isConnected || this.request !== controller || controller.signal.aborted) return;
if (scanned !== total) throw new Error('Incomplete collection coverage');
const ordered = [...cards.values()].sort((a, b) =>
a.title.localeCompare(b.title, document.documentElement.lang || undefined, {sensitivity: 'base'}) || a.id.localeCompare(b.id));
const fragment = document.createDocumentFragment();
for (const item of ordered) fragment.appendChild(item.card.cloneNode(true));
this.grid.replaceChildren(fragment);
this.dataset.scanned = String(scanned);
this.dataset.total = String(total);
this.dataset.children = String(ordered.length);
this.dataset.state = 'complete';
this.results.hidden = ordered.length === 0;
this.retry.hidden = true;
this.status.classList.add('mf-lg-status-done');
this.removeAttribute('aria-busy');
this.announce(this.dataset.done);
this.updateArrows();
if (fromRetry) this.grid.querySelector('a')?.focus();
} catch (error) {
if (!this.isConnected || this.request !== controller) return;
this.dataset.state = 'error';
this.results.hidden = true;
this.retry.hidden = false;
this.retry.disabled = false;
this.removeAttribute('aria-busy');
this.announce(this.dataset.error);
console.warn('[microFusa LG father lookup]', error);
}
}
}
customElements.define('mf-lg-father-loader', MfLgFatherLoader);
})();
Boss RV-6
Regular price
178,00 €
Sale price
178,00 €
Regular price
Unit price
/per
○
Delivery in 1-2 days
Boss DD-8 Digital Delay
Regular price
178,00 €
Sale price
178,00 €
Regular price
Unit price
/per
○
Delivery in 1-2 days
MXR Carbon Copy Mini
Regular price
155,00 €
Sale price
155,00 €
Regular price
159,00 €
Unit price
/per
○
Delivery in 1-2 days
JOYO ATMOSPHERE R-14
Regular price
90,00 €
Sale price
90,00 €
Regular price
0,00 €
Unit price
/per
○
Check availability
BOSS RE-202 Space Echo
Regular price
349,00 €
Sale price
349,00 €
Regular price
0,00 €
Unit price
/per
○
Delivery in 1-2 days
MOOER A7 AMBIENCE
Regular price
90,00 €
Sale price
90,00 €
Regular price
0,00 €
Unit price
/per
○
Out of stock · Date not available
MOOER R7 REVERB
Regular price
82,00 €
Sale price
82,00 €
Regular price
Unit price
/per
○
Delivery in 1-2 days
JOYO D-SEED II
Regular price
77,00 €
Sale price
77,00 €
Regular price
0,00 €
Unit price
/per
○
Check availability
MXR CARBON COPY M169
Regular price
134,00 €
Sale price
134,00 €
Regular price
0,00 €
Unit price
/per
○
Delivery in 5-9 days
ZOOM MS-70CDR+
Regular price
132,00 €
Sale price
132,00 €
Regular price
0,00 €
Unit price
/per
○
Delivery in 1-2 days
Source Audio SA262 Ventris Dual Reverb
Regular price
535,00 €
Sale price
535,00 €
Regular price
0,00 €
Unit price
/per
○
Delivery in 5-9 days
Empress Effects Echosystem
Regular price
459,00 €
Sale price
459,00 €
Regular price
Unit price
/per
○
Check availability
Strymon Timeline Delay
Regular price
479,00 €
Sale price
479,00 €
Regular price
Unit price
/per
○
Delivery in 2-4 days
Universal Audio Starlight Delay
Regular price
387,00 €
Sale price
387,00 €
Regular price
Unit price
/per
○
Check availability
Death By Audio Echo Master
Regular price
379,00 €
Sale price
379,00 €
Regular price
0,00 €
Unit price
/per
○
Delivery in 5-9 days
Boss DD-3T Digital Delay
Regular price
144,00 €
Sale price
144,00 €
Regular price
0,00 €
Unit price
/per
○
Delivery in 1-2 days
DANELECTRO SPRING KING REVERB
Regular price
125,00 €
Sale price
125,00 €
Regular price
0,00 €
Unit price
/per
○
Check availability
LINE6 DL4 MKII
Regular price
218,00 €
Sale price
218,00 €
Regular price
0,00 €
Unit price
/per
○
Check availability
SEYMOUR DUNCAN DARK SUN
Regular price
429,00 €
Sale price
429,00 €
Regular price
0,00 €
Unit price
/per
○
Check availability
SEYMOUR DUNCAN ANDROMEDA
Regular price
373,00 €
Sale price
373,00 €
Regular price
0,00 €
Unit price
/per
○
Delivery in 2-4 days
Add depth and dimension to your sound. Delay pedals are essential for creating rich, immersive textures. From short, clear delays to infinite repeats, our pedals allow you to experiment with different sounds and create unique atmospheres. Whether you're creating ambient soundscapes or adding depth to your solos, you'll find the perfect delay pedal for you.