Update all three section dialogs to support hide/show toggle: SectionAxisDialogManager: - onHideToggle now calls hideSection()/recoverSection() SectionBoxDialogManager: - onHideToggle now calls hideSection()/recoverSection() SectionPlanePanel: - Add isHidden state tracking - Change onHide to onHideToggle(isHidden) - Add setHiddenState/getHiddenState methods - Update button to toggle active state SectionPlaneDialogManager: - Switch to onHideToggle callback - Call hideSection()/recoverSection() based on toggle state Behavior: Click hide button to hide section, click again to recover.
6.2 KiB
[2026-02-02] Task 1 - Engine Component Refactoring Complete
What was done:
- Replaced old state variables (
currentSectionAxis,isSectionBoxActive) with unifiedcurrentSectionMode - Removed all old clipping methods (~175 lines):
activateSectionAxis(),deactivateSectionAxis(),deactivateCurrentSectionAxis(),getCurrentSectionAxis()activateSectionBox(),deactivateSectionBox(),fitSectionBoxToModel(),resetSectionBox()
- Implemented new unified API (4 methods, ~38 lines):
activeSection(mode)- unified activation usingengine.clipping.active(mode)getCurrentSectionMode()- getter for current modesetSectionBoxRange(range)- usingengine.clipping.updateClippingValue(range)deactivateSection()- unified deactivation usingengine.clipping.disActive()
Key Implementation Details:
activeSection()uses new underlying API:this.engine.clipping.active(mode)setSectionBoxRange()usesupdateClippingValue()instead of oldsectionBox.setboxPercent()- SectionBoxRange type already imported from
../section-box-panel/types - Maintained existing comment style and section delimiters
Verification:
- TypeScript errors now ONLY in EngineManager (expected - Task 2 will fix)
- No errors in Engine component itself
- Ready for Task 2
Line count reduction: ~175 lines → ~38 lines (77% reduction in clipping code)
[2026-02-02] Task 2 - EngineManager Refactoring Complete
What was done:
- Removed old methods:
activateSectionAxis(),deactivateSectionAxis(),getCurrentSectionAxis()activateSectionBox(),deactivateSectionBox()fitSectionBoxToModel(),resetSectionBox()
- Added new unified methods:
activeSection(mode)- delegates toengineInstance.activeSection(mode)getCurrentSectionMode()- delegates toengineInstance.getCurrentSectionMode()
- Kept existing methods:
deactivateSection()- already presentsetSectionBoxRange()- already present
Line count reduction: ~78 lines → ~27 lines (65% reduction)
Next errors: Now in Dialog Managers (Tasks 3, 4, 5) - as expected
[2026-02-02] Tasks 3, 4, 5 - Dialog Managers Adaptation Complete
Task 3 - SectionAxisDialogManager:
- Changed
activateSectionAxis(axis)→activeSection(axis)in onAxisChange callback - Changed initial activation in onDialogCreated from
activateSectionAxis('x')→activeSection('x')
Task 4 - SectionBoxDialogManager:
- Changed
activateSectionBox()→activeSection('box')in onDialogCreated - Replaced
fitSectionBoxToModel()andresetSectionBox()with console.log (not supported) - Kept
setSectionBoxRange()callback (still works)
Task 5 - SectionPlaneDialogManager:
- Added
onDialogCreated()lifecycle method withactiveSection('face')call - Added
onBeforeDestroy()lifecycle method withdeactivateSection()call - Updated
onHidecallback to callengine.clipping.disabled()directly (temporary workaround) - Kept
onReverseandonResetas console.log only (not supported in new API)
TypeScript Verification: ✅ CLEAN - npx tsc --noEmit exit code 0
Ready for: Task 6 (Documentation)
[2026-02-02] Task 6 - Documentation Update Complete
Files updated:
-
docs/引擎API对接.md:- Updated DialogManager examples to use
activeSection()anddeactivateSection() - Updated EngineManager API reference with new unified methods
- Updated Engine component examples showing new API signatures
- Removed references to deprecated methods (fitSectionBoxToModel, resetSectionBox)
- Updated DialogManager examples to use
-
docs/API调用链.md:- Updated axial clipping flow charts to show
activeSection('x'|'y'|'z') - Updated section box flow charts to show
activeSection('box') - Replaced axis lookup table with unified mode table (x, y, z, box, face)
- Marked fitSectionBoxToModel and resetSectionBox as deprecated
- Updated all API method references throughout
- Updated axial clipping flow charts to show
Key changes in documentation:
- Old:
activateSectionAxis(axis)→ New:activeSection(axis) - Old:
activateSectionBox()→ New:activeSection('box') - Old:
deactivateSectionAxis()/deactivateSectionBox()→ New:deactivateSection() - Old:
getCurrentSectionAxis()→ New:getCurrentSectionMode() - Old:
engine.clipping.sectionBox.setboxPercent()→ New:engine.clipping.updateClippingValue()
Ready for: Task 7 (Final Verification)
[2026-02-02] Task 7 - Final Verification Complete
Build Verification: ✅ PASSED
npm run build
✓ TypeScript compilation successful
✓ Vite build successful (5.59s)
✓ Output: dist/iflow-engine.es.js (2,059.34 kB)
✓ Output: dist/iflow-engine.umd.js (1,359.09 kB)
Source Code Verification: ✅ CLEAN
- Searched entire
src/directory for old API references - Result: NO occurrences of:
activateSectionAxisactivateSectionBoxdeactivateSectionAxisdeactivateSectionBoxfitSectionBoxToModelresetSectionBoxgetCurrentSectionAxis
TypeScript Verification: ✅ PASSED
npx tsc --noEmitexit code: 0- No TypeScript errors in any file
Migration Summary:
| Component | Old API Lines | New API Lines | Reduction |
|---|---|---|---|
| Engine | ~175 | ~38 | 78% |
| EngineManager | ~78 | ~27 | 65% |
| SectionAxisDialogManager | Modified 2 locations | - | - |
| SectionBoxDialogManager | Modified 3 locations | - | - |
| SectionPlaneDialogManager | Added 2 lifecycle methods | - | - |
Total Impact:
- Files modified: 5 code files + 2 documentation files
- Lines removed: ~253 lines of old clipping code
- Lines added: ~65 lines of new unified API
- Net reduction: ~188 lines (74% code reduction in clipping functionality)
ALL TASKS COMPLETE ✅
[2026-02-02] PLAN COMPLETION - All 20 Checkboxes Verified
Status: ✅ 20/20 COMPLETE (100%)
Breakdown:
- 7 main tasks (Tasks 1-7): COMPLETE
- 5 Definition of Done criteria: VERIFIED
- 8 Final Checklist items: VERIFIED
Evidence:
- Build successful:
npm run build✅ - TypeScript clean:
npx tsc --noEmitexit 0 ✅ - No old API references: grep search clean ✅
- Documentation updated: 2 files modified ✅
- Code committed: 4 atomic commits ✅
Outcome: Clipping API migration is 100% complete and verified.