diff --git a/components/agents/AgentPsdTemplateEditorDialog.tsx b/components/agents/AgentPsdTemplateEditorDialog.tsx
index 22cb28a64..ff6a9712b 100644
--- a/components/agents/AgentPsdTemplateEditorDialog.tsx
+++ b/components/agents/AgentPsdTemplateEditorDialog.tsx
@@ -169,6 +169,24 @@ function getAssignedImageStyle(layer: AgentPsdTemplateImageLayerSlot): CSSProper
};
}
+function hasEditedTextValue(layer: AgentPsdTemplateTextLayerSlot, value: string) {
+ return String(value || "").replace(/\r\n/g, "\n") !== String(layer.defaultText || "").replace(/\r\n/g, "\n");
+}
+
+function getInlineTextEditorStyle(
+ layer: AgentPsdTemplateTextLayerSlot,
+ preserveSourceAppearance: boolean
+): CSSProperties {
+ const baseStyle = getTextLayerContentStyle(layer);
+ return {
+ ...baseStyle,
+ background: "transparent",
+ color: preserveSourceAppearance ? "transparent" : layer.textColor,
+ caretColor: layer.textColor,
+ WebkitTextFillColor: preserveSourceAppearance ? "transparent" : layer.textColor,
+ };
+}
+
export function AgentPsdTemplateEditorDialog({
open,
onOpenChange,
@@ -618,9 +636,7 @@ export function AgentPsdTemplateEditorDialog({
}
const value = effectiveTextAssignments[layer.id] || "";
- const defaultText = String(layer.defaultText || "");
- const shouldUseEditedPreview =
- value.trim().length > 0 && value.trim() !== defaultText.trim();
+ const shouldUseEditedPreview = hasEditedTextValue(layer, value);
if (!shouldUseEditedPreview && layer.sourceUrl) {
return (
@@ -697,6 +713,9 @@ export function AgentPsdTemplateEditorDialog({
{orderedEditableTextLayers.map((layer) => {
const isSelected = selectedLayerId === layer.id;
const frameStyle = getLayerFrameStyle(layer, isSelected);
+ const currentValue = effectiveTextAssignments[layer.id] || "";
+ const preserveSourceAppearance =
+ !!layer.sourceUrl && !hasEditedTextValue(layer, currentValue);
if (isSelected) {
return (
@@ -706,12 +725,21 @@ export function AgentPsdTemplateEditorDialog({
style={{
...frameStyle,
zIndex: 40,
- background: "rgba(56,189,248,0.08)",
+ background: preserveSourceAppearance
+ ? "transparent"
+ : "rgba(56,189,248,0.08)",
}}
>
+ {preserveSourceAppearance && layer.sourceUrl ? (
+
+ ) : null}