Testing Alpha
This commit is contained in:
27
resources/assets/js/___livewire/registerLivewireHookOnce.js
Normal file
27
resources/assets/js/___livewire/registerLivewireHookOnce.js
Normal file
@ -0,0 +1,27 @@
|
||||
/**
|
||||
* Registra un hook Livewire solo una vez por componente.
|
||||
* @param {string} hookName - Nombre del hook Livewire (por ejemplo, "morphed").
|
||||
* @param {string} componentName - Nombre exacto del componente Livewire.
|
||||
* @param {function} callback - Función que se ejecutará una vez por hook+componente.
|
||||
*/
|
||||
export default function registerLivewireHookOnce(hookName, componentName, callback) {
|
||||
if (!hookName || !componentName || typeof callback !== 'function') {
|
||||
console.warn('[registerLivewireHookOnce] Parámetros inválidos.');
|
||||
return;
|
||||
}
|
||||
|
||||
// Clave única para este hook+componente
|
||||
const safeName = componentName.replace(/[^a-zA-Z0-9]/g, '_');
|
||||
const key = `__hook_${hookName}_${safeName}`;
|
||||
|
||||
if (!window[key]) {
|
||||
window[key] = true;
|
||||
|
||||
Livewire.hook(hookName, ({ component }) => {
|
||||
if (component.name === componentName) {
|
||||
// console.info(`[Livewire Hook Triggered] ${hookName} for ${component.name}`);
|
||||
callback(component);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user