Files
michaelschiemer/resources/js/modules/scroll-dependent/index.js
Michael Schiemer 55a330b223 Enable Discovery debug logging for production troubleshooting
- Add DISCOVERY_LOG_LEVEL=debug
- Add DISCOVERY_SHOW_PROGRESS=true
- Temporary changes for debugging InitializerProcessor fixes on production
2025-08-11 20:13:26 +02:00

61 lines
2.0 KiB
JavaScript

// modules/scroll-dependent/index.js
import { Logger } from '../../core/logger.js';
import { DependencyManager } from '../../core/DependencyManager.js';
// Module definition with explicit dependencies
export const definition = DependencyManager.createDefinition('scroll-dependent', '1.0.0')
.depends('example-module', '1.0.0') // Required dependency
.depends('scrollfx', '1.0.0', true) // Optional dependency
.provides('scroll-coordination')
.priority(10); // Lower priority = later initialization
let scrollSubscription = null;
let state = null;
/**
* Initialize scroll-dependent module
* @param {Object} config - Module configuration
* @param {Object} stateManager - Scoped state manager
*/
export function init(config = {}, stateManager = null) {
Logger.info('[scroll-dependent] init');
state = stateManager;
// Register own state
if (state) {
state.register('isScrolling', false);
state.register('scrollDirection', 'none');
// Subscribe to dependency state
scrollSubscription = state.subscribe('example-module.scrollPosition', (newPos, oldPos) => {
if (oldPos.y !== newPos.y) {
const direction = newPos.y > oldPos.y ? 'down' : 'up';
state.set('scrollDirection', direction);
state.set('isScrolling', true);
// Reset scrolling state after delay
setTimeout(() => {
if (state) {
state.set('isScrolling', false);
}
}, 150);
Logger.info(`[scroll-dependent] Scroll ${direction}: ${newPos.y}`);
}
});
}
}
export function destroy() {
Logger.info('[scroll-dependent] destroy');
if (scrollSubscription && state) {
state.unsubscribe(scrollSubscription);
scrollSubscription = null;
}
if (state && typeof state.cleanup === 'function') {
state.cleanup();
}
state = null;
}