MCPcopy Create free account
hub / github.com/MankaiHuang/screen-visualization / Layer

Function Layer

src/components/Workspace/Layer/index.jsx:10–285  ·  view source on GitHub ↗
(props)

Source from the content-addressed store, hash-verified

8const { SubMenu } = Menu;
9
10function Layer (props) {
11 const [dragId, setDragId] = useState(null)
12 const [layer, setLayer] = useState([])
13 const [isCtrl, setIsCtrl] = useState(false)
14 const [openSubKey, setOpenSubKey] = useState([]) // 展开的subMenu Key数组
15 const [isShowMenu, setIsShowMenu] = useState(false) // 右键菜单
16 const [eventProperty, setEventProperty] = useState({ left: 0, top: 0 })
17 const [showSubMenu, setShowSubMenu] = useState(false) // 是否显示submenu 右键菜单
18 const [isClickSubMenu, setIsClickSubMenu] = useState(false) // 是否右键点击了submenu
19 const [menuStatus, setMenuStatus] = useState(null)
20 const layerRef = useRef(null);
21
22 useEffect(() => {
23 layerRef.current.addEventListener('keydown', keyDown, false);
24 layerRef.current.addEventListener('keyup', keyUp, false);
25 setLayer(props.layer)
26 const tempOpenSubKey = [...openSubKey]
27 if (props.nowGroupId) {
28 const find = (node) => {
29 // 找到当前组的所有父组
30 if (!node) return;
31 tempOpenSubKey.push(node.property.elementId)
32 if (node.property.parentId) {
33 find(findGroupForId(node.property.parentId, layer))
34 }
35 }
36 const nowGroup = findGroupForId(props.nowGroupId, layer)
37 find(nowGroup)
38 }
39 setOpenSubKey([...new Set(tempOpenSubKey)])
40 }, [JSON.stringify(props.layer), props.nowGroupId])
41 useEffect(() => {
42 if (isShowMenu) {
43 const menu = document.querySelector('#layerMenu')
44 if (menu) {
45 menu.style.left = `${eventProperty.clientX}px`
46 menu.style.top = `${eventProperty.clientY - 70}px`
47 }
48 }
49
50 }, [menuStatus]) // 当菜单属性改变时执行
51 useEffect(() => {
52 // 如果点了中间的iframe 则让菜单隐藏
53 if (document.activeElement.tagName === 'IFRAME') {
54 setIsCtrl(false)
55 closeMenu()
56 }
57 }, [document.activeElement.tagName])
58
59 function keyDown (event) {
60 setIsCtrl(event.ctrlKey)
61 }
62 function keyUp (event) {
63 const key = event.keyCode;
64 if (key === 17) {
65 setIsCtrl(false)
66 }
67 }

Callers

nothing calls this directly

Calls 7

findGroupForIdFunction · 0.90
closeMenuFunction · 0.85
openMenuFunction · 0.85
onMenuClickFunction · 0.85
onChangeShowSubMenuFunction · 0.85
findFunction · 0.70
renderMenuFunction · 0.70

Tested by

no test coverage detected