全部用静态导入
This commit is contained in:
@@ -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 = [];
|
||||
})
|
||||
|
||||
// 暴露轻量级接口给父组件
|
||||
|
||||
Reference in New Issue
Block a user