Claw 项目完整结构提交

This commit is contained in:
zqm
2026-03-16 15:47:55 +08:00
parent ca4970bcbf
commit fb0aeb6ca2
118 changed files with 28648 additions and 281 deletions

View File

@@ -0,0 +1,120 @@
# DockLayout 组件说明
本文档描述在 `src/DockLayout/` 目录下将实现的停靠布局组件的目标、核心概念与数据结构约定,用于指导后续组件开发与联调。
## 目标概述
- 提供 IDE/工作台类的停靠布局能力:支持上/下/左/右/中心五个面板区。
- 每个面板区内部以 TabGroup 组织多个子面板(标签页),支持切换、关闭、最小化、浮动等扩展。
- 建立面板区之间的“大小影响关系”,通过受影响/被影响/待更新三类列表配合队列批处理,保证尺寸与边界在增删、折叠、拖拽后稳定更新。
## 核心概念
- 面板区Area指 Top/Bottom/Left/Right/Center 五个区域之一,是 DockLayout 的一级容器。
- 子面板区SubArea面板区内部承载 TabGroup 的容器,负责布局与滚动等;一个面板区至少包含一个子面板区。
- 子面板Panel以标签页形式存在的具体内容面板如“解决方案”、“属性”、“终端”、“编辑器”等。
- TabGroup负责管理同一面板区内的多个子面板标签包含新增、关闭、激活等行为所有面板区均以 TabGroup 作为统一的内容组织方式。
## 面板区与列表约定
每个面板区都维护三类列表,用于描述与调度尺寸更新:
- 受影响列表influence本面板区会影响到的其他面板区集合。
- 被影响列表influencedBy会影响到本面板区的其他面板区集合。
- 待更新列表pendingUpdates当本区状态变化新增/删除/折叠/展开/拖拽)后,入队待批处理的面板区集合。
这三类列表的存在旨在:
- 明确依赖方向,避免双向更新导致的循环与遗漏。
- 通过队列式批处理,多次局部变更合并为一次稳定的全局尺寸更新过程。
## 数据结构草案
> 以下为建议的数据结构,具体实现时可与现有 store如 `dockPanelStore.js`)对齐。
```ts
// 面板区枚举
export type PanelPosition = 'left' | 'right' | 'top' | 'bottom' | 'center';
// 影响关系项
export interface InfluenceEntry {
position: PanelPosition; // 目标面板区位置
influence: boolean; // 是否产生影响(用于过滤/开关)
}
// 子面板(标签页)
export interface Panel {
id: string;
title: string;
icon?: string;
content?: unknown; // 组件或渲染函数引用
collapsed?: boolean;
}
// 子面板区TabGroup 容器)
export interface SubArea {
id: string;
tabGroupId: string; // 绑定的 TabGroup 标识
panels: Panel[]; // 标签页集合
}
// 面板区(一级容器)
export interface PanelArea {
position: PanelPosition;
subAreas: SubArea[]; // 一个或多个子面板区
activeTabIndex?: number; // 当前激活标签索引
influence: InfluenceEntry[]; // 受影响列表
influencedBy: InfluenceEntry[]; // 被影响列表
pendingUpdates: Set<PanelPosition>; // 待更新列表(去重队列)
// 尺寸与边界(用于绝对定位计算)
x: number;
y: number;
width: number;
height: number;
// 面板内比例(按区维度)
widthRatios?: number[];
heightRatios?: number[];
}
// DockLayout 根状态
export interface PanelMeta {
id: string;
title: string;
icon?: string;
component?: unknown; // 非 DOM 实例的渲染引用或组件名
initialPosition?: PanelPosition;
tags?: string[];
flags?: { collapsed?: boolean; floating?: boolean };
}
export interface DockLayoutState {
areas: Record<PanelPosition, PanelArea>;
allPanels: Record<string, PanelMeta>; // 全局面板列表(非 DOM 实例)
}
```
## 全局面板列表allPanels
- 定义:全局面板列表 `allPanels: Record<string, PanelMeta>`,仅保存子面板元数据(非 DOM 实例)。
- 作用:单一事实来源、去重与索引、跨区域移动一致性、持久化/导入导出、快速检索。
- 基本 API约定`registerPanel(meta)`, `unregisterPanel(panelId)`, `getPanelById(panelId)`, `listPanels()`, `updatePanelMeta(panelId, patch)`
- 与 TabGroup/面板区协作:面板区仅保存面板 `id` 列表;渲染时通过 `id` 访问 `allPanels` 中的 meta尺寸队列更新只处理边界与比例不涉及 DOM 实例。
- 示例字段:`id`, `title`, `icon`, `component`, `initialPosition`, `tags`, `flags`(如 `collapsed`, `floating`)。
## 更新流程(队列式批处理)
- 触发条件:当一个面板区发生增删面板、折叠/展开、拖拽分割条、切换 Tab 等事件。
- 入队:将“变化的面板区”加入其 `pendingUpdates` 以及受影响链上的目标区(或采用全局 Set 以去重)。
- 处理:从队列弹出一个区,先计算该区边界与尺寸,再按“受影响列表”逐个更新目标区的子面板尺寸,过程中将新产生的更新继续入队。
- 终止:队列为空或达到安全迭代上限(防循环保护),保证一次批处理中所有关联区都被稳定更新。
## TabGroup 行为约定
- API`addTab(panel)`, `closeTab(panelId)`, `activateTab(index)`
- 事件:`tabAdded`, `tabClosed`, `tabActivated`(用于通知面板区更新队列)。
- 视觉:标签栏 + 内容区,支持拖拽排序、上下文菜单等扩展能力。
## 目录规划(建议)
- `DockLayoutContainer.vue`:顶层容器(挂载五大面板区、调度队列)。
- `Area.vue`:单个面板区容器(承载一个或多个子面板区)。
- `TabGroup.vue`(或复用现有 `components/TabGroup.js`):标签页组织与交互。
- `influence.ts`:影响关系与队列工具(`enqueue`/`processQueue`)。
- `types.ts`:类型定义(如上草案)。
- `README.md`:本文档。
## 备注
- 后续将对接已有的布局协调器(如 `LayoutCoordinator`)与 store`dockPanelStore.js`)的尺寸计算接口。
- 若需要在本目录中实现独立组件,也可提供适配层以与现有容器组件互通。

View File

@@ -0,0 +1,616 @@
📌 [EventBus] ADD: area.drag.start - function () { [native code] }... | Component ID: area-handler | Total listeners: 1
📌 [EventBus] ADD: area.drag.move - function () { [native code] }... | Component ID: area-handler | Total listeners: 2
📌 [EventBus] ADD: area.drag.end - function () { [native code] }... | Component ID: area-handler | Total listeners: 3
📌 [EventBus] ADD: area.drag.over - function () { [native code] }... | Component ID: area-handler | Total listeners: 4
📌 [EventBus] ADD: area.drag.leave - function () { [native code] }... | Component ID: area-handler | Total listeners: 5
📌 [EventBus] ADD: area.close - function () { [native code] }... | Component ID: area-handler | Total listeners: 6
📌 [EventBus] ADD: area.position.update - function () { [native code] }... | Component ID: area-handler | Total listeners: 7
📌 [EventBus] ADD: area.panel.closed - function () { [native code] }... | Component ID: area-handler | Total listeners: 8
📌 [EventBus] ADD: area.created - function () { [native code] }... | Component ID: area-handler | Total listeners: 9
📌 [EventBus] ADD: area.destroyed - function () { [native code] }... | Component ID: area-handler | Total listeners: 10
📌 [EventBus] ADD: area.updated - function () { [native code] }... | Component ID: area-handler | Total listeners: 11
📌 [EventBus] ADD: area.floating.create - function () { [native code] }... | Component ID: area-handler | Total listeners: 12
📌 [EventBus] ADD: area.floating.close - function () { [native code] }... | Component ID: area-handler | Total listeners: 13
📌 [EventBus] ADD: area.floating.updatePosition - function () { [native code] }... | Component ID: area-handler | Total listeners: 14
📌 [EventBus] ADD: area.floating.zindex.change - function () { [native code] }... | Component ID: area-handler | Total listeners: 15
📌 [EventBus] ADD: area.maximize - function () { [native code] }... | Component ID: area-handler | Total listeners: 16
📌 [EventBus] ADD: area.restore - function () { [native code] }... | Component ID: area-handler | Total listeners: 17
📌 [EventBus] ADD: area.collapse - function () { [native code] }... | Component ID: area-handler | Total listeners: 18
📌 [EventBus] ADD: area.expand - function () { [native code] }... | Component ID: area-handler | Total listeners: 19
📌 [EventBus] ADD: area.toggleToolbar - function () { [native code] }... | Component ID: area-handler | Total listeners: 20
📌 [EventBus] ADD: area.dock.center - function () { [native code] }... | Component ID: area-handler | Total listeners: 21
📌 [EventBus] ADD: area.dock.edge - function () { [native code] }... | Component ID: area-handler | Total listeners: 22
📌 [EventBus] ADD: area.dock.split - function () { [native code] }... | Component ID: area-handler | Total listeners: 23
📌 [EventBus] ADD: area.merge - function () { [native code] }... | Component ID: area-handler | Total listeners: 24
📌 [EventBus] ADD: area.unmerge - function () { [native code] }... | Component ID: area-handler | Total listeners: 25
📌 [EventBus] ADD: area.resize.start - function () { [native code] }... | Component ID: area-handler | Total listeners: 26
📌 [EventBus] ADD: area.resize - function () { [native code] }... | Component ID: area-handler | Total listeners: 27
📌 [EventBus] ADD: area.resize.end - function () { [native code] }... | Component ID: area-handler | Total listeners: 28
📌 [EventBus] ADD: area.ratio.change - function () { [native code] }... | Component ID: area-handler | Total listeners: 29
📌 [EventBus] ADD: area.hide - function () { [native code] }... | Component ID: area-handler | Total listeners: 30
📌 [EventBus] ADD: area.show - function () { [native code] }... | Component ID: area-handler | Total listeners: 31
📌 [EventBus] ADD: area.minimize - function () { [native code] }... | Component ID: area-handler | Total listeners: 32
📌 [EventBus] ADD: area.restoreFromMinimize - function () { [native code] }... | Component ID: area-handler | Total listeners: 33
📌 [EventBus] ADD: area.zindex.management - function () { [native code] }... | Component ID: area-handler | Total listeners: 34
📌 [EventBus] ADD: area.activation - function () { [native code] }... | Component ID: area-handler | Total listeners: 35
📌 [EventBus] ADD: area.deactivation - function () { [native code] }... | Component ID: area-handler | Total listeners: 36
📌 [EventBus] ADD: area.content.change - function () { [native code] }... | Component ID: area-handler | Total listeners: 37
📌 [EventBus] ADD: area.panel.count.change - function () { [native code] }... | Component ID: area-handler | Total listeners: 38
📌 [EventBus] ADD: area.tabpage.merge - function () { [native code] }... | Component ID: area-handler | Total listeners: 39
📌 [EventBus] ADD: area.tabpage.sync - function () { [native code] }... | Component ID: area-handler | Total listeners: 40
📌 [EventBus] ADD: area.panel.sync - function () { [native code] }... | Component ID: area-handler | Total listeners: 41
✅ Area事件处理器初始化完成
📌 [EventBus] ADD: system.init - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 42
📌 [EventBus] ADD: system.ready - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 43
📌 [EventBus] ADD: system.destroy - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 44
📌 [EventBus] ADD: system.error - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 45
📌 [EventBus] ADD: system.performance - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 46
📌 [EventBus] ADD: event.route.start - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 47
📌 [EventBus] ADD: event.route.success - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 48
📌 [EventBus] ADD: event.route.error - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 49
📌 [EventBus] ADD: event.route.fallback - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 50
📌 [EventBus] ADD: event.rising - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 51
📌 [EventBus] ADD: event.falling - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 52
📌 [EventBus] ADD: cross.component.broadcast - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 53
📌 [EventBus] ADD: cross.component.request - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 54
📌 [EventBus] ADD: cross.component.response - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 55
📌 [EventBus] ADD: event.chain.start - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 56
📌 [EventBus] ADD: event.chain.progress - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 57
📌 [EventBus] ADD: event.chain.complete - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 58
📌 [EventBus] ADD: event.chain.error - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 59
📌 [EventBus] ADD: performance.monitor.start - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 60
📌 [EventBus] ADD: performance.monitor.end - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 61
📌 [EventBus] ADD: performance.threshold.exceeded - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 62
📌 [EventBus] ADD: debug.event.emit - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 63
📌 [EventBus] ADD: debug.event.handle - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 64
📌 [EventBus] ADD: debug.performance - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 65
📌 [EventBus] ADD: debug.memory - function () { [native code] }... | Component ID: global-event-manager | Total listeners: 66
✅ GlobalEventManager组件事件监听器注册完成上升事件已迁移到DockLayout处理
📌 [EventBus] ADD: debug.toggle - () => {
this.debugMode =... | Component ID: global-event-manager | Total listeners: 67
✅ 全局事件管理器初始化完成
📌 [EventBus] ADD: panel.drag.start - function () { [native code] }... | Component ID: drag-state-manager | Total listeners: 68
📌 [EventBus] ADD: panel.drag.move - function () { [native code] }... | Component ID: drag-state-manager | Total listeners: 69
📌 [EventBus] ADD: panel.drag.end - function () { [native code] }... | Component ID: drag-state-manager | Total listeners: 70
📌 [EventBus] ADD: panel.drag.cancel - function () { [native code] }... | Component ID: drag-state-manager | Total listeners: 71
📌 [EventBus] ADD: tabpage.drag.start - function () { [native code] }... | Component ID: drag-state-manager | Total listeners: 72
📌 [EventBus] ADD: tabpage.drag.move - function () { [native code] }... | Component ID: drag-state-manager | Total listeners: 73
📌 [EventBus] ADD: tabpage.drag.end - function () { [native code] }... | Component ID: drag-state-manager | Total listeners: 74
📌 [EventBus] ADD: tabpage.drag.cancel - function () { [native code] }... | Component ID: drag-state-manager | Total listeners: 75
📌 [EventBus] ADD: area.drag.start - function () { [native code] }... | Component ID: drag-state-manager | Total listeners: 76
📌 [EventBus] ADD: area.drag.move - function () { [native code] }... | Component ID: drag-state-manager | Total listeners: 77
📌 [EventBus] ADD: area.drag.end - function () { [native code] }... | Component ID: drag-state-manager | Total listeners: 78
📌 [EventBus] ADD: area.drag.cancel - function () { [native code] }... | Component ID: drag-state-manager | Total listeners: 79
✅ 拖拽管理器事件监听器注册完成
🎯 拖拽状态管理器初始化完成
DockLayout component mounted
📌 [EventBus] ADD: panel.drag.start - async (data, event2) => {
... | Component ID: dock-layout | Total listeners: 80
📌 [EventBus] ADD: panel.drag.move - async (data, event2) => {
... | Component ID: dock-layout | Total listeners: 81
📌 [EventBus] ADD: panel.drag.end - async (data, event2) => {
... | Component ID: dock-layout | Total listeners: 82
📌 [EventBus] ADD: panel.drag.cancel - async (data, event2) => {
... | Component ID: dock-layout | Total listeners: 83
📌 [EventBus] ADD: panel.resize.start - async (data, event2) => {
... | Component ID: dock-layout | Total listeners: 84
📌 [EventBus] ADD: panel.resize.move - async (data, event2) => {
... | Component ID: dock-layout | Total listeners: 85
📌 [EventBus] ADD: panel.resize.end - async (data, event2) => {
... | Component ID: dock-layout | Total listeners: 86
📌 [EventBus] ADD: area.drag.start - async (data, event2) => {
... | Component ID: dock-layout | Total listeners: 87
📌 [EventBus] ADD: area.drag.move - async (data, event2) => {
... | Component ID: dock-layout | Total listeners: 88
📌 [EventBus] ADD: area.drag.end - async (data, event2) => {
... | Component ID: dock-layout | Total listeners: 89
📌 [EventBus] ADD: area.drag.cancel - async (data, event2) => {
... | Component ID: dock-layout | Total listeners: 90
📌 [EventBus] ADD: area.resize.start - async (data, event2) => {
... | Component ID: dock-layout | Total listeners: 91
📌 [EventBus] ADD: area.resize.move - async (data, event2) => {
... | Component ID: dock-layout | Total listeners: 92
📌 [EventBus] ADD: area.resize.end - async (data, event2) => {
... | Component ID: dock-layout | Total listeners: 93
📌 [EventBus] ADD: area.drag.over - (event2) => {
event2.pre... | Component ID: dock-layout | Total listeners: 94
📌 [EventBus] ADD: area.drag.leave - (event2) => {
globalEven... | Component ID: dock-layout | Total listeners: 95
📌 [EventBus] ADD: area.merge.request - (data) => {
const { sour... | Component ID: dock-layout | Total listeners: 96
📌 [EventBus] ADD: area.updated - (event2) => {
const id =... | Component ID: dock-layout | Total listeners: 97
📌 [EventBus] ADD: area.close.request - (event2) => {
const { ar... | Component ID: dock-layout | Total listeners: 98
📌 [EventBus] ADD: tab.change - async (data) => {
try {
... | Component ID: dock-layout | Total listeners: 99
📌 [EventBus] ADD: tab.close - async (data) => {
try {
... | Component ID: dock-layout | Total listeners: 100
📌 [EventBus] ADD: tab.add - async (data) => {
try {
... | Component ID: dock-layout | Total listeners: 101
📌 [EventBus] ADD: panel.toggleCollapse - () => emit2("toggleCollapse")... | Component ID: dock-layout | Total listeners: 102
📌 [EventBus] ADD: panel.maximize - (event2) => {
var _a;
... | Component ID: dock-layout | Total listeners: 103
📌 [EventBus] ADD: panel.close.request - (event2) => {
const area... | Component ID: dock-layout | Total listeners: 104
📌 [EventBus] ADD: panel.toggleToolbar - () => emit2("toggleToolbar")... | Component ID: dock-layout | Total listeners: 105
📌 [EventBus] ADD: panel.maximize.sync - ({ areaId, maximized }) => {
... | Component ID: dock-layout | Total listeners: 106
📌 [EventBus] ADD: panel.check.single.panel - (event2) => {
const isSi... | Component ID: dock-layout | Total listeners: 107
📌 [EventBus] ADD: area.position.update - (event2) => {
const { ar... | Component ID: dock-layout | Total listeners: 108
📌 [EventBus] ADD: zIndex.update - (event2) => {
const { ar... | Component ID: dock-layout | Total listeners: 109
📌 [EventBus] ADD: resize.start - () => emit2("dragStart")... | Component ID: dock-layout | Total listeners: 110
📌 [EventBus] ADD: resize.move - () => emit2("dragMove")... | Component ID: dock-layout | Total listeners: 111
📌 [EventBus] ADD: resize.end - () => emit2("dragEnd")... | Component ID: dock-layout | Total listeners: 112
📌 [EventBus] ADD: window.state.change - (event2) => {
const ar... | Component ID: dock-layout | Total listeners: 113
📌 [EventBus] ADD: area.merged - (event2) => {
areaAction... | Component ID: dock-layout | Total listeners: 114
📌 [EventBus] ADD: dock.zone.active - (event2) => onDockZoneActive(e... | Component ID: dock-layout | Total listeners: 115
[DockLayout] 初始化主区域面板,共 0 个
sider enabledAi
[zIndexManager] getFloatingAreaZIndex called for areaId: MainArea, isActive: false
[zIndexManager] Assigned new z-index for MainArea: 1001
[zIndexManager] getFloatingAreaZIndex called for areaId: MainArea, isActive: false
[zIndexManager] Returning existing z-index for MainArea: 1001
📌 [EventBus] ADD: zIndex.update - () => {
currentZIndex.va... | Component ID: unknown | Total listeners: 116
📍 Area事件处理器: area.position.update {eventType: 'area.position.update', timestamp: 1768893344762, source: {…}, areaId: 'MainArea', left: 473, …}
📌 [EventBus] ADD: area.drag.move - (eventData) => {
const {... | Component ID: area-MainArea | Total listeners: 117
📌 [EventBus] ADD: area.drag.end - (eventData) => {
const {... | Component ID: area-MainArea | Total listeners: 118
📌 [EventBus] ADD: area.resize.move - (eventData) => {
const {... | Component ID: area-MainArea | Total listeners: 119
📌 [EventBus] ADD: area.resize - (eventData) => {
const {... | Component ID: area-MainArea | Total listeners: 120
📌 [EventBus] ADD: tabpage.panel.removed - (data) => {
if (data.t... | Component ID: tabpage | Total listeners: 121
true 'enabledAi'
{enableImage: true}
50Third-party cookie will be blocked in future Chrome versions as part of Privacy Sandbox.
Tue Jan 20 2026 15:15:44 GMT+0800 (中国标准时间)
[Violation] Permissions policy violation: accelerometer is not allowed in this document.
(匿名) @ fireyejs.js:1
L @ fireyejs.js:1
(匿名) @ fireyejs.js:1
L @ fireyejs.js:1
(匿名) @ fireyejs.js:1
(匿名) @ fireyejs.js:1
The deviceorientation events are blocked by permissions policy. See https://github.com/w3c/webappsec-permissions-policy/blob/master/features.md#sensor-features
(匿名) @ fireyejs.js:1
L @ fireyejs.js:1
(匿名) @ fireyejs.js:1
L @ fireyejs.js:1
(匿名) @ fireyejs.js:1
(匿名) @ fireyejs.js:1
[ice-plugin-spm] Aplus sendPV
[DockLayoutTest] addFloatingPanel called
[DockLayoutTest] dockLayoutRef.value: Proxy(Object) {floatingAreas: RefImpl, hiddenAreas: RefImpl, addFloatingPanel: ƒ, findOrCreateMainAreaTabPage: ƒ, handleDockingEnding: ƒ, …}
[DockLayoutTest] dockLayoutRef.value.addFloatingPanel:
[DockLayoutTest] 调用DockLayout的addFloatingPanel方法
[DockLayoutTest] 容器尺寸: {width: 1247, height: 891, left: 0, top: 53}
[zIndexManager] getFloatingAreaZIndex called for areaId: area-1768893346895, isActive: false
[zIndexManager] Assigned new z-index for area-1768893346895: 1002
📍 Area事件处理器: area.updated {eventType: 'area.updated', areaId: 'area-1768893346895', oldState: {…}, newState: {…}, updates: {…}}
[zIndexManager] getFloatingAreaZIndex called for areaId: area-1768893346895, isActive: false
[zIndexManager] Returning existing z-index for area-1768893346895: 1002
[zIndexManager] getFloatingAreaZIndex called for areaId: area-1768893346895, isActive: false
[zIndexManager] Returning existing z-index for area-1768893346895: 1002
📌 [EventBus] ADD: zIndex.update - () => {
currentZIndex.va... | Component ID: unknown | Total listeners: 122
📌 [EventBus] ADD: area.drag.move - (eventData) => {
const {... | Component ID: area-area-1768893346895 | Total listeners: 123
📌 [EventBus] ADD: area.drag.end - (eventData) => {
const {... | Component ID: area-area-1768893346895 | Total listeners: 124
📌 [EventBus] ADD: area.resize.move - (eventData) => {
const {... | Component ID: area-area-1768893346895 | Total listeners: 125
📌 [EventBus] ADD: area.resize - (eventData) => {
const {... | Component ID: area-area-1768893346895 | Total listeners: 126
📌 [EventBus] ADD: tabpage.panel.removed - (data) => {
if (data.t... | Component ID: tabpage | Total listeners: 127
[Panel:panel-1768893346895-1] 组件已挂载
📌 [EventBus] ADD: panel.maximize.sync - (data) => {
if (data... | Component ID: panel-panel-1768893346895-1 | Total listeners: 128
📌 [EventBus] ADD: panel.single.panel.result - (data) => {
if (data... | Component ID: panel-panel-1768893346895-1 | Total listeners: 129
[Panel:panel-1768893346895-1] 事件监听器注册完成
[Panel:panel-1768893346895-1] 发送单面板检测请求areaId: area-1768893346895
[Panel:panel-1768893346895-1] 初始化面板状态areaId: area-1768893346895
[DockLayoutTest] 调用后的浮动区域数量: 1
[DockLayoutTest] 浮动区域数据: Proxy(Array) {0: {…}}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.start', dragId: 'area_area-1768893346895_1768893348086_ie47sqi', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893348086_ie47sqi', actualDragId: 'area_area-1768893346895_1768893348086_ie47sqi'}
🔍 _handleDragStart 接收到的数据: {dragId: 'area_area-1768893346895_1768893348086_ie47sqi', componentType: 'area', position: {…}, data: {…}}
🔍 _handleDragStart 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893348086_ie47sqi', actualDragId: 'area_area-1768893346895_1768893348086_ie47sqi'}
📈 收到上升事件: area.drag.start {data: {…}}
👋 处理区域拖拽开始: {eventType: 'area.drag.start', timestamp: 1768893348086, source: {…}, dragId: 'area_area-1768893346895_1768893348086_ie47sqi', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.updated {eventType: 'area.updated', areaId: 'area-1768893346895', oldState: {…}, newState: {…}, updates: {…}}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893348086_ie47sqi', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893348086_ie47sqi', actualDragId: 'area_area-1768893346895_1768893348086_ie47sqi'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893348429, source: {…}, dragId: 'area_area-1768893346895_1768893348086_ie47sqi', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893348429}
🔍 尝试在位置 {x: 323, y: 318} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893348086_ie47sqi', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893348086_ie47sqi', actualDragId: 'area_area-1768893346895_1768893348086_ie47sqi'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893348536, source: {…}, dragId: 'area_area-1768893346895_1768893348086_ie47sqi', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893348536}
🔍 尝试在位置 {x: 320, y: 318} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893348086_ie47sqi', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893348086_ie47sqi', actualDragId: 'area_area-1768893346895_1768893348086_ie47sqi'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893349379, source: {…}, dragId: 'area_area-1768893346895_1768893348086_ie47sqi', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893349379}
🔍 尝试在位置 {x: 320, y: 318} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893348086_ie47sqi', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893348086_ie47sqi', actualDragId: 'area_area-1768893346895_1768893348086_ie47sqi'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893349483, source: {…}, dragId: 'area_area-1768893346895_1768893348086_ie47sqi', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893349483}
🔍 尝试在位置 {x: 355, y: 312} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.end', dragId: 'area_area-1768893346895_1768893348086_ie47sqi', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893348086_ie47sqi', actualDragId: 'area_area-1768893346895_1768893348086_ie47sqi'}
📈 收到上升事件: area.drag.end {data: {…}}
✋ 处理区域拖拽结束: {eventType: 'area.drag.end', timestamp: 1768893349669, source: {…}, dragId: 'area_area-1768893346895_1768893348086_ie47sqi', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.position.update {eventType: 'area.position.update', timestamp: 1768893349670, source: {…}, dragId: 'area_area-1768893346895_1768893348086_ie47sqi', areaId: 'area-1768893346895', …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.start', dragId: 'area_area-1768893346895_1768893350905_bq98fqw', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893350905_bq98fqw', actualDragId: 'area_area-1768893346895_1768893350905_bq98fqw'}
🔍 _handleDragStart 接收到的数据: {dragId: 'area_area-1768893346895_1768893350905_bq98fqw', componentType: 'area', position: {…}, data: {…}}
🔍 _handleDragStart 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893350905_bq98fqw', actualDragId: 'area_area-1768893346895_1768893350905_bq98fqw'}
📈 收到上升事件: area.drag.start {data: {…}}
👋 处理区域拖拽开始: {eventType: 'area.drag.start', timestamp: 1768893350905, source: {…}, dragId: 'area_area-1768893346895_1768893350905_bq98fqw', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.updated {eventType: 'area.updated', areaId: 'area-1768893346895', oldState: {…}, newState: {…}, updates: {…}}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893350905_bq98fqw', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893350905_bq98fqw', actualDragId: 'area_area-1768893346895_1768893350905_bq98fqw'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893351139, source: {…}, dragId: 'area_area-1768893346895_1768893350905_bq98fqw', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893351140}
🔍 尝试在位置 {x: 372, y: 311} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893350905_bq98fqw', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893350905_bq98fqw', actualDragId: 'area_area-1768893346895_1768893350905_bq98fqw'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893351247, source: {…}, dragId: 'area_area-1768893346895_1768893350905_bq98fqw', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893351247}
🔍 尝试在位置 {x: 375, y: 320} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893350905_bq98fqw', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893350905_bq98fqw', actualDragId: 'area_area-1768893346895_1768893350905_bq98fqw'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893351363, source: {…}, dragId: 'area_area-1768893346895_1768893350905_bq98fqw', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893351363}
🔍 尝试在位置 {x: 375, y: 336} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893350905_bq98fqw', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893350905_bq98fqw', actualDragId: 'area_area-1768893346895_1768893350905_bq98fqw'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893351466, source: {…}, dragId: 'area_area-1768893346895_1768893350905_bq98fqw', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893351466}
🔍 尝试在位置 {x: 375, y: 350} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893350905_bq98fqw', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893350905_bq98fqw', actualDragId: 'area_area-1768893346895_1768893350905_bq98fqw'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893351569, source: {…}, dragId: 'area_area-1768893346895_1768893350905_bq98fqw', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893351569}
🔍 尝试在位置 {x: 375, y: 366} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893350905_bq98fqw', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893350905_bq98fqw', actualDragId: 'area_area-1768893346895_1768893350905_bq98fqw'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893351675, source: {…}, dragId: 'area_area-1768893346895_1768893350905_bq98fqw', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893351675}
🔍 尝试在位置 {x: 375, y: 389} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893350905_bq98fqw', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893350905_bq98fqw', actualDragId: 'area_area-1768893346895_1768893350905_bq98fqw'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893351778, source: {…}, dragId: 'area_area-1768893346895_1768893350905_bq98fqw', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893351779}
🔍 尝试在位置 {x: 375, y: 426} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893350905_bq98fqw', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893350905_bq98fqw', actualDragId: 'area_area-1768893346895_1768893350905_bq98fqw'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893351889, source: {…}, dragId: 'area_area-1768893346895_1768893350905_bq98fqw', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893351889}
🔍 尝试在位置 {x: 380, y: 456} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893350905_bq98fqw', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893350905_bq98fqw', actualDragId: 'area_area-1768893346895_1768893350905_bq98fqw'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893352051, source: {…}, dragId: 'area_area-1768893346895_1768893350905_bq98fqw', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893352051}
🔍 尝试在位置 {x: 385, y: 475} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.end', dragId: 'area_area-1768893346895_1768893350905_bq98fqw', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893350905_bq98fqw', actualDragId: 'area_area-1768893346895_1768893350905_bq98fqw'}
📈 收到上升事件: area.drag.end {data: {…}}
✋ 处理区域拖拽结束: {eventType: 'area.drag.end', timestamp: 1768893352196, source: {…}, dragId: 'area_area-1768893346895_1768893350905_bq98fqw', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.position.update {eventType: 'area.position.update', timestamp: 1768893352198, source: {…}, dragId: 'area_area-1768893346895_1768893350905_bq98fqw', areaId: 'area-1768893346895', …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.start', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
🔍 _handleDragStart 接收到的数据: {dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: 'area', position: {…}, data: {…}}
🔍 _handleDragStart 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
📈 收到上升事件: area.drag.start {data: {…}}
👋 处理区域拖拽开始: {eventType: 'area.drag.start', timestamp: 1768893381205, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.updated {eventType: 'area.updated', areaId: 'area-1768893346895', oldState: {…}, newState: {…}, updates: {…}}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893381219, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893381219}
🔍 尝试在位置 {x: 363, y: 473} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893381460, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893381460}
🔍 尝试在位置 {x: 364, y: 475} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893381616, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893381616}
🔍 尝试在位置 {x: 383, y: 474} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893381723, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893381723}
🔍 尝试在位置 {x: 418, y: 476} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893381827, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893381827}
🔍 尝试在位置 {x: 478, y: 496} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893381931, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893381931}
🔍 尝试在位置 {x: 560, y: 522} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893382035, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893382035}
🔍 尝试在位置 {x: 597, y: 537} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893382153, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893382153}
🔍 尝试在位置 {x: 613, y: 544} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893382259, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893382259}
🔍 尝试在位置 {x: 626, y: 549} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893382460, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893382460}
🔍 尝试在位置 {x: 629, y: 551} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893383077, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893383077}
🔍 尝试在位置 {x: 629, y: 550} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893383179, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893383179}
🔍 尝试在位置 {x: 581, y: 509} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893383283, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893383283}
🔍 尝试在位置 {x: 525, y: 466} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893383387, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893383387}
🔍 尝试在位置 {x: 466, y: 428} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893383491, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893383491}
🔍 尝试在位置 {x: 432, y: 406} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893383827, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893383827}
🔍 尝试在位置 {x: 423, y: 402} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893383941, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893383941}
🔍 尝试在位置 {x: 468, y: 431} 查找Area排除ID: area-1768893346895
🎯 检测到的目标Area ID: MainArea
📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
📈 收到上升事件: area.drag.move {data: {…}}
✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893384045, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
AreaHandler.js:947 📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893384045}
DockLayout.vue:454 🔍 尝试在位置 {x: 534, y: 475} 查找Area排除ID: area-1768893346895
DockLayout.vue:1331 🎯 检测到的目标Area ID: MainArea
DockLayout.vue:1343 📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
DragStateManager.js:615 🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
DragStateManager.js:649 🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
DockLayout.vue:1115 📈 收到上升事件: area.drag.move {data: {…}}
DockLayout.vue:1373 ✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893384148, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
AreaHandler.js:947 📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893384148}
DockLayout.vue:454 🔍 尝试在位置 {x: 576, y: 507} 查找Area排除ID: area-1768893346895
DockLayout.vue:1331 🎯 检测到的目标Area ID: MainArea
DockLayout.vue:1343 📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
DragStateManager.js:615 🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
DragStateManager.js:649 🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
DockLayout.vue:1115 📈 收到上升事件: area.drag.move {data: {…}}
DockLayout.vue:1373 ✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893384251, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
AreaHandler.js:947 📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893384252}
DockLayout.vue:454 🔍 尝试在位置 {x: 601, y: 525} 查找Area排除ID: area-1768893346895
DockLayout.vue:1331 🎯 检测到的目标Area ID: MainArea
DockLayout.vue:1343 📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
DragStateManager.js:615 🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
DragStateManager.js:649 🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
DockLayout.vue:1115 📈 收到上升事件: area.drag.move {data: {…}}
DockLayout.vue:1373 ✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893384355, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
AreaHandler.js:947 📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893384355}
DockLayout.vue:454 🔍 尝试在位置 {x: 606, y: 528} 查找Area排除ID: area-1768893346895
DockLayout.vue:1331 🎯 检测到的目标Area ID: MainArea
DockLayout.vue:1343 📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
DragStateManager.js:615 🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
DragStateManager.js:649 🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
DockLayout.vue:1115 📈 收到上升事件: area.drag.move {data: {…}}
DockLayout.vue:1373 ✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893384492, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
AreaHandler.js:947 📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893384493}
DockLayout.vue:454 🔍 尝试在位置 {x: 610, y: 532} 查找Area排除ID: area-1768893346895
DockLayout.vue:1331 🎯 检测到的目标Area ID: MainArea
DockLayout.vue:1343 📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
DragStateManager.js:615 🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
DragStateManager.js:649 🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
DockLayout.vue:1115 📈 收到上升事件: area.drag.move {data: {…}}
DockLayout.vue:1373 ✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893384599, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
AreaHandler.js:947 📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893384599}
DockLayout.vue:454 🔍 尝试在位置 {x: 616, y: 540} 查找Area排除ID: area-1768893346895
DockLayout.vue:1331 🎯 检测到的目标Area ID: MainArea
DockLayout.vue:1343 📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
DragStateManager.js:615 🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
DragStateManager.js:649 🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
DockLayout.vue:1115 📈 收到上升事件: area.drag.move {data: {…}}
DockLayout.vue:1373 ✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893384763, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
AreaHandler.js:947 📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893384763}
DockLayout.vue:454 🔍 尝试在位置 {x: 619, y: 546} 查找Area排除ID: area-1768893346895
DockLayout.vue:1331 🎯 检测到的目标Area ID: MainArea
DockLayout.vue:1343 📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
DragStateManager.js:615 🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
DragStateManager.js:649 🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
DockLayout.vue:1115 📈 收到上升事件: area.drag.move {data: {…}}
DockLayout.vue:1373 ✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893386989, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
AreaHandler.js:947 📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893386989}
DockLayout.vue:454 🔍 尝试在位置 {x: 618, y: 546} 查找Area排除ID: area-1768893346895
DockLayout.vue:1331 🎯 检测到的目标Area ID: MainArea
DockLayout.vue:1343 📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
DragStateManager.js:615 🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
DragStateManager.js:649 🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
DockLayout.vue:1115 📈 收到上升事件: area.drag.move {data: {…}}
DockLayout.vue:1373 ✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893387092, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
AreaHandler.js:947 📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893387092}
DockLayout.vue:454 🔍 尝试在位置 {x: 554, y: 487} 查找Area排除ID: area-1768893346895
DockLayout.vue:1331 🎯 检测到的目标Area ID: MainArea
DockLayout.vue:1343 📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
DragStateManager.js:615 🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
DragStateManager.js:649 🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
DockLayout.vue:1115 📈 收到上升事件: area.drag.move {data: {…}}
DockLayout.vue:1373 ✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893387195, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
AreaHandler.js:947 📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893387195}
DockLayout.vue:454 🔍 尝试在位置 {x: 482, y: 431} 查找Area排除ID: area-1768893346895
DockLayout.vue:1331 🎯 检测到的目标Area ID: MainArea
DockLayout.vue:1343 📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
DragStateManager.js:615 🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
DragStateManager.js:649 🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
DockLayout.vue:1115 📈 收到上升事件: area.drag.move {data: {…}}
DockLayout.vue:1373 ✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893387327, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
AreaHandler.js:947 📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893387327}
DockLayout.vue:454 🔍 尝试在位置 {x: 410, y: 377} 查找Area排除ID: area-1768893346895
DockLayout.vue:1331 🎯 检测到的目标Area ID: MainArea
DockLayout.vue:1343 📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
DragStateManager.js:615 🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
DragStateManager.js:649 🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
DockLayout.vue:1115 📈 收到上升事件: area.drag.move {data: {…}}
DockLayout.vue:1373 ✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893387427, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
AreaHandler.js:947 📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893387427}
DockLayout.vue:454 🔍 尝试在位置 {x: 389, y: 363} 查找Area排除ID: area-1768893346895
DockLayout.vue:1331 🎯 检测到的目标Area ID: MainArea
DockLayout.vue:1343 📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
DragStateManager.js:615 🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
DragStateManager.js:649 🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
DockLayout.vue:1115 📈 收到上升事件: area.drag.move {data: {…}}
DockLayout.vue:1373 ✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893387531, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
AreaHandler.js:947 📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893387532}
DockLayout.vue:454 🔍 尝试在位置 {x: 377, y: 357} 查找Area排除ID: area-1768893346895
DockLayout.vue:1331 🎯 检测到的目标Area ID: MainArea
DockLayout.vue:1343 📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}bottom: 944height: 891left: 0right: 1247top: 53width: 1247x: 0y: 53[[Prototype]]: DOMRect
DragStateManager.js:615 🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.move', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
DragStateManager.js:649 🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
DockLayout.vue:1115 📈 收到上升事件: area.drag.move {data: {…}}
DockLayout.vue:1373 ✋ 处理区域拖拽移动: {eventType: 'area.drag.move', timestamp: 1768893387651, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
AreaHandler.js:947 📍 Area事件处理器: area.floating.updatePosition {eventType: 'area.floating.updatePosition', areaId: 'area-1768893346895', position: {…}, timestamp: 1768893387651}
DockLayout.vue:454 🔍 尝试在位置 {x: 374, y: 356} 查找Area排除ID: area-1768893346895
DockLayout.vue:1331 🎯 检测到的目标Area ID: MainArea
DockLayout.vue:1343 📐 更新指示器位置: DOMRect {x: 0, y: 53, width: 1247, height: 891, top: 53, …}
DragStateManager.js:615 🔍 _onDragEvent 接收到的数据: {eventType: 'area.drag.end', dragId: 'area_area-1768893346895_1768893381205_9hebqui', componentType: undefined, data: {…}}
DragStateManager.js:649 🔍 _onDragEvent 处理后的 dragId: {originalDragId: 'area_area-1768893346895_1768893381205_9hebqui', actualDragId: 'area_area-1768893346895_1768893381205_9hebqui'}
DockLayout.vue:1115 📈 收到上升事件: area.drag.end {data: {…}}
DockLayout.vue:1411 ✋ 处理区域拖拽结束: {eventType: 'area.drag.end', timestamp: 1768893388397, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}
AreaHandler.js:947 📍 Area事件处理器: area.position.update {eventType: 'area.position.update', timestamp: 1768893388399, source: {…}, dragId: 'area_area-1768893346895_1768893381205_9hebqui', areaId: 'area-1768893346895', …}