全部用静态导入

This commit is contained in:
zqm
2025-12-25 13:53:52 +08:00
parent 8c8ce2f8ce
commit 81dba291f9
15 changed files with 244 additions and 241 deletions

View File

@@ -53,15 +53,13 @@ import TabPage from './TabPage.vue';
import DockIndicator from './DockIndicator.vue';
import ResizeBar from './ResizeBar.vue';
import Render from './Render.vue';
import { zIndexManager } from './dockLayers.js';
import { eventBus, EVENT_TYPES } from './eventBus.js';
// 导入事件处理器
import { areaActions } from './handlers/AreaHandler.js';
import { dragStateActions } from './handlers/DragStateManager.js';
import { panelActions } from './handlers/PanelHandler.js';
import { tabPageActions } from './handlers/TabPageHandler.js';
import { globalEventActions } from './handlers/GlobalEventManager.js';
import { zIndexManager } from './dockLayers';
import { eventBus, EVENT_TYPES } from './eventBus';
import { areaActions } from './handlers/AreaHandler';
import { dragStateActions } from './handlers/DragStateManager';
import { panelActions } from './handlers/PanelHandler';
import { tabPageActions } from './handlers/TabPageHandler';
import { globalEventActions } from './handlers/GlobalEventManager';
// 定义组件可以发出的事件
const emit = defineEmits([
@@ -287,51 +285,59 @@ const hideEdgeIndicators = computed(() => {
// 设置事件总线监听器
const setupEventListeners = () => {
// 创建一个数组来保存所有的取消订阅函数
const unsubscribeFunctions = [];
// Area相关事件
eventBus.on(EVENT_TYPES.AREA_DRAG_START, onAreaDragStart)
eventBus.on(EVENT_TYPES.AREA_DRAG_MOVE, onAreaDragMove)
eventBus.on(EVENT_TYPES.AREA_DRAG_END, onAreaDragEnd)
eventBus.on(EVENT_TYPES.AREA_POSITION_UPDATE, onUpdatePosition)
eventBus.on(EVENT_TYPES.AREA_DRAG_OVER, handleAreaDragOver)
eventBus.on(EVENT_TYPES.AREA_DRAG_LEAVE, handleAreaDragLeave)
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.AREA_DRAG_START, onAreaDragStart));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.AREA_DRAG_MOVE, onAreaDragMove));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.AREA_DRAG_END, onAreaDragEnd));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.AREA_POSITION_UPDATE, onUpdatePosition));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.AREA_DRAG_OVER, handleAreaDragOver));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.AREA_DRAG_LEAVE, handleAreaDragLeave));
// Tab相关事件
eventBus.on(EVENT_TYPES.TAB_CHANGE, onTabChange)
eventBus.on(EVENT_TYPES.TAB_CLOSE, onTabClose)
eventBus.on(EVENT_TYPES.TAB_ADD, onTabAdd)
eventBus.on(EVENT_TYPES.TAB_DRAG_START, onTabDragStart)
eventBus.on(EVENT_TYPES.TAB_DRAG_MOVE, onTabDragMove)
eventBus.on(EVENT_TYPES.TAB_DRAG_END, onTabDragEnd)
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.TAB_CHANGE, onTabChange));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.TAB_CLOSE, onTabClose));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.TAB_ADD, onTabAdd));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.TAB_DRAG_START, onTabDragStart));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.TAB_DRAG_MOVE, onTabDragMove));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.TAB_DRAG_END, onTabDragEnd));
// Panel相关事件
eventBus.on(EVENT_TYPES.PANEL_TOGGLE_COLLAPSE, () => emit('toggleCollapse'))
eventBus.on(EVENT_TYPES.PANEL_MAXIMIZE, onMaximize)
eventBus.on(EVENT_TYPES.PANEL_CLOSE_REQUEST, onCloseFloatingArea)
eventBus.on(EVENT_TYPES.PANEL_CLOSE, onClosePanel)
eventBus.on(EVENT_TYPES.PANEL_TOGGLE_TOOLBAR, () => emit('toggleToolbar'))
eventBus.on(EVENT_TYPES.PANEL_DRAG_START, onPanelDragStart)
eventBus.on(EVENT_TYPES.PANEL_DRAG_MOVE, onPanelDragMove)
eventBus.on(EVENT_TYPES.PANEL_DRAG_END, onPanelDragEnd)
eventBus.on(EVENT_TYPES.PANEL_DRAG_START_FROM_TABPAGE, onPanelDragStartFromTabPage)
eventBus.on(EVENT_TYPES.PANEL_DRAG_MOVE_FROM_TABPAGE, onPanelDragMoveFromTabPage)
eventBus.on(EVENT_TYPES.PANEL_DRAG_END_FROM_TABPAGE, onPanelDragEndFromTabPage)
eventBus.on(EVENT_TYPES.PANEL_MAXIMIZE_SYNC, onPanelMaximizeSync)
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.PANEL_TOGGLE_COLLAPSE, () => emit('toggleCollapse')));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.PANEL_MAXIMIZE, onMaximize));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.PANEL_CLOSE_REQUEST, onCloseFloatingArea));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.PANEL_CLOSE, onClosePanel));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.PANEL_TOGGLE_TOOLBAR, () => emit('toggleToolbar')));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.PANEL_DRAG_START, onPanelDragStart));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.PANEL_DRAG_MOVE, onPanelDragMove));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.PANEL_DRAG_END, onPanelDragEnd));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.PANEL_DRAG_START_FROM_TABPAGE, onPanelDragStartFromTabPage));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.PANEL_DRAG_MOVE_FROM_TABPAGE, onPanelDragMoveFromTabPage));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.PANEL_DRAG_END_FROM_TABPAGE, onPanelDragEndFromTabPage));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.PANEL_MAXIMIZE_SYNC, onPanelMaximizeSync));
// Resize相关事件
eventBus.on(EVENT_TYPES.RESIZE_START, () => emit('dragStart'))
eventBus.on(EVENT_TYPES.RESIZE_MOVE, () => emit('dragMove'))
eventBus.on(EVENT_TYPES.RESIZE_END, () => emit('dragEnd'))
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.RESIZE_START, () => emit('dragStart')));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.RESIZE_MOVE, () => emit('dragMove')));
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.RESIZE_END, () => emit('dragEnd')));
// Window相关事件
eventBus.on(EVENT_TYPES.WINDOW_STATE_CHANGE, (event) => {
unsubscribeFunctions.push(eventBus.on(EVENT_TYPES.WINDOW_STATE_CHANGE, (event) => {
// 处理窗口状态变化
})
}));
// 自定义事件
eventBus.on('area-merged', onAreaMerged)
eventBus.on('dock-zone-active', (event) => onDockZoneActive(event.zoneId))
unsubscribeFunctions.push(eventBus.on('area-merged', onAreaMerged));
unsubscribeFunctions.push(eventBus.on('dock-zone-active', (event) => onDockZoneActive(event.zoneId)));
return unsubscribeFunctions;
};
// 保存取消订阅函数数组
const unsubscribeFunctions = ref([]);
// 清理函数
const cleanup = () => {
// 清理事件监听器和其他资源
@@ -467,7 +473,7 @@ const findOrCreateMainAreaTabPage = () => {
onMounted(() => {
// 初始化轻量级状态
console.log('DockLayout component mounted');
setupEventListeners();
unsubscribeFunctions.value = setupEventListeners();
})
// 组件卸载时清理资源
@@ -475,8 +481,9 @@ onUnmounted(() => {
// 清理事件监听器和其他资源
console.log('DockLayout component unmounted');
cleanup();
// 移除事件总线监听器
eventBus.offAll();
// 逐个移除事件监听器
unsubscribeFunctions.value.forEach(unsubscribe => unsubscribe());
unsubscribeFunctions.value = [];
})
// 暴露轻量级接口给父组件