Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 0 additions & 21 deletions packages/liquid-forge/lib/inject-assets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
*/

import { ThemeStudioScriptInjector } from '../services/rendering/theme-studio-script-injector';
import { logger } from './logger';

/**
* Utilidad para inyectar CSS y JS en el HTML renderizado
Expand All @@ -25,13 +24,6 @@ import { logger } from './logger';
* @returns El HTML con los assets inyectados
*/
export function injectAssets(html: string, assetCollector: any, domain?: string): string {
logger.info('[injectAssets] Iniciando inyección de assets', {
htmlLength: html.length,
domain,
hasDomain: !!domain,
hasThemeStudioScript: html.includes('data-fasttify-theme-studio="true"'),
});

let finalHtml = html;
const css = assetCollector.getCombinedCss();
const js = assetCollector.getCombinedJs();
Expand All @@ -52,20 +44,7 @@ export function injectAssets(html: string, assetCollector: any, domain?: string)

// Inyectar script del ThemeStudio en todas las tiendas
if (domain) {
const beforeLength = finalHtml.length;
finalHtml = ThemeStudioScriptInjector.injectScript(finalHtml, domain);
const afterLength = finalHtml.length;
logger.info('[injectAssets] Script del ThemeStudio procesado', {
domain,
beforeLength,
afterLength,
difference: afterLength - beforeLength,
finalScriptCount: (finalHtml.match(/data-fasttify-theme-studio="true"/g) || []).length,
});
} else {
logger.info('[injectAssets] No se inyecta script del ThemeStudio - sin dominio', {
domain,
});
}

return finalHtml;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
*/

import { iframeSelectionScript } from '@fasttify/theme-studio';
import { logger } from '../../lib/logger';

/**
* Servicio para inyectar el script del ThemeStudio en el HTML renderizado
Expand All @@ -27,15 +26,7 @@ export class ThemeStudioScriptInjector {
* @returns El script completo como string
*/
static generateScript(domain: string | undefined): string {
logger.info('[ThemeStudioScriptInjector] Generando script', {
domain,
hasDomain: !!domain,
});
const script = iframeSelectionScript(domain || null);
logger.info('[ThemeStudioScriptInjector] Script generado', {
scriptLength: script.length,
scriptPreview: script.substring(0, 200),
});
return script;
}

Expand All @@ -49,20 +40,7 @@ export class ThemeStudioScriptInjector {
const hasExistingScript = html.includes('data-fasttify-theme-studio="true"');
const scriptCount = (html.match(/data-fasttify-theme-studio="true"/g) || []).length;

logger.info('[ThemeStudioScriptInjector] Intentando inyectar script', {
domain,
htmlLength: html.length,
hasExistingScript,
scriptCount,
hasHead: html.includes('</head>'),
hasBody: html.includes('</body>'),
});

if (hasExistingScript) {
logger.warn('[ThemeStudioScriptInjector] Script ya existe, evitando duplicado', {
scriptCount,
domain,
});
return html;
}

Expand All @@ -72,35 +50,15 @@ export class ThemeStudioScriptInjector {
let result: string;
if (html.includes('</head>')) {
result = html.replace('</head>', `${scriptTag}</head>`);
logger.info('[ThemeStudioScriptInjector] Script inyectado en </head>', {
domain,
resultLength: result.length,
scriptTagLength: scriptTag.length,
});
} else if (html.includes('</body>')) {
result = html.replace('</body>', `${scriptTag}</body>`);
logger.info('[ThemeStudioScriptInjector] Script inyectado en </body>', {
domain,
resultLength: result.length,
scriptTagLength: scriptTag.length,
});
} else {
result = html + scriptTag;
logger.info('[ThemeStudioScriptInjector] Script inyectado al final', {
domain,
resultLength: result.length,
scriptTagLength: scriptTag.length,
});
}

// Verificar que se inyectó correctamente
const finalScriptCount = (result.match(/data-fasttify-theme-studio="true"/g) || []).length;
if (finalScriptCount !== 1) {
logger.error('[ThemeStudioScriptInjector] Error: Script inyectado múltiples veces', {
domain,
finalScriptCount,
expectedCount: 1,
});
}

return result;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,23 +80,23 @@ function compatibilityModule() {
}

// Si no hay hermanos siguientes, buscar en el padre
let parent = commentNode.parentNode;
while (parent && parent !== document.body) {
let parentNode = commentNode.parentNode;
while (parentNode && parentNode !== document.body) {
// Buscar siguiente hermano del padre
let sibling = parent.nextSibling;
while (sibling) {
if (isValidSectionElement(sibling)) {
return sibling;
let siblingNode = parentNode.nextSibling;
while (siblingNode) {
if (isValidSectionElement(siblingNode)) {
return siblingNode;
}
sibling = sibling.nextSibling;
siblingNode = siblingNode.nextSibling;
}

// Si el padre es válido, usarlo
if (isValidSectionElement(parent)) {
return parent;
if (isValidSectionElement(parentNode)) {
return parentNode;
}

parent = parent.parentNode;
parentNode = parentNode.parentNode;
}

return null;
Expand Down Expand Up @@ -155,12 +155,12 @@ function compatibilityModule() {
if (blockElement && !blockElement.hasAttribute('data-block-id')) {
// Necesitamos obtener el sectionId del contexto
// Por ahora, buscar el sectionId más cercano subiendo en el árbol
let parent = blockElement.parentElement;
let blockParent = blockElement.parentElement;
let sectionId = null;

while (parent && !sectionId) {
sectionId = parent.getAttribute('data-section-id');
parent = parent.parentElement;
while (blockParent && !sectionId) {
sectionId = blockParent.getAttribute('data-section-id');
blockParent = blockParent.parentElement;
}

if (sectionId) {
Expand Down
Loading