Browse Source

我的创造修改 删除冗余代码

feature/0710
yun 3 days ago
parent
commit
82407e1f62
  1. 4
      src/components/MyCreationPickerModal.tsx
  2. 3
      src/components/media/image-edit/useImageDerivedNodeActions.ts
  3. 12
      src/components/nodes/GenerateImageNode.tsx
  4. 4
      src/components/nodes/ImageInputNode.tsx
  5. 2
      src/components/nodes/TextNodeResizer.tsx
  6. 75
      src/store/workflowStore.ts
  7. 15
      src/utils/splitGridNodes.ts
  8. 1
      src/utils/videoFrameNode.ts

4
src/components/MyCreationPickerModal.tsx

@ -180,9 +180,9 @@ function getHistoryPreviewUrl(item: HistoryItem, kind: HistoryTabKey): string |
const mediaKind = getHistoryKind(item, kind); const mediaKind = getHistoryKind(item, kind);
const result = firstResult(item); const result = firstResult(item);
if (mediaKind === "image") { if (mediaKind === "image") {
return firstString(result?.thumbs || undefined) || null; return firstString(result?.thumbs || undefined) || firstString(result?.images || undefined) || null;
} }
if (mediaKind === "video") return result?.coverThumb || result?.cover || item.coverThumb || item.cover || result?.video || item.video || null; if (mediaKind === "video") return result?.cover || result?.video || null;
return null; return null;
} }

3
src/components/media/image-edit/useImageDerivedNodeActions.ts

@ -42,8 +42,7 @@ interface CreateSplitGridNodesOptions {
selectedCellKeys: Set<string>; selectedCellKeys: Set<string>;
} }
function getNodeWidth(node: { width?: unknown; style?: { width?: unknown } | undefined }) { function getNodeWidth(node: { style?: { width?: unknown } | undefined }) {
if (typeof node.width === "number") return node.width;
if (typeof node.style?.width === "number") return node.style.width; if (typeof node.style?.width === "number") return node.style.width;
return defaultNodeDimensions.imageInput.width; return defaultNodeDimensions.imageInput.width;
} }

12
src/components/nodes/GenerateImageNode.tsx

@ -295,9 +295,7 @@ export function GenerateImageNodeView({ id, data, selected, renderInputHandle =
if (!currentNode) return; if (!currentNode) return;
const currentPosition = currentNode.position ?? { x: 0, y: 0 }; const currentPosition = currentNode.position ?? { x: 0, y: 0 };
const currentWidth = typeof currentNode.width === "number" const currentWidth = typeof currentNode.style?.width === "number"
? currentNode.width
: typeof currentNode.style?.width === "number"
? currentNode.style.width ? currentNode.style.width
: 300; : 300;
const filename = `crop-${Date.now()}.png`; const filename = `crop-${Date.now()}.png`;
@ -381,9 +379,7 @@ export function GenerateImageNodeView({ id, data, selected, renderInputHandle =
if (!currentNode || !imageSource) return; if (!currentNode || !imageSource) return;
const currentPosition = currentNode.position ?? { x: 0, y: 0 }; const currentPosition = currentNode.position ?? { x: 0, y: 0 };
const currentWidth = typeof currentNode.width === "number" const currentWidth = typeof currentNode.style?.width === "number"
? currentNode.width
: typeof currentNode.style?.width === "number"
? currentNode.style.width ? currentNode.style.width
: 300; : 300;
const dimensions = await readHighDefinitionSourceImageDimensions(currentNode.data as { dimensions?: unknown }, imageSource); const dimensions = await readHighDefinitionSourceImageDimensions(currentNode.data as { dimensions?: unknown }, imageSource);
@ -408,9 +404,7 @@ export function GenerateImageNodeView({ id, data, selected, renderInputHandle =
if (!currentNode || !imageSource || !outpaintingModel) return; if (!currentNode || !imageSource || !outpaintingModel) return;
const currentPosition = currentNode.position ?? { x: 0, y: 0 }; const currentPosition = currentNode.position ?? { x: 0, y: 0 };
const currentWidth = typeof currentNode.width === "number" const currentWidth = typeof currentNode.style?.width === "number"
? currentNode.width
: typeof currentNode.style?.width === "number"
? currentNode.style.width ? currentNode.style.width
: 300; : 300;
const sourceDimensions = await readHighDefinitionSourceImageDimensions(currentNode.data as { dimensions?: unknown }, imageSource); const sourceDimensions = await readHighDefinitionSourceImageDimensions(currentNode.data as { dimensions?: unknown }, imageSource);

4
src/components/nodes/ImageInputNode.tsx

@ -293,9 +293,7 @@ export function ImageInputNodeView({ id, data, selected, renderInputHandle = fal
if (!currentNode || !imageSource) return; if (!currentNode || !imageSource) return;
const currentPosition = currentNode.position ?? { x: 0, y: 0 }; const currentPosition = currentNode.position ?? { x: 0, y: 0 };
const currentWidth = typeof currentNode.width === "number" const currentWidth = typeof currentNode.style?.width === "number"
? currentNode.width
: typeof currentNode.style?.width === "number"
? currentNode.style.width ? currentNode.style.width
: IMAGE_INPUT_DIMENSIONS.width; : IMAGE_INPUT_DIMENSIONS.width;
const dimensions = await readHighDefinitionSourceImageDimensions(currentNode.data as { dimensions?: unknown }, imageSource); const dimensions = await readHighDefinitionSourceImageDimensions(currentNode.data as { dimensions?: unknown }, imageSource);

2
src/components/nodes/TextNodeResizer.tsx

@ -13,8 +13,6 @@ interface TextNodeResizerProps {
function applyNodeDimensions(node: Node, width: number, height: number): Node { function applyNodeDimensions(node: Node, width: number, height: number): Node {
return { return {
...node, ...node,
width,
height,
style: { ...node.style, width, height }, style: { ...node.style, width, height },
}; };
} }

75
src/store/workflowStore.ts

@ -553,42 +553,6 @@ function withDefaultCustomTitle(type: NodeType, data: WorkflowNodeData, nodes: W
} as WorkflowNodeData; } as WorkflowNodeData;
} }
function logSmartImage7Snapshot(label: string, node: WorkflowNode | undefined | null, extra?: Record<string, unknown>) {
if (!node || node.id !== "smartImage-7") return;
const data = node.data as {
inputPrompt?: unknown;
selectedModel?: SelectedModel;
outputImage?: unknown;
inputImages?: unknown;
referenceSubjectList?: unknown;
parameters?: unknown;
status?: unknown;
};
console.debug("[composer-debug] smartImage-7 data trace", {
label,
id: node.id,
type: node.type,
selected: node.selected,
inputPrompt: data.inputPrompt,
selectedModel: data.selectedModel
? {
provider: data.selectedModel.provider,
modelId: data.selectedModel.modelId,
displayName: data.selectedModel.displayName,
type: data.selectedModel.type,
subType: data.selectedModel.subType,
capabilities: data.selectedModel.capabilities,
}
: undefined,
hasOutputImage: Boolean(data.outputImage),
inputImages: data.inputImages,
referenceSubjectList: data.referenceSubjectList,
parameters: data.parameters,
status: data.status,
...extra,
});
}
function canConnectToDerivedMediaTarget(connection: Connection, nodes: WorkflowNode[]): boolean { function canConnectToDerivedMediaTarget(connection: Connection, nodes: WorkflowNode[]): boolean {
const targetNode = connection.target const targetNode = connection.target
? nodes.find((node) => node.id === connection.target) ? nodes.find((node) => node.id === connection.target)
@ -1582,12 +1546,6 @@ const workflowStoreImpl: StateCreator<WorkflowStore> = (set, get) => ({
convertNodeType: (nodeId: string, type: NodeType, initialData?: Partial<WorkflowNodeData>) => { convertNodeType: (nodeId: string, type: NodeType, initialData?: Partial<WorkflowNodeData>) => {
const sourceNode = get().nodes.find((node) => node.id === nodeId); const sourceNode = get().nodes.find((node) => node.id === nodeId);
if (!sourceNode) return; if (!sourceNode) return;
if (nodeId === "smartImage-7") {
logSmartImage7Snapshot("convertNodeType:before", sourceNode, {
nextType: type,
initialData,
});
}
const { width, height } = defaultNodeDimensions[type]; const { width, height } = defaultNodeDimensions[type];
const sourceData = sourceNode.data as { const sourceData = sourceNode.data as {
@ -1624,12 +1582,6 @@ const workflowStoreImpl: StateCreator<WorkflowStore> = (set, get) => ({
) as WorkflowNode[], ) as WorkflowNode[],
hasUnsavedChanges: true, hasUnsavedChanges: true,
})); }));
if (nodeId === "smartImage-7") {
logSmartImage7Snapshot("convertNodeType:after", get().nodes.find((node) => node.id === nodeId), {
nextType: type,
initialData,
});
}
get().incrementManualChangeCount(); get().incrementManualChangeCount();
}, },
@ -1638,12 +1590,6 @@ const workflowStoreImpl: StateCreator<WorkflowStore> = (set, get) => ({
const node = get().nodes.find((n) => n.id === nodeId); const node = get().nodes.find((n) => n.id === nodeId);
if (!node) return; if (!node) return;
const managedData = buildStoreManagedGenerationData(node, data, get); const managedData = buildStoreManagedGenerationData(node, data, get);
if (nodeId === "smartImage-7") {
logSmartImage7Snapshot("updateNodeData:before", node, {
patch: data,
managedPatch: managedData,
});
}
const hasDataChange = Object.entries(managedData).some( const hasDataChange = Object.entries(managedData).some(
([key, value]) => !Object.is((node.data as Record<string, unknown>)[key], value) ([key, value]) => !Object.is((node.data as Record<string, unknown>)[key], value)
@ -1655,12 +1601,6 @@ const workflowStoreImpl: StateCreator<WorkflowStore> = (set, get) => ({
const resizedNode = applyWorkflowNodeStyleSize(node, canvasSize); const resizedNode = applyWorkflowNodeStyleSize(node, canvasSize);
const hasSizeChange = resizedNode !== node; const hasSizeChange = resizedNode !== node;
if (!hasDataChange && !hasSizeChange) { if (!hasDataChange && !hasSizeChange) {
if (nodeId === "smartImage-7") {
logSmartImage7Snapshot("updateNodeData:no-change", node, {
patch: data,
managedPatch: managedData,
});
}
return; return;
} }
const selectedModelChanged = Object.prototype.hasOwnProperty.call(managedData, "selectedModel"); const selectedModelChanged = Object.prototype.hasOwnProperty.call(managedData, "selectedModel");
@ -1694,12 +1634,6 @@ const workflowStoreImpl: StateCreator<WorkflowStore> = (set, get) => ({
) as WorkflowNode[], ) as WorkflowNode[],
hasUnsavedChanges: true, hasUnsavedChanges: true,
})); }));
if (nodeId === "smartImage-7") {
logSmartImage7Snapshot("updateNodeData:after", get().nodes.find((node) => node.id === nodeId), {
patch: data,
managedPatch: managedData,
});
}
if (selectedModelChanged) { if (selectedModelChanged) {
const unsupportedEdgeIds = getUnsupportedReferenceEdgeIds(nodeId, get); const unsupportedEdgeIds = getUnsupportedReferenceEdgeIds(nodeId, get);
if (unsupportedEdgeIds.length > 0) { if (unsupportedEdgeIds.length > 0) {
@ -3412,11 +3346,6 @@ const workflowStoreImpl: StateCreator<WorkflowStore> = (set, get) => ({
}, },
loadWorkflow: async (workflow: WorkflowFile, workflowPath?: string, options?: { preserveSnapshot?: boolean }) => { loadWorkflow: async (workflow: WorkflowFile, workflowPath?: string, options?: { preserveSnapshot?: boolean }) => {
logSmartImage7Snapshot(
"loadWorkflow:start",
(workflow.nodes as WorkflowNode[]).find((node) => node.id === "smartImage-7")
);
// Update nodeIdCounter to avoid ID collisions // Update nodeIdCounter to avoid ID collisions
const maxNodeId = workflow.nodes.reduce((max, node) => { const maxNodeId = workflow.nodes.reduce((max, node) => {
const match = node.id.match(/-(\d+)$/); const match = node.id.match(/-(\d+)$/);
@ -3453,10 +3382,6 @@ const workflowStoreImpl: StateCreator<WorkflowStore> = (set, get) => ({
} }
return node; return node;
}) as WorkflowNode[]; }) as WorkflowNode[];
logSmartImage7Snapshot(
"loadWorkflow:after-model-normalize",
(workflow.nodes as WorkflowNode[]).find((node) => node.id === "smartImage-7")
);
workflow.edges = workflow.edges.map((edge) => normalizeWorkflowEdgeHandles(edge)); workflow.edges = workflow.edges.map((edge) => normalizeWorkflowEdgeHandles(edge));

15
src/utils/splitGridNodes.ts

@ -1,6 +1,7 @@
import type { XYPosition } from "@xyflow/react"; import type { XYPosition } from "@xyflow/react";
import type { Connection } from "@xyflow/react"; import type { Connection } from "@xyflow/react";
import type { SmartImageNodeData, WorkflowNode } from "@/types"; import type { SmartImageNodeData, WorkflowNode } from "@/types";
import { defaultNodeDimensions } from "@/constants/nodeDimensions";
import { createPendingDerivedImageNode } from "@/utils/derivedImageNodes"; import { createPendingDerivedImageNode } from "@/utils/derivedImageNodes";
import { resolveMediaNodeCreationSizeFromDimensions } from "@/utils/nodeSizing"; import { resolveMediaNodeCreationSizeFromDimensions } from "@/utils/nodeSizing";
@ -14,13 +15,17 @@ interface SplitGridNodeCreationOptions {
selectSingleNode?: (nodeId: string) => void; selectSingleNode?: (nodeId: string) => void;
} }
function getNodeWidth(node: WorkflowNode) { function getStyleWidth(node: WorkflowNode): number {
return node.style?.width as number; return typeof node.style?.width === "number" ? node.style.width : defaultNodeDimensions.imageInput.width;
}
function getStyleHeight(node: WorkflowNode): number {
return typeof node.style?.height === "number" ? node.style.height : defaultNodeDimensions.imageInput.height;
} }
function getSplitNodeStartPosition(sourceNode: WorkflowNode): XYPosition { function getSplitNodeStartPosition(sourceNode: WorkflowNode): XYPosition {
return { return {
x: sourceNode.position.x + getNodeWidth(sourceNode) + 220, x: sourceNode.position.x + getStyleWidth(sourceNode) + 220,
y: sourceNode.position.y, y: sourceNode.position.y,
}; };
} }
@ -49,9 +54,7 @@ function resolveSplitNodeDimensions(sourceNode: WorkflowNode, rows: number, cols
function resolveSplitNodeSize(sourceNode: WorkflowNode, splitDimensions: { width: number; height: number } | null): { width: number; height: number } { function resolveSplitNodeSize(sourceNode: WorkflowNode, splitDimensions: { width: number; height: number } | null): { width: number; height: number } {
const splitNodeSize = resolveMediaNodeCreationSizeFromDimensions(splitDimensions); const splitNodeSize = resolveMediaNodeCreationSizeFromDimensions(splitDimensions);
if (!splitNodeSize) { if (!splitNodeSize) {
const width = sourceNode.style?.width as number; return { width: getStyleWidth(sourceNode), height: getStyleHeight(sourceNode) };
const height = sourceNode.style?.height as number;
return { width, height };
} }
return splitNodeSize; return splitNodeSize;
} }

1
src/utils/videoFrameNode.ts

@ -10,7 +10,6 @@ type AddNode = (
) => string; ) => string;
function getNodeWidth(node: WorkflowNode): number { function getNodeWidth(node: WorkflowNode): number {
if (typeof node.width === "number") return node.width;
if (typeof node.style?.width === "number") return node.style.width; if (typeof node.style?.width === "number") return node.style.width;
return 300; return 300;
} }

Loading…
Cancel
Save