Commit 1815f01c by pangchong

refactor(editor): 优化编辑区上下文菜单结构与行为

- 将 EditAreaContextMenuModal 标签简化为单行,提高代码简洁性
- 在常量中定义节点树菜单控制的多项限值配置
- 统一粘贴与插入动作的模式映射,简化相关逻辑
- 重新设计粘贴节点时的 ID 生成,避免冲突并保证唯一性
- 合并节点添加相关模式处理,简化代码结构
- 优化移动节点逻辑,支持上移与下移统一处理与提示
- 使用常量替代硬编码数字,统一最大递归层级、文本预览长度等参数
- 调整节点及其子节点展开的递归深度与同级节点展示范围
- 修正节点文本预览截断长度逻辑,使其依赖配置常量
parent 047f00db
......@@ -5,3 +5,28 @@ export interface EditAreaContextMenuProps {
y?: number
}
// ── 节点树菜单控制常量 ──
/** 最多回溯的祖先节点层级数 */
export const MAX_ANCESTOR_DEPTH = 4
/** 同级节点展示窗口偏移量 (±4) */
export const SIBLING_WINDOW_OFFSET = 4
/** 目标节点下层展开的递归最大深度 */
export const MAX_CHILD_DEPTH_LEVEL = 2
/** 无 mixedContent 时展开直系子节点的最大数量 */
export const MAX_DIRECT_CHILD_COUNT = 5
/** 节点文本预览的最大显示字符数 */
export const MAX_TEXT_PREVIEW_LENGTH = 40
// ── 粘贴与插入动作模式映射 ──
export const PASTE_MODE_MAP: Record<string, 'above' | 'below' | 'inside'> = {
insertFragmentAbove: 'above',
insertFragmentBelow: 'below',
insertFragmentInside: 'inside',
pasteNodeAbove: 'above',
pasteNodeBelow: 'below',
pasteNodeInside: 'inside'
}
......@@ -68,13 +68,7 @@
<FindReplacePanel v-model:visible="findReplaceVisible" :sync-editor-scroll="syncEditorScroll" />
<!-- 编辑区非 Table 元素右键上下文菜单浮动下拉 -->
<EditAreaContextMenuModal
v-model="contextMenuVisible"
:node-ids="contextMenuNodeIds"
:x="contextMenuX"
:y="contextMenuY"
/>
<EditAreaContextMenuModal v-model="contextMenuVisible" :node-ids="contextMenuNodeIds" :x="contextMenuX" :y="contextMenuY" />
<!-- 文本选择悬浮工具栏 -->
<SelectionToolbar />
......@@ -212,7 +206,6 @@ const handleContextMenu = (e: MouseEvent) => {
contextMenuVisible.value = true
}
}
</script>
<style scoped>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment