-
Notifications
You must be signed in to change notification settings - Fork 395
[refactor] refactor load3d #5765
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
🎭 Playwright Test Results⏰ Completed at: 10/31/2025, 02:19:50 PM UTC 📈 Summary
📊 Test Reports by Browser
🎉 Click on the links above to view detailed test results for each browser configuration. |
5b73fbc to
40f4e5d
Compare
…el events (#5821) ## Summary Add generic wheel event capture mechanism for interactive widgets in vueNodes system to prevent event bubbling to canvas. ## Changes - What: Add event handling logic in LGraphNode.vue and GraphCanvas.vue that checks for data-capture-wheel attribute to determine whether wheel events should be forwarded to the canvas - How it works: Components that need to capture wheel events (like Three.js scenes) can add data-capture-wheel="true" attribute to prevent wheel events from bubbling up to the canvas zoom handler prerequirist for #5765 ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5821-Check-if-the-wheel-event-is-from-an-element-that-wants-to-capture-wheel-events-27b6d73d3650812493b5f13849147e6c) by [Unito](https://www.unito.io)
|
Could you fix the merge conflict then rebase with |
40f4e5d to
61da21c
Compare
🎨 Storybook Build Status✅ Build completed successfully! ⏰ Completed at: 10/31/2025, 01:55:54 PM UTC 🔗 Links🎉 Your Storybook is ready for review! |
61da21c to
8ed52a5
Compare
## Summary pass nodeId to widget component, which is a prerequirist for #5765 ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5853-pass-nodeData-to-widget-component-27e6d73d3650811e9e48ceb7c3a00545) by [Unito](https://www.unito.io)
8ed52a5 to
13c8a5b
Compare
…el events (#5821) ## Summary Add generic wheel event capture mechanism for interactive widgets in vueNodes system to prevent event bubbling to canvas. ## Changes - What: Add event handling logic in LGraphNode.vue and GraphCanvas.vue that checks for data-capture-wheel attribute to determine whether wheel events should be forwarded to the canvas - How it works: Components that need to capture wheel events (like Three.js scenes) can add data-capture-wheel="true" attribute to prevent wheel events from bubbling up to the canvas zoom handler prerequirist for #5765 ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5821-Check-if-the-wheel-event-is-from-an-element-that-wants-to-capture-wheel-events-27b6d73d3650812493b5f13849147e6c) by [Unito](https://www.unito.io)
## Summary pass nodeId to widget component, which is a prerequirist for #5765 ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5853-pass-nodeData-to-widget-component-27e6d73d3650811e9e48ceb7c3a00545) by [Unito](https://www.unito.io)
…el events (#5821) ## Summary Add generic wheel event capture mechanism for interactive widgets in vueNodes system to prevent event bubbling to canvas. ## Changes - What: Add event handling logic in LGraphNode.vue and GraphCanvas.vue that checks for data-capture-wheel attribute to determine whether wheel events should be forwarded to the canvas - How it works: Components that need to capture wheel events (like Three.js scenes) can add data-capture-wheel="true" attribute to prevent wheel events from bubbling up to the canvas zoom handler prerequirist for #5765 ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5821-Check-if-the-wheel-event-is-from-an-element-that-wants-to-capture-wheel-events-27b6d73d3650812493b5f13849147e6c) by [Unito](https://www.unito.io)
## Summary pass nodeId to widget component, which is a prerequirist for #5765 ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5853-pass-nodeData-to-widget-component-27e6d73d3650811e9e48ceb7c3a00545) by [Unito](https://www.unito.io)
7bff100 to
8fb9751
Compare
🔧 Auto-fixes AppliedThis PR has been automatically updated to fix linting and formatting issues.
Changes made:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have reviewed 14/42 files, taking a quick break.
| } | ||
| } | ||
|
|
||
| const restoreConfigurationsFromNode = async (node: LGraphNode) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit (non-blocking): all of the logic revolving around serialization, config management, config types, and restoring from configs can likely be moved to its own module.
| if (modelWidget?.value) { | ||
| const modelUrl = getModelUrl(modelWidget.value as string) | ||
| if (modelUrl) { | ||
| loading.value = true | ||
| loadingMessage.value = t('load3d.reloadingModel') | ||
| try { | ||
| await load3d.loadModel(modelUrl) | ||
|
|
||
| if (cameraStateToRestore) { | ||
| await nextTick() | ||
| load3d.setCameraState(cameraStateToRestore) | ||
| } | ||
| } catch (error) { | ||
| console.error('Failed to reload model:', error) | ||
| useToastStore().addAlert(t('toastMessages.failedToLoadModel')) | ||
| } finally { | ||
| loading.value = false | ||
| loadingMessage.value = '' | ||
| } | ||
| } | ||
| } else if (cameraStateToRestore) { | ||
| load3d.setCameraState(cameraStateToRestore) | ||
| } | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit (non-blocking, suggestion for future): We should consider whether this needs to be blocking setup. Currently, we are synchronously restoring the model config, get the url, loading the model, setting the camera state - and everything else must wait on this to happen. I believe we could refactor a bit and have this happen in the background like with useAsyncState
5587e4f to
2577068
Compare
Bundle Size ReportSummary
Category Glance Per-category breakdownApp Entry Points — 3.26 MB (baseline 3.33 MB) • 🟢 -63 kBMain entry bundles and manifests
Status: 2 added / 2 removed Graph Workspace — 724 kB (baseline 724 kB) • 🔴 +41 BGraph editor runtime, canvas, workflow orchestration
Status: 1 added / 1 removed Views & Navigation — 8.18 kB (baseline 8.14 kB) • 🔴 +37 BTop-level views, pages, and routed surfaces
Status: 1 added / 1 removed Panels & Settings — 295 kB (baseline 294 kB) • 🔴 +222 BConfiguration panels, inspectors, and settings screens
Status: 6 added / 6 removed UI Components — 12.3 kB (baseline 12.3 kB) • 🔴 +37 BReusable component library chunks
Status: 1 added / 1 removed Data & Services — 10 kB (baseline 10 kB) • ⚪ 0 BStores, services, APIs, and repositories
Status: 2 added / 2 removed Utilities & Hooks — 1.07 kB (baseline 1.07 kB) • ⚪ 0 BHelpers, composables, and utility bundles
Vendor & Third-Party — 5.32 MB (baseline 5.36 MB) • 🟢 -36.9 kBExternal libraries and shared vendor chunks
Status: 4 added / 4 removed Other — 2.55 MB (baseline 2.55 MB) • ⚪ 0 BBundles that do not match a named category
|
2577068 to
f099c15
Compare
51742aa to
2b79dfb
Compare
2b79dfb to
dc31a71
Compare
Summary
Fully Refactored the Load3D module to improve architecture and maintainability by consolidating functionality into a
centralized composable pattern and simplifying component structure. and support VueNodes system
Changes
management
PreviewManager.ts)
Need BE change Merge 3d animation node comfyanonymous/ComfyUI#10025
2025-09-25.22-33-36.mp4
┆Issue is synchronized with this Notion page by Unito