- Add DISCOVERY_LOG_LEVEL=debug - Add DISCOVERY_SHOW_PROGRESS=true - Temporary changes for debugging InitializerProcessor fixes on production
61 lines
2.0 KiB
JavaScript
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;
|
|
} |