\n If you’re using strict privacy settings or navigating in private mode, it might be blocked.\n Try adjusting your settings or switching browsers to continue.\n \n ',e.parentNode.insertBefore(t,e.nextSibling)}}document.createElement=function(...e){if("script"!==e[0].toLowerCase())return createElementBackup.bind(document)(...e);const t=createElementBackup.bind(document)(...e),n=t.setAttribute.bind(t);return n("defer","defer"),Object.defineProperties(t,{src:{get:()=>t.getAttribute("src"),set:e=>(needsToBeBlocked(e,t.type)&&n("type","javascript/blocked"),n("src",e),!0)},type:{set(e){const r=needsToBeBlocked(t.src,t.type)?"javascript/blocked":e;return n("type",r),!0}}}),t.setAttribute=function(e,n){"type"===e||"src"===e?t[e]=n:HTMLScriptElement.prototype.setAttribute.call(t,e,n)},t};

Help Center

Search through our extensive range of resources, knowledge base, or reach out to our dedicated support team by submitting a ticket.

Find answers instantly

Graphics depicting low-code programming.

Ask the community

Explore our forum to find answers and solutions. Others may have already shared similar issues, providing valuable insights that could address your concerns.

Graphics depicting low-code programming.

Reach out via our chat

Get real-time assistance and quick answers. Chat with us for prompt support and solutions to your queries.

Submit a ticket

If you need assistance with the FlowFuse application, account, or billing, please submit a ticket by filling out the form below.

${components.Highlight({ hit: item, attribute: ['hierarchy', 'lvl0'] })}
${components.Highlight({ hit: item, attribute: ['hierarchy', item.type] })}
${components.Snippet({ hit : item, attribute: 'content', })}
`; }, footer({items, html}) { // Logic: Hide button if we are showing all available hits if (items.length === 0 || items.length >= totalHits) { return null; } // Add data-scope so we know WHICH button was clicked return html``; } } }; } autocomplete({ debug: false, container: '#algolia-search', placeholder, getSources({query}) { // Update initialQuery when getSources runs to track changes if (query !== initialQuery) { initialQuery = query; // CHANGE 4: Reset ALL counters in the map on new search // We can simply clear the object or reset specific keys for (const key in hitsPerPageMap) { hitsPerPageMap[key] = initialHitsPerPage; } } if (searchScope === 'docs') { return [ createSource(searchClient, query, 'docs'), createSource(searchClient, query, 'node-red') ]; } return [ createSource(searchClient, query, searchScope) ] }, onStateChange({ state, refresh }) { // Link Fix document.querySelectorAll('.aa-Panel a').forEach(item => { item.href = item.getAttribute('data-href'); }); document.querySelectorAll('.aa-Panel img').forEach(img => { img.src = img.getAttribute('data-src'); }); // Logic for "Load More" buttons const loadMoreBtns = document.querySelectorAll('.load-more-btn'); loadMoreBtns.forEach(btn => { btn.onclick = (e) => { e.preventDefault(); e.stopPropagation(); // CHANGE 5: Identify scope and increment ONLY that scope const scope = e.target.getAttribute('data-scope'); if (scope) { hitsPerPageMap[scope] = (hitsPerPageMap[scope] || initialHitsPerPage) + initialHitsPerPage; } // Trigger the refresh refresh(); }; }); } }); }