diff --git a/AutoRobot/Windows/Robot/Web/src/DockLayout/Area.vue b/AutoRobot/Windows/Robot/Web/src/DockLayout/Area.vue
index 2bc2459..b042fbe 100644
--- a/AutoRobot/Windows/Robot/Web/src/DockLayout/Area.vue
+++ b/AutoRobot/Windows/Robot/Web/src/DockLayout/Area.vue
@@ -132,7 +132,8 @@
diff --git a/AutoRobot/Windows/Robot/Web/src/DockLayout/DockLayout.vue b/AutoRobot/Windows/Robot/Web/src/DockLayout/DockLayout.vue
index f505125..3bb3453 100644
--- a/AutoRobot/Windows/Robot/Web/src/DockLayout/DockLayout.vue
+++ b/AutoRobot/Windows/Robot/Web/src/DockLayout/DockLayout.vue
@@ -10,32 +10,29 @@
style="z-index: 9999;"
/>
-
-
-
- handleMainAreaResizeBar(resizeBar.id, size)"
- @resize-start="() => handleMainAreaResizeBarStart(resizeBar.id)"
- @resize-end="() => handleMainAreaResizeBarEnd(resizeBar.id)"
- :style="getMainAreaResizeBarStyle(resizeBar)"
- />
-
-
+
+
+
+
+
+ handleMainAreaResizeBar(resizeBar.id, size)"
+ @resize-start="() => handleMainAreaResizeBarStart(resizeBar.id)"
+ @resize-end="() => handleMainAreaResizeBarEnd(resizeBar.id)"
+ :style="getMainAreaResizeBarStyle(resizeBar)"
+ />
+
onCloseFloatingArea(area.id)"
- @update:position="(position) => onUpdatePosition(area.id, position)"
- @panelMaximizeSync="onPanelMaximizeSync"
- @areaDragStart="(event) => onAreaDragStart(area.id, event)"
- @areaDragMove="(event) => onAreaDragMove(area.id, event)"
- @areaDragEnd="(event) => onAreaDragEnd(area.id, event)"
- @tab-change="onTabChange"
- @tab-close="onTabClose"
- @tab-add="onTabAdd"
- @tabDragStart="(event) => onTabDragStart(area.id, event)"
- @tabDragMove="(event) => onTabDragMove(area.id, event)"
- @tabDragEnd="onTabDragEnd"
- @toggleCollapse="(panelId) => $emit('toggleCollapse', panelId)"
- @maximize="(panelId) => onMaximize(panelId)"
- @closePanel="(panelId) => onClosePanel(area.id, panelId)"
- @toggleToolbar="(panelId) => $emit('toggleToolbar', panelId)"
- @dragStart="(event) => onPanelDragStartFromTabPage(area.id, event)"
- @dragMove="(event) => onPanelDragMoveFromTabPage(area.id, event)"
- @dragEnd="onPanelDragEndFromTabPage"
- @dragover="handleAreaDragOver"
- @dragleave="handleAreaDragLeave"
/>
@@ -78,11 +54,13 @@ 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';
// 定义组件可以发出的事件
@@ -98,6 +76,14 @@ const emit = defineEmits([
// 主区域状态
const windowState = ref('最大化')
+// 主区域配置
+const mainAreaConfig = ref({
+ id: 'MainArea',
+ title: '主区域',
+ windowState: windowState.value,
+ showTitleBar: false
+})
+
// 浮动区域列表 - 每个area包含panels数组
const floatingAreas = ref([])
@@ -131,36 +117,36 @@ const onPanelDragEnd = () => {
dragStateActions.onPanelDragEnd();
};
-const onPanelDragStartFromTabPage = (areaId, event) => {
- dragStateActions.onPanelDragStartFromTabPage(areaId, event);
+const onPanelDragStartFromTabPage = (event) => {
+ dragStateActions.onPanelDragStartFromTabPage(event.areaId, event);
};
-const onPanelDragMoveFromTabPage = (areaId, event) => {
- dragStateActions.onPanelDragMoveFromTabPage(areaId, event);
+const onPanelDragMoveFromTabPage = (event) => {
+ dragStateActions.onPanelDragMoveFromTabPage(event.areaId, event);
};
const onPanelDragEndFromTabPage = () => {
dragStateActions.onPanelDragEndFromTabPage();
};
-const onAreaDragStart = (areaId, event) => {
- dragStateActions.onAreaDragStart(areaId, event);
+const onAreaDragStart = (event) => {
+ dragStateActions.onAreaDragStart(event.areaId, event);
};
-const onAreaDragMove = (areaId, event) => {
- dragStateActions.onAreaDragMove(areaId, event);
+const onAreaDragMove = (event) => {
+ dragStateActions.onAreaDragMove(event.areaId, event);
};
-const onAreaDragEnd = (areaId, event) => {
- dragStateActions.onAreaDragEnd(areaId, event);
+const onAreaDragEnd = (event) => {
+ dragStateActions.onAreaDragEnd(event.areaId, event);
};
-const onTabDragStart = (areaId, event) => {
- dragStateActions.onTabDragStart(areaId, event);
+const onTabDragStart = (event) => {
+ dragStateActions.onTabDragStart(event.areaId, event);
};
-const onTabDragMove = (areaId, event) => {
- dragStateActions.onTabDragMove(areaId, event);
+const onTabDragMove = (event) => {
+ dragStateActions.onTabDragMove(event.areaId, event);
};
const onTabDragEnd = () => {
@@ -168,7 +154,8 @@ const onTabDragEnd = () => {
};
// Area相关事件处理
-const onCloseFloatingArea = (id) => {
+const onCloseFloatingArea = (event) => {
+ const id = event.areaId;
areaActions.closeFloatingArea(id);
const index = floatingAreas.value.findIndex(a => a.id === id);
if (index !== -1) {
@@ -176,7 +163,9 @@ const onCloseFloatingArea = (id) => {
}
};
-const onUpdatePosition = (id, position) => {
+const onUpdatePosition = (event) => {
+ const id = event.areaId;
+ const position = event;
const area = floatingAreas.value.find(a => a.id === id);
if (area) {
area.x = position.left;
@@ -184,11 +173,14 @@ const onUpdatePosition = (id, position) => {
}
};
-const onMaximize = (panelId) => {
+const onMaximize = (event) => {
+ const panelId = event.panelId;
areaActions.toggleMaximize(panelId);
};
-const onClosePanel = (areaId, panelId) => {
+const onClosePanel = (event) => {
+ const areaId = event.areaId;
+ const panelId = event.panelId;
areaActions.closePanel(areaId, panelId);
const area = floatingAreas.value.find(a => a.id === areaId);
if (area && area.children) {
@@ -228,8 +220,8 @@ const handleAreaDragOver = (event) => {
globalEventActions.handleDragOver('floating-area', event);
};
-const handleAreaDragLeave = () => {
- globalEventActions.handleDragLeave('floating-area');
+const handleAreaDragLeave = (event) => {
+ globalEventActions.handleDragLeave('floating-area', event);
};
// 其他事件处理方法
@@ -238,23 +230,37 @@ const onDockZoneActive = (zone) => {
};
const onPanelMaximizeSync = ({ areaId, maximized }) => {
- panelActions.syncMaximizeState(areaId, maximized);
+ // 使用areaActions.updateState来更新区域的最大化状态
+ areaActions.updateState(areaId, { maximized });
};
-const onAreaMerged = () => {
- areaActions.handleAreaMerged();
+const onAreaMerged = (event) => {
+ areaActions.handleAreaMerged(event.areaId);
};
-const onTabChange = (data) => {
- panelActions.handleTabChange(data);
+// 标签页切换事件处理
+const onTabChange = async (data) => {
+ try {
+ await tabPageActions.switch(data.tabPageId, data.areaId, data.fromTabPageId);
+ } catch (error) {
+ console.error('Failed to handle tab change:', error);
+ }
};
-const onTabClose = (data) => {
- panelActions.handleTabClose(data);
+const onTabClose = async (data) => {
+ try {
+ await tabPageActions.requestClose(data.tabPageId, data.areaId);
+ } catch (error) {
+ console.error('Failed to handle tab close:', error);
+ }
};
-const onTabAdd = (data) => {
- panelActions.handleTabAdd(data);
+const onTabAdd = async (data) => {
+ try {
+ await tabPageActions.create(data.areaId, data.config);
+ } catch (error) {
+ console.error('Failed to handle tab add:', error);
+ }
};
// ResizeBar相关处理方法
@@ -279,9 +285,51 @@ const hideEdgeIndicators = computed(() => {
return !hasAreasInMainContent.value;
});
-// 简化的事件监听器设置
+// 设置事件总线监听器
const setupEventListeners = () => {
- // 可以在这里添加必要的事件监听器
+ // 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)
+
+ // 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)
+
+ // 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)
+
+ // 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'))
+
+ // Window相关事件
+ eventBus.on(EVENT_TYPES.WINDOW_STATE_CHANGE, (event) => {
+ // 处理窗口状态变化
+ })
+
+ // 自定义事件
+ eventBus.on('area-merged', onAreaMerged)
+ eventBus.on('dock-zone-active', (event) => onDockZoneActive(event.zoneId))
};
// 清理函数
@@ -419,6 +467,7 @@ const findOrCreateMainAreaTabPage = () => {
onMounted(() => {
// 初始化轻量级状态
console.log('DockLayout component mounted');
+ setupEventListeners();
})
// 组件卸载时清理资源
@@ -426,6 +475,8 @@ onUnmounted(() => {
// 清理事件监听器和其他资源
console.log('DockLayout component unmounted');
cleanup();
+ // 移除事件总线监听器
+ eventBus.offAll();
})
// 暴露轻量级接口给父组件
diff --git a/AutoRobot/Windows/Robot/Web/src/DockLayout/Render.vue b/AutoRobot/Windows/Robot/Web/src/DockLayout/Render.vue
index d754cf0..46c74ce 100644
--- a/AutoRobot/Windows/Robot/Web/src/DockLayout/Render.vue
+++ b/AutoRobot/Windows/Robot/Web/src/DockLayout/Render.vue
@@ -24,6 +24,7 @@ import { computed } from 'vue'
import Area from './Area.vue'
import TabPage from './TabPage.vue'
import Panel from './Panel.vue'
+import { eventBus, EVENT_TYPES } from './eventBus.js'
// 定义组件属性
const props = defineProps({
@@ -45,19 +46,7 @@ const props = defineProps({
}
})
-// 定义事件
-const emit = defineEmits([
- // Area事件
- 'areaDragStart', 'areaDragMove', 'areaDragEnd', 'area-merged',
- 'toggleCollapse', 'maximize', 'close', 'toggleToolbar',
- 'dragStart', 'dragMove', 'dragEnd',
- // TabPage事件
- 'tabChange', 'tabClose', 'tabAdd', 'tabDragStart', 'tabDragMove', 'tabDragEnd',
- // Panel事件
- 'panelToggleCollapse', 'panelMaximize', 'panelClose', 'panelToggleToolbar',
- // 通用的update事件
- 'update:windowState', 'update:position'
-])
+// 不再需要定义emit,因为事件将通过事件总线发送
// 根据type计算要渲染的组件
const componentType = computed(() => {
@@ -124,43 +113,59 @@ const componentListeners = computed(() => {
// Area组件的事件
allListeners['areaDragStart'] = (event) => {
// if (props.debug) console.log(`[Render-Area ${props.config.id}] areaDragStart:`, event)
- emit('areaDragStart', event)
+ eventBus.emit(EVENT_TYPES.AREA_DRAG_START, { ...event, areaId: props.config.id })
}
allListeners['areaDragMove'] = (event) => {
// if (props.debug) console.log(`[Render-Area ${props.config.id}] areaDragMove:`, event)
- emit('areaDragMove', event)
+ eventBus.emit(EVENT_TYPES.AREA_DRAG_MOVE, { ...event, areaId: props.config.id })
}
allListeners['areaDragEnd'] = (event) => {
// if (props.debug) console.log(`[Render-Area ${props.config.id}] areaDragEnd:`, event)
- emit('areaDragEnd', event)
+ eventBus.emit(EVENT_TYPES.AREA_DRAG_END, { ...event, areaId: props.config.id })
}
allListeners['area-merged'] = (event) => {
// if (props.debug) console.log(`[Render-Area ${props.config.id}] area-merged:`, event)
- emit('area-merged', event)
+ eventBus.emit('area-merged', { ...event, areaId: props.config.id })
}
allListeners['toggleCollapse'] = (event) => {
// if (props.debug) console.log(`[Render-Area ${props.config.id}] toggleCollapse:`, event)
- emit('toggleCollapse', event)
+ eventBus.emit(EVENT_TYPES.PANEL_TOGGLE_COLLAPSE, { ...event, areaId: props.config.id })
}
allListeners['maximize'] = (event) => {
// if (props.debug) console.log(`[Render-Area ${props.config.id}] maximize:`, event)
- emit('maximize', event)
+ eventBus.emit(EVENT_TYPES.PANEL_MAXIMIZE, { ...event, areaId: props.config.id })
}
allListeners['close'] = (event) => {
// if (props.debug) console.log(`[Render-Area ${props.config.id}] close:`, event)
- emit('close', event)
+ eventBus.emit(EVENT_TYPES.PANEL_CLOSE_REQUEST, { ...event, areaId: props.config.id })
}
allListeners['toggleToolbar'] = (event) => {
// if (props.debug) console.log(`[Render-Area ${props.config.id}] toggleToolbar:`, event)
- emit('toggleToolbar', event)
+ eventBus.emit(EVENT_TYPES.PANEL_TOGGLE_TOOLBAR, { ...event, areaId: props.config.id })
}
allListeners['update:windowState'] = (event) => {
// if (props.debug) console.log(`[Render-Area ${props.config.id}] update:windowState:`, event)
- emit('update:windowState', event)
+ eventBus.emit(EVENT_TYPES.WINDOW_STATE_CHANGE, event)
}
allListeners['update:position'] = (event) => {
// if (props.debug) console.log(`[Render-Area ${props.config.id}] update:position:`, event)
- emit('update:position', event)
+ eventBus.emit(EVENT_TYPES.AREA_POSITION_UPDATE, event)
+ }
+ allListeners['dragover'] = (event) => {
+ // if (props.debug) console.log(`[Render-Area ${props.config.id}] dragover:`, event)
+ eventBus.emit(EVENT_TYPES.AREA_DRAG_OVER, { ...event, areaId: props.config.id })
+ }
+ allListeners['dragleave'] = (event) => {
+ // if (props.debug) console.log(`[Render-Area ${props.config.id}] dragleave:`, event)
+ eventBus.emit(EVENT_TYPES.AREA_DRAG_LEAVE, { ...event, areaId: props.config.id })
+ }
+ allListeners['panelMaximizeSync'] = (event) => {
+ // if (props.debug) console.log(`[Render-Area ${props.config.id}] panelMaximizeSync:`, event)
+ eventBus.emit(EVENT_TYPES.PANEL_MAXIMIZE_SYNC, { ...event, areaId: props.config.id })
+ }
+ allListeners['closePanel'] = (event) => {
+ // if (props.debug) console.log(`[Render-Area ${props.config.id}] closePanel:`, event)
+ eventBus.emit(EVENT_TYPES.PANEL_CLOSE, { ...event, areaId: props.config.id })
}
}
@@ -168,55 +173,55 @@ const componentListeners = computed(() => {
// TabPage组件的事件
allListeners['tabChange'] = (event) => {
// if (props.debug) console.log(`[Render-TabPage ${props.config.id}] tabChange:`, event)
- emit('tabChange', event)
+ eventBus.emit(EVENT_TYPES.TAB_CHANGE, { ...event, areaId: props.config.id })
}
allListeners['tabClose'] = (event) => {
// if (props.debug) console.log(`[Render-TabPage ${props.config.id}] tabClose:`, event)
- emit('tabClose', event)
+ eventBus.emit(EVENT_TYPES.TAB_CLOSE, { ...event, areaId: props.config.id })
}
allListeners['tabAdd'] = (event) => {
// if (props.debug) console.log(`[Render-TabPage ${props.config.id}] tabAdd:`, event)
- emit('tabAdd', event)
+ eventBus.emit(EVENT_TYPES.TAB_ADD, { ...event, areaId: props.config.id })
}
allListeners['tabDragStart'] = (event) => {
// if (props.debug) console.log(`[Render-TabPage ${props.config.id}] tabDragStart:`, event)
- emit('tabDragStart', event)
+ eventBus.emit(EVENT_TYPES.TAB_DRAG_START, { ...event, areaId: props.config.id })
}
allListeners['tabDragMove'] = (event) => {
// if (props.debug) console.log(`[Render-TabPage ${props.config.id}] tabDragMove:`, event)
- emit('tabDragMove', event)
+ eventBus.emit(EVENT_TYPES.TAB_DRAG_MOVE, { ...event, areaId: props.config.id })
}
allListeners['tabDragEnd'] = (event) => {
// if (props.debug) console.log(`[Render-TabPage ${props.config.id}] tabDragEnd:`, event)
- emit('tabDragEnd', event)
+ eventBus.emit(EVENT_TYPES.TAB_DRAG_END, { ...event, areaId: props.config.id })
}
allListeners['toggleCollapse'] = (event) => {
// if (props.debug) console.log(`[Render-TabPage ${props.config.id}] toggleCollapse:`, event)
- emit('toggleCollapse', event)
+ eventBus.emit(EVENT_TYPES.PANEL_TOGGLE_COLLAPSE, { ...event, areaId: props.config.id })
}
allListeners['maximize'] = (event) => {
// if (props.debug) console.log(`[Render-TabPage ${props.config.id}] maximize:`, event)
- emit('maximize', event)
+ eventBus.emit(EVENT_TYPES.PANEL_MAXIMIZE, { ...event, areaId: props.config.id })
}
allListeners['close'] = (event) => {
// if (props.debug) console.log(`[Render-TabPage ${props.config.id}] close:`, event)
- emit('close', event)
+ eventBus.emit(EVENT_TYPES.PANEL_CLOSE_REQUEST, { ...event, areaId: props.config.id })
}
allListeners['toggleToolbar'] = (event) => {
// if (props.debug) console.log(`[Render-TabPage ${props.config.id}] toggleToolbar:`, event)
- emit('toggleToolbar', event)
+ eventBus.emit(EVENT_TYPES.PANEL_TOGGLE_TOOLBAR, { ...event, areaId: props.config.id })
}
allListeners['dragStart'] = (event) => {
// if (props.debug) console.log(`[Render-TabPage ${props.config.id}] dragStart:`, event)
- emit('dragStart', event)
+ eventBus.emit(EVENT_TYPES.PANEL_DRAG_START_FROM_TABPAGE, { ...event, areaId: props.config.id })
}
allListeners['dragMove'] = (event) => {
// if (props.debug) console.log(`[Render-TabPage ${props.config.id}] dragMove:`, event)
- emit('dragMove', event)
+ eventBus.emit(EVENT_TYPES.PANEL_DRAG_MOVE_FROM_TABPAGE, { ...event, areaId: props.config.id })
}
allListeners['dragEnd'] = (event) => {
// if (props.debug) console.log(`[Render-TabPage ${props.config.id}] dragEnd:`, event)
- emit('dragEnd', event)
+ eventBus.emit(EVENT_TYPES.PANEL_DRAG_END_FROM_TABPAGE, { ...event, areaId: props.config.id })
}
}
@@ -224,31 +229,31 @@ const componentListeners = computed(() => {
// Panel组件的事件
allListeners['toggleCollapse'] = (event) => {
// if (props.debug) console.log(`[Render-Panel ${props.config.id}] toggleCollapse:`, event)
- emit('panelToggleCollapse', event)
+ eventBus.emit(EVENT_TYPES.PANEL_TOGGLE_COLLAPSE, { ...event, areaId: props.config.id })
}
allListeners['maximize'] = (event) => {
// if (props.debug) console.log(`[Render-Panel ${props.config.id}] maximize:`, event)
- emit('panelMaximize', event)
+ eventBus.emit(EVENT_TYPES.PANEL_MAXIMIZE, { ...event, areaId: props.config.id })
}
allListeners['close'] = (event) => {
// if (props.debug) console.log(`[Render-Panel ${props.config.id}] close:`, event)
- emit('panelClose', event)
+ eventBus.emit(EVENT_TYPES.PANEL_CLOSE_REQUEST, { ...event, areaId: props.config.id })
}
allListeners['toggleToolbar'] = (event) => {
// if (props.debug) console.log(`[Render-Panel ${props.config.id}] toggleToolbar:`, event)
- emit('panelToggleToolbar', event)
+ eventBus.emit(EVENT_TYPES.PANEL_TOGGLE_TOOLBAR, { ...event, areaId: props.config.id })
}
allListeners['dragStart'] = (event) => {
// if (props.debug) console.log(`[Render-Panel ${props.config.id}] dragStart:`, event)
- emit('dragStart', event)
+ eventBus.emit(EVENT_TYPES.PANEL_DRAG_START, { ...event, areaId: props.config.id })
}
allListeners['dragMove'] = (event) => {
// if (props.debug) console.log(`[Render-Panel ${props.config.id}] dragMove:`, event)
- emit('dragMove', event)
+ eventBus.emit(EVENT_TYPES.PANEL_DRAG_MOVE, { ...event, areaId: props.config.id })
}
allListeners['dragEnd'] = (event) => {
// if (props.debug) console.log(`[Render-Panel ${props.config.id}] dragEnd:`, event)
- emit('dragEnd', event)
+ eventBus.emit(EVENT_TYPES.PANEL_DRAG_END, { ...event, areaId: props.config.id })
}
}
diff --git a/AutoRobot/Windows/Robot/Web/src/DockLayout/ResizeBar.vue b/AutoRobot/Windows/Robot/Web/src/DockLayout/ResizeBar.vue
index 14e3e21..47397dd 100644
--- a/AutoRobot/Windows/Robot/Web/src/DockLayout/ResizeBar.vue
+++ b/AutoRobot/Windows/Robot/Web/src/DockLayout/ResizeBar.vue
@@ -14,6 +14,7 @@