Files
breadcrumb-the-shire/web/js/components/app-fslightbox-refresh.js
fs 25370a1a55 add composer-unused, comprehensive docs, and project restructure
- Add icanhazstring/composer-unused as dev dependency for dependency hygiene checks
- Add German documentation (docs/) covering architecture, conventions, workflows, and developer checklists
- Add API layer (ApiAuth, ApiBootstrap, ApiResponse), audit, scheduler, custom fields, and SSO services
- Add Microsoft OIDC SSO, API token management, and user lifecycle features
- Add swagger-ui vendor integration and OpenAPI spec
- Add production Docker setup and bin/ scripts
- Update composer dependencies, config, templates, and frontend assets throughout

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 15:27:35 +01:00

58 lines
1.5 KiB
JavaScript

const refreshFsLightbox = () => {
if (typeof window.requestFsLightboxRefresh === 'function') {
return window.requestFsLightboxRefresh();
}
if (typeof window.refreshFsLightbox === 'function') {
window.refreshFsLightbox();
window.__fsLightboxRefreshPending = false;
return true;
}
window.__fsLightboxRefreshPending = true;
return false;
};
let refreshTimer = null;
const scheduleRefresh = () => {
if (refreshTimer) {return;}
refreshTimer = window.setTimeout(() => {
refreshTimer = null;
refreshFsLightbox();
}, 30);
};
const initObserver = () => {
if (!document.body || typeof MutationObserver === 'undefined') {
return;
}
const observer = new MutationObserver((mutations) => {
for (const mutation of mutations) {
for (const node of mutation.addedNodes) {
if (!(node instanceof HTMLElement)) {continue;}
if (node.matches?.('[data-fslightbox]') || node.querySelector?.('[data-fslightbox]')) {
scheduleRefresh();
return;
}
}
}
});
observer.observe(document.body, { childList: true, subtree: true });
};
if (!refreshFsLightbox()) {
scheduleRefresh();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', () => {
refreshFsLightbox();
initObserver();
});
} else {
refreshFsLightbox();
initObserver();
}
if (window.__fsLightboxRefreshPending && typeof window.refreshFsLightbox === 'function') {
refreshFsLightbox();
}