个人自用啊啊啊

import React, { useEffect } from "react";
import { TreeNode } from "designable-core";
import { uid } from "designable-shared";
import { generateRandomId } from "../components/Interactive/Condition";
import cloneDeep from "lodash/cloneDeep";
interface useKeyboardProps {
  node: TreeNode;
  clickObject: any;
  fn?: any;
}
export const useKeyboard: React.FC<useKeyboardProps> = (
  node,
  clickObject,
  cutValue
) => {
  const [keyId, setKeyId] = React.useState("");
  const [copyValue, setCopyValue] = React.useState(111);
  console.log("🐕💨[useKeyboard]>>useKeyboard>>copyValue:", copyValue);
  useEffect(() => {
    const PopupKeyUp = (e) => {
      console.log("🐕💨[useKeyboard]>>PopupKeyUp>>e:", e);
      switch (e.code){
        case "Delete":
          switch (clickObject.type) {
            case "event":
              node.deleteEventName(clickObject.value);
              setKeyId(uid());
              break;
            case "condition":
              node.deleteCondition(clickObject.eventName, clickObject.value);
              setKeyId(uid());
              break;
            case "action":
              node.deleteActionOnEvent(
                  clickObject.eventName,
                  clickObject.actionName,
                  clickObject.value
              );
              break;
            case "target":
              node.deleteTargerOnAction(
                  clickObject.eventName,
                  clickObject.fnName,
                  Number(clickObject.value.split("-")[1]),
                  clickObject.value.split("-")[0]
              );
              break;
          }
          break;
        case e.ctrlKey && e.keyCode === 67:
          console.log("用户按下了Ctrl+C", node.eventMaps, 11, clickObject);
          const newNode = cloneDeep(node.eventMaps);
          switch (clickObject.type) {
            case "event":
              setCopyValue({
                events: newNode[clickObject.value],
                eventName: clickObject.value,
                type: "event",
              });
              break;
            case "condition":
              let conditionObject = newNode[clickObject.eventName].find((item) =>
                  item.hasOwnProperty("condition")
              );
              let findObject = conditionObject.condition.find(
                  (item) => item.cid === clickObject.value
              );
              let findEvent = newNode[clickObject.eventName].filter(
                  (item) => item.cid === clickObject.value
              );
              console.log('🐕💨[useKeyboard]>>PopupKeyUp>>conditionObject:', conditionObject)
              setCopyValue({
                condition: findObject,
                event: findEvent,
                type: "condition",
              });
              break;
            case "action":

          }
          break;
        case e.ctrlKey && e.keyCode === 66:
          console.log(
              "🐕💨[useKeyboard]>>PopupKeyUp>>copyValue:",
              copyValue,
              111,
              clickObject
          );
          const uuid = uid();
          const cid = generateRandomId();
          if (copyValue.type === "event") {
            node.pasteEvent(
                copyValue.events,
                copyValue.eventName,
                clickObject.value
            );
          } else if (copyValue) {
            copyValue?.aid
                ? node.pasteAction(
                    copyValue,
                    clickObject.eventName,
                    clickObject.value,
                    "",
                    "event"
                )
                : node.pasteCondition(clickObject.eventName, copyValue, uuid, cid);
          }
          break;
          
      }
    };
    //监听键盘事件
    document.addEventListener("keyup", PopupKeyUp, true);
    return () => {
      //销毁键盘事件
      document.removeEventListener("keyup", PopupKeyUp, true);
    };
  }, [clickObject]);
  return { keyId, copyValue };
};

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值