From 32cffa6a839b73aac9d3e2e1cf684983fdfdda34 Mon Sep 17 00:00:00 2001 From: Rizumu Ayaka Date: Fri, 5 Sep 2025 02:48:48 +0800 Subject: [PATCH] refactor: v3 ui slots connection dots (#5316) * refactor: v3 ui slots connection dots * fix: use the new useTemplateRef * fix: slot dark-theme border and hover styles --------- Co-authored-by: Christian Byrne --- .../layout/slots/useDomSlotRegistration.ts | 19 ++++---- .../vueNodes/components/InputSlot.vue | 47 ++++++++++++------- .../vueNodes/components/LGraphNode.vue | 8 ++-- .../vueNodes/components/MultiSlotPoint.vue | 12 ----- .../vueNodes/components/NodeSlots.vue | 4 +- .../vueNodes/components/OutputSlot.vue | 47 ++++++++++++------- .../vueNodes/components/SlotConnectionDot.vue | 40 ++++++++++++++++ src/utils/tailwindUtil.ts | 2 + 8 files changed, 118 insertions(+), 61 deletions(-) delete mode 100644 src/renderer/extensions/vueNodes/components/MultiSlotPoint.vue create mode 100644 src/renderer/extensions/vueNodes/components/SlotConnectionDot.vue diff --git a/src/renderer/core/layout/slots/useDomSlotRegistration.ts b/src/renderer/core/layout/slots/useDomSlotRegistration.ts index 238dffc3a..4a012bc67 100644 --- a/src/renderer/core/layout/slots/useDomSlotRegistration.ts +++ b/src/renderer/core/layout/slots/useDomSlotRegistration.ts @@ -56,21 +56,23 @@ const cleanupFunctions = new WeakMap< } >() -export function useDomSlotRegistration( - nodeId: string, - slotIndex: number, - isInput: boolean, +interface SlotRegistrationOptions { + nodeId: string + slotIndex: number + isInput: boolean + element: Ref transform?: TransformState -) { +} + +export function useDomSlotRegistration(options: SlotRegistrationOptions) { + const { nodeId, slotIndex, isInput, element: elRef, transform } = options + // Early return if no nodeId if (!nodeId || nodeId === '') { return { - slotElRef: ref(null), remeasure: () => {} } } - - const elRef = ref(null) const slotKey = getSlotKey(nodeId, slotIndex, isInput) // Track if this component is mounted const componentToken = {} @@ -221,7 +223,6 @@ export function useDomSlotRegistration( }) return { - slotElRef: elRef, // Expose for forced remeasure on structural changes remeasure: () => scheduleMeasurement(measureAndCacheOffset) } diff --git a/src/renderer/extensions/vueNodes/components/InputSlot.vue b/src/renderer/extensions/vueNodes/components/InputSlot.vue index 0f33ab44e..848edeeaf 100644 --- a/src/renderer/extensions/vueNodes/components/InputSlot.vue +++ b/src/renderer/extensions/vueNodes/components/InputSlot.vue @@ -2,13 +2,13 @@
⚠️
-
-
-
+ diff --git a/src/renderer/extensions/vueNodes/components/LGraphNode.vue b/src/renderer/extensions/vueNodes/components/LGraphNode.vue index 4ce27f490..12dd72c79 100644 --- a/src/renderer/extensions/vueNodes/components/LGraphNode.vue +++ b/src/renderer/extensions/vueNodes/components/LGraphNode.vue @@ -36,8 +36,8 @@ >
{ }) // Computed classes and conditions for better reusability -const separatorClasses = 'bg-[#e1ded5] dark-theme:bg-[#292A30] h-[1px] mx-4' +const separatorClasses = 'bg-[#e1ded5] dark-theme:bg-[#292A30] h-[1px] mx-0' // Common condition computations to avoid repetition const shouldShowWidgets = computed( diff --git a/src/renderer/extensions/vueNodes/components/MultiSlotPoint.vue b/src/renderer/extensions/vueNodes/components/MultiSlotPoint.vue deleted file mode 100644 index 3b66bb97c..000000000 --- a/src/renderer/extensions/vueNodes/components/MultiSlotPoint.vue +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/src/renderer/extensions/vueNodes/components/NodeSlots.vue b/src/renderer/extensions/vueNodes/components/NodeSlots.vue index 5426537e6..78f9b8036 100644 --- a/src/renderer/extensions/vueNodes/components/NodeSlots.vue +++ b/src/renderer/extensions/vueNodes/components/NodeSlots.vue @@ -4,7 +4,7 @@ ⚠️ Node Slots Error
-
+
-
+
⚠️
-
-
+
diff --git a/src/renderer/extensions/vueNodes/components/SlotConnectionDot.vue b/src/renderer/extensions/vueNodes/components/SlotConnectionDot.vue new file mode 100644 index 000000000..d5b8b1ad8 --- /dev/null +++ b/src/renderer/extensions/vueNodes/components/SlotConnectionDot.vue @@ -0,0 +1,40 @@ + + + diff --git a/src/utils/tailwindUtil.ts b/src/utils/tailwindUtil.ts index bec3707ca..39124c768 100644 --- a/src/utils/tailwindUtil.ts +++ b/src/utils/tailwindUtil.ts @@ -1,6 +1,8 @@ import clsx, { type ClassArray } from 'clsx' import { twMerge } from 'tailwind-merge' +export type { ClassValue, ClassArray, ClassDictionary } from 'clsx' + export function cn(...inputs: ClassArray) { return twMerge(clsx(inputs)) }