diff --git a/components/agents/AgentPsdTemplateEditorDialog.tsx b/components/agents/AgentPsdTemplateEditorDialog.tsx index c296a0755..17be76a3d 100644 --- a/components/agents/AgentPsdTemplateEditorDialog.tsx +++ b/components/agents/AgentPsdTemplateEditorDialog.tsx @@ -1471,19 +1471,30 @@ function renderTextLayerPreviewContent( ); } -function getAssignedImageMaskStyle( - layer: AgentPsdTemplateImageLayerSlot -): CSSProperties { - const hasMask = Boolean(layer.maskUrl); +function getAssignedImageMaskStyle(params: { + layer: AgentPsdTemplateImageLayerSlot; + maskSourceUrl?: string; +}): CSSProperties { + const normalizedMaskUrl = String( + params.layer.maskUrl || params.maskSourceUrl || "" + ).trim(); + const hasMask = Boolean(normalizedMaskUrl); + const maskImageUrl = hasMask + ? `url(${buildPsdLayerPreviewUrl(normalizedMaskUrl, { + width: params.layer.width, + quality: 72, + })})` + : undefined; return { - WebkitMaskImage: hasMask ? `url(${layer.maskUrl})` : undefined, - maskImage: hasMask ? `url(${layer.maskUrl})` : undefined, + WebkitMaskImage: maskImageUrl, + maskImage: maskImageUrl, WebkitMaskSize: hasMask ? "100% 100%" : undefined, maskSize: hasMask ? "100% 100%" : undefined, WebkitMaskRepeat: hasMask ? "no-repeat" : undefined, maskRepeat: hasMask ? "no-repeat" : undefined, WebkitMaskPosition: hasMask ? "center" : undefined, maskPosition: hasMask ? "center" : undefined, + maskMode: hasMask ? "alpha" : undefined, }; } @@ -4228,12 +4239,20 @@ export function AgentPsdTemplateEditorDialog({ if (!layerImageUrl) { return null; } + const layerPreviewSourceUrl = + getPsdLayerPreviewSourceUrl(layer); const assignedImageContainerStyle = assignedUrl ? { ...layerBoxStyle, - ...getAssignedImageMaskStyle(layer), + ...getAssignedImageMaskStyle({ + layer, + maskSourceUrl: layerPreviewSourceUrl, + }), } : layerBoxStyle; + const previewZIndex = hasAssignedImage + ? Math.max(baseZIndex, renderBaseZIndex + 1) + : baseZIndex; return (