<script>
document.addEventListener('wmPopup:afterOpenPopup', async function(e) {
if (!window.websiteComponents) return;
const popupContent = e.detail.el.querySelector('.wm-popup-content');
if (!popupContent) return;
const loader = window.websiteComponents.loader;
const instanceLoader = window.websiteComponents.visitorInstanceLoader;
const componentBlocks = popupContent.querySelectorAll('.sqs-block-website-component');
for (const block of componentBlocks) {
const definitionName = block.dataset.definitionName;
const blockId = block.id;
if (!definitionName || !blockId) continue;
const visitorModuleName = `${definitionName}.visitor`;
const wrapper = block.querySelector('.form-wrapper, .button-wrapper, .code-wrapper');
const needsInit = wrapper && wrapper.children.length === 0;
const moduleEntry = loader.modules[visitorModuleName];
const moduleNotLoaded = !moduleEntry || !moduleEntry.executingContext;
if (needsInit || moduleNotLoaded) {
try {
if (!loader.importMap[visitorModuleName]) {
const scriptsData = block.dataset.blockScripts;
if (scriptsData) {
const scripts = JSON.parse(scriptsData);
const visitorUrl = scripts.find(s => s.includes('visitor'));
if (visitorUrl) {
loader.importMap[visitorModuleName] = visitorUrl;
}
}
}
await instanceLoader.load({
definitionName,
id: blockId,
element: block,
forceRefresh: true,
isInEditor: false });
}
catch (err) {
// Silent fail
}
}
}
});
</script>