import { Application } from "@hotwired/stimulus"; import { eagerControllers, isApplicationDebug, lazyControllers } from "./controllers.js"; const controllerAttribute = "data-controller"; const loadControllers = (application, eagerControllers2, lazyControllers2) => { for (const name in eagerControllers2) { registerController(name, eagerControllers2[name], application); } const lazyControllerHandler = new StimulusLazyControllerHandler( application, lazyControllers2 ); lazyControllerHandler.start(); }; const startStimulusApp = () => { const application = Application.start(); application.debug = isApplicationDebug; loadControllers(application, eagerControllers, lazyControllers); return application; }; class StimulusLazyControllerHandler { constructor(application, lazyControllers2) { this.application = application; this.lazyControllers = lazyControllers2; } start() { this.lazyLoadExistingControllers(document.documentElement); this.lazyLoadNewControllers(document.documentElement); } lazyLoadExistingControllers(element) { Array.from(element.querySelectorAll(`[${controllerAttribute}]`)).flatMap(extractControllerNamesFrom).forEach((controllerName) => this.loadLazyController(controllerName)); } loadLazyController(name) { if (!this.lazyControllers[name]) { return; } const controllerLoader = this.lazyControllers[name]; delete this.lazyControllers[name]; if (!canRegisterController(name, this.application)) { return; } this.application.logDebugActivity(name, "lazy:loading"); controllerLoader().then((controllerModule) => { this.application.logDebugActivity(name, "lazy:loaded"); registerController(name, controllerModule.default, this.application); }).catch((error) => { console.error(`Error loading controller "${name}":`, error); }); } lazyLoadNewControllers(element) { if (Object.keys(this.lazyControllers).length === 0) { return; } new MutationObserver((mutationsList) => { for (const { attributeName, target, type } of mutationsList) { switch (type) { case "attributes": { if (attributeName === controllerAttribute && target.getAttribute(controllerAttribute)) { extractControllerNamesFrom(target).forEach( (controllerName) => this.loadLazyController(controllerName) ); } break; } case "childList": { this.lazyLoadExistingControllers(target); } } } }).observe(element, { attributeFilter: [controllerAttribute], subtree: true, childList: true }); } } function registerController(name, controller, application) { if (canRegisterController(name, application)) { application.register(name, controller); } } function extractControllerNamesFrom(element) { const controllerNameValue = element.getAttribute(controllerAttribute); if (!controllerNameValue) { return []; } return controllerNameValue.split(/\s+/).filter((content) => content.length); } function canRegisterController(name, application) { return !application.router.modulesByIdentifier.has(name); } export { loadControllers, startStimulusApp };
Fatal error: Uncaught TypeError: Invalid return value: callable object expected, "int" returned from "/var/www/html/public/assets/@symfony/stimulus-bundle/loader-V1GtHuK.js". in /var/www/html/vendor/autoload_runtime.php:12 Stack trace: #0 /var/www/html/public/index.php(5): require_once() #1 {main} thrown in /var/www/html/vendor/autoload_runtime.php on line 12