Add files via upload

Dependency conflict defensive check.
This commit is contained in:
Temult
2025-04-07 14:01:05 -04:00
committed by GitHub
parent eedbd784f3
commit df6e97f389
+44 -3
View File
@@ -728,14 +728,55 @@ app.registerExtension({
});
};
// Patch onRemoved to clean up the widget
// Patch onRemoved to clean up the widget
const originalOnRemoved = nodeType.prototype.onRemoved;
nodeType.prototype.onRemoved = function () {
const graphWidget = this.widgets?.find((w) => w.name === graphWidgetName);
// --- Defensive Check ---
// Check if 'this' is valid and has 'widgets' before proceeding.
if (!this || !this.widgets) {
// Log a warning to the console so you know this happened.
console.warn(
"[SigmaGraphWidget] onRemoved called with invalid context or missing widgets. Skipping custom cleanup.",
this // Log the problematic 'this' value if needed
);
// Attempt to call the original onRemoved if it exists,
// passing whatever 'this' context we received (even if undefined).
if (originalOnRemoved) {
try {
// Use Reflect.apply for safer calling if 'this' might be totally invalid
Reflect.apply(originalOnRemoved, this, []);
} catch (e) {
console.error(
"[SigmaGraphWidget] Error calling original onRemoved:",
e
);
}
}
return; // Exit the function early to prevent the TypeError
}
// --- End Defensive Check ---
// If the check passed, 'this' and 'this.widgets' should be valid
const graphWidget = this.widgets.find((w) => w.name === graphWidgetName); // Can remove ?. now
if (graphWidget && graphWidget.onRemoved) {
// Ensure the widget's own onRemoved exists and call it
graphWidget.onRemoved();
} else if (graphWidget) {
// Fallback cleanup if widget.onRemoved wasn't assigned correctly
console.warn(
"[SigmaGraphWidget] graphWidget found, but widget.onRemoved is missing. Performing fallback cleanup."
);
if (graphWidget.resizeObserver) {
graphWidget.resizeObserver.disconnect();
graphWidget.resizeObserver = null;
}
// Add any other manual cleanup needed here if widget.onRemoved fails
}
// Call the original function with the (now assumed valid) 'this' context
if (originalOnRemoved) {
originalOnRemoved.call(this);
}
if (originalOnRemoved) originalOnRemoved.call(this);
};
},