Wonder-Technology/Wonder-Editor

View on GitHub
lib/es6_global/src/service/stateTuple/logic/asset/RenameNodeAssetLogicService.js

Summary

Maintainability
A
1 hr
Test Coverage


import * as Curry from "../../../../../../../node_modules/bs-platform/lib/es6/curry.js";
import * as Caml_option from "../../../../../../../node_modules/bs-platform/lib/es6/caml_option.js";
import * as Result$WonderEditor from "../../../../module/Result.js";
import * as LanguageUtils$WonderEditor from "../../../../core/utils/language/LanguageUtils.js";
import * as OptionService$WonderEditor from "../../../primitive/OptionService.js";
import * as NodeAssetService$WonderEditor from "../../../record/editor/asset/NodeAssetService.js";
import * as StateLogicService$WonderEditor from "../StateLogicService.js";
import * as ScriptEngineService$WonderEditor from "../../../state/engine/script/ScriptEngineService.js";
import * as WDBNodeAssetService$WonderEditor from "../../../record/editor/asset/WDBNodeAssetService.js";
import * as LanguageEditorService$WonderEditor from "../../../state/editor/LanguageEditorService.js";
import * as FolderNodeAssetService$WonderEditor from "../../../record/editor/asset/FolderNodeAssetService.js";
import * as TreeAssetEditorService$WonderEditor from "../../../state/editor/asset/TreeAssetEditorService.js";
import * as IterateTreeAssetService$WonderEditor from "../../../record/editor/asset/IterateTreeAssetService.js";
import * as OperateTreeAssetService$WonderEditor from "../../../record/editor/asset/OperateTreeAssetService.js";
import * as OperateTextureLogicService$WonderEditor from "../OperateTextureLogicService.js";
import * as AssetBundleNodeAssetService$WonderEditor from "../../../record/editor/asset/AssetBundleNodeAssetService.js";
import * as OperateMaterialLogicService$WonderEditor from "../material/OperateMaterialLogicService.js";
import * as OperateTreeAssetLogicService$WonderEditor from "./OperateTreeAssetLogicService.js";
import * as ScriptAttributeNodeAssetService$WonderEditor from "../../../record/editor/asset/ScriptAttributeNodeAssetService.js";
import * as PrepareDefaultComponentLogicService$WonderEditor from "../PrepareDefaultComponentLogicService.js";
import * as ScriptAttributeNodeNameAssetService$WonderEditor from "../../../record/editor/asset/ScriptAttributeNodeNameAssetService.js";
import * as ScriptEventFunctionNodeAssetService$WonderEditor from "../../../record/editor/asset/ScriptEventFunctionNodeAssetService.js";
import * as ScriptEventFunctionNodeNameAssetService$WonderEditor from "../../../record/editor/asset/ScriptEventFunctionNodeNameAssetService.js";

function _isNameEqualDefaultMaterialName(type_, name) {
  var defaultName = type_ ? PrepareDefaultComponentLogicService$WonderEditor.getDefaultLightMaterialName(/* () */0) : PrepareDefaultComponentLogicService$WonderEditor.getDefaultBasicMaterialName(/* () */0);
  return name === defaultName;
}

function _checkParentNode(parentFolderNode, nodeName, engineState) {
  if (parentFolderNode !== undefined) {
    var match = OperateTreeAssetLogicService$WonderEditor.isNodeChildHasTargetName(nodeName, parentFolderNode, engineState);
    if (match) {
      return Result$WonderEditor.RelationResult[/* fail */1](LanguageUtils$WonderEditor.getMessageLanguageDataByType("asset-rename-node", StateLogicService$WonderEditor.getEditorState(LanguageEditorService$WonderEditor.unsafeGetType)));
    } else {
      return Result$WonderEditor.RelationResult[/* success */0](/* () */0);
    }
  } else {
    return Result$WonderEditor.RelationResult[/* success */0](/* () */0);
  }
}

function _textureNodeFunc(param, parentFolderNode, param$1, nodeId, param$2) {
  var engineState = param$1[2];
  var tree = param$1[1];
  var result = param$1[0];
  var name = param[1];
  var match = Result$WonderEditor.RelationResult[/* isSuccess */3](result) && NodeAssetService$WonderEditor.isIdEqual(nodeId, param[0]);
  if (match) {
    var result$1 = _checkParentNode(parentFolderNode, name, engineState);
    var match$1;
    match$1 = result$1.tag ? /* tuple */[
        result$1,
        engineState
      ] : /* tuple */[
        result$1,
        OperateTextureLogicService$WonderEditor.setName(param$2[/* textureComponent */0], name, engineState)
      ];
    return /* tuple */[
            match$1[0],
            tree,
            match$1[1]
          ];
  } else {
    return /* tuple */[
            result,
            tree,
            engineState
          ];
  }
}

function _renameMaterialNode(param, parentFolderNode, param$1, param$2) {
  var type_ = param$2[/* type_ */0];
  var engineState = param$1[1];
  var name = param[1];
  var match = _isNameEqualDefaultMaterialName(type_, name);
  var match$1;
  if (match) {
    match$1 = /* tuple */[
      Result$WonderEditor.RelationResult[/* fail */1](LanguageUtils$WonderEditor.getMessageLanguageDataByType("asset-rename-material", StateLogicService$WonderEditor.getEditorState(LanguageEditorService$WonderEditor.unsafeGetType))),
      engineState
    ];
  } else {
    var result = _checkParentNode(parentFolderNode, name, engineState);
    match$1 = result.tag ? /* tuple */[
        result,
        engineState
      ] : /* tuple */[
        result,
        OperateMaterialLogicService$WonderEditor.setName(param$2[/* materialComponent */1], type_, name, engineState)
      ];
  }
  return /* tuple */[
          match$1[0],
          param$1[0],
          match$1[1]
        ];
}

function _materialNodeFunc(param, parentFolderNode, param$1, nodeId, nodeData) {
  var engineState = param$1[2];
  var tree = param$1[1];
  var result = param$1[0];
  var targetNodeId = param[0];
  var match = Result$WonderEditor.RelationResult[/* isSuccess */3](result) && NodeAssetService$WonderEditor.isIdEqual(nodeId, targetNodeId);
  if (match) {
    return _renameMaterialNode(/* tuple */[
                targetNodeId,
                param[1]
              ], parentFolderNode, /* tuple */[
                tree,
                engineState
              ], nodeData);
  } else {
    return /* tuple */[
            result,
            tree,
            engineState
          ];
  }
}

function _hasTargetName(param, param$1, itemName, isTreeScriptNodesHasTargetNameFunc) {
  var tree = param$1[1];
  var name = param[0];
  return Result$WonderEditor.RelationResult[/* handleSuccess */4]((function (param) {
                var match = Curry._2(isTreeScriptNodesHasTargetNameFunc, name, tree);
                if (match) {
                  return Result$WonderEditor.RelationResult[/* fail */1](LanguageUtils$WonderEditor.getMessageLanguageDataByType(itemName, StateLogicService$WonderEditor.getEditorState(LanguageEditorService$WonderEditor.unsafeGetType)));
                } else {
                  return Result$WonderEditor.RelationResult[/* success */0](/* () */0);
                }
              }), _checkParentNode(param$1[0], name, param[1]));
}

function _scriptEventFunctionNodeFunc(param, parentFolderNode, param$1, nodeId, nodeData) {
  var engineState = param$1[2];
  var tree = param$1[1];
  var result = param$1[0];
  var name = param[1];
  var match = Result$WonderEditor.RelationResult[/* isSuccess */3](result) && NodeAssetService$WonderEditor.isIdEqual(nodeId, param[0]);
  if (match) {
    var result$1 = _hasTargetName(/* tuple */[
          name,
          engineState
        ], /* tuple */[
          parentFolderNode,
          tree
        ], "asset-rename-scriptEventFunction", ScriptEventFunctionNodeNameAssetService$WonderEditor.isTreeScriptEventFunctionNodesHasTargetName);
    var match$1;
    match$1 = result$1.tag ? /* tuple */[
        result$1,
        tree
      ] : /* tuple */[
        result$1,
        OperateTreeAssetService$WonderEditor.updateNode(nodeId, ScriptEventFunctionNodeNameAssetService$WonderEditor.rename(name, nodeData), ScriptEventFunctionNodeAssetService$WonderEditor.buildNodeByNodeData, tree)
      ];
    return /* tuple */[
            match$1[0],
            match$1[1],
            engineState
          ];
  } else {
    return /* tuple */[
            result,
            tree,
            engineState
          ];
  }
}

function _scriptAttributeNodeFunc(param, parentFolderNode, param$1, nodeId, nodeData) {
  var engineState = param$1[2];
  var tree = param$1[1];
  var result = param$1[0];
  var newName = param[1];
  var match = Result$WonderEditor.RelationResult[/* isSuccess */3](result) && NodeAssetService$WonderEditor.isIdEqual(nodeId, param[0]);
  if (match) {
    var result$1 = _hasTargetName(/* tuple */[
          newName,
          engineState
        ], /* tuple */[
          parentFolderNode,
          tree
        ], "asset-rename-scriptAttribute", ScriptAttributeNodeNameAssetService$WonderEditor.isTreeScriptAttributeNodesHasTargetName);
    if (result$1.tag) {
      return /* tuple */[
              result$1,
              tree,
              engineState
            ];
    } else {
      var oldName = ScriptAttributeNodeAssetService$WonderEditor.getNodeNameByData(nodeData);
      var attribute = ScriptAttributeNodeAssetService$WonderEditor.getAttributeByData(nodeData);
      return /* tuple */[
              result$1,
              OperateTreeAssetService$WonderEditor.updateNode(nodeId, ScriptAttributeNodeNameAssetService$WonderEditor.rename(newName, nodeData), ScriptAttributeNodeAssetService$WonderEditor.buildNodeByNodeData, tree),
              ScriptEngineService$WonderEditor.replaceAttributeInAllScriptComponents(/* tuple */[
                    oldName,
                    newName
                  ], attribute, engineState)
            ];
    }
  } else {
    return /* tuple */[
            result,
            tree,
            engineState
          ];
  }
}

function _wdbNodeFunc(param, parentFolderNode, param$1, nodeId, nodeData) {
  var engineState = param$1[2];
  var tree = param$1[1];
  var result = param$1[0];
  var name = param[1];
  var match = Result$WonderEditor.RelationResult[/* isSuccess */3](result) && NodeAssetService$WonderEditor.isIdEqual(nodeId, param[0]);
  var match$1;
  if (match) {
    var result$1 = _checkParentNode(parentFolderNode, name, engineState);
    var match$2;
    match$2 = result$1.tag ? /* tuple */[
        result$1,
        tree
      ] : /* tuple */[
        result$1,
        OperateTreeAssetService$WonderEditor.updateNode(nodeId, WDBNodeAssetService$WonderEditor.rename(name, nodeData), WDBNodeAssetService$WonderEditor.buildNodeByNodeData, tree)
      ];
    match$1 = /* tuple */[
      match$2[0],
      match$2[1],
      engineState
    ];
  } else {
    match$1 = /* tuple */[
      result,
      tree,
      engineState
    ];
  }
  return /* tuple */[
          match$1[0],
          match$1[1],
          match$1[2]
        ];
}

function _assetBundleNodeFunc(param, parentFolderNode, param$1, nodeId, nodeData) {
  var engineState = param$1[2];
  var tree = param$1[1];
  var result = param$1[0];
  var name = param[1];
  var match = Result$WonderEditor.RelationResult[/* isSuccess */3](result) && NodeAssetService$WonderEditor.isIdEqual(nodeId, param[0]);
  var match$1;
  if (match) {
    var result$1 = _checkParentNode(parentFolderNode, name, engineState);
    var match$2;
    match$2 = result$1.tag ? /* tuple */[
        result$1,
        tree
      ] : /* tuple */[
        result$1,
        OperateTreeAssetService$WonderEditor.updateNode(nodeId, AssetBundleNodeAssetService$WonderEditor.rename(name, nodeData), AssetBundleNodeAssetService$WonderEditor.buildNodeByNodeData, tree)
      ];
    match$1 = /* tuple */[
      match$2[0],
      match$2[1],
      engineState
    ];
  } else {
    match$1 = /* tuple */[
      result,
      tree,
      engineState
    ];
  }
  return /* tuple */[
          match$1[0],
          match$1[1],
          match$1[2]
        ];
}

function _folderNodeFunc(param, parentFolderNode, param$1, nodeId, nodeData, children) {
  var engineState = param$1[2];
  var tree = param$1[1];
  var result = param$1[0];
  var name = param[1];
  var match = Result$WonderEditor.RelationResult[/* isSuccess */3](result) && NodeAssetService$WonderEditor.isIdEqual(nodeId, param[0]);
  if (match) {
    var result$1 = _checkParentNode(parentFolderNode, name, engineState);
    var match$1;
    match$1 = result$1.tag ? /* tuple */[
        result$1,
        tree
      ] : /* tuple */[
        result$1,
        OperateTreeAssetService$WonderEditor.updateNode(nodeId, FolderNodeAssetService$WonderEditor.rename(name, nodeData), (function (param) {
                return (function (param$1) {
                    var param$2 = param$1;
                    var param$3 = children;
                    return FolderNodeAssetService$WonderEditor.buildNodeByNodeData(param, param$2, param$3);
                  });
              }), tree)
      ];
    return /* tuple */[
            match$1[0],
            match$1[1],
            engineState
          ];
  } else {
    return /* tuple */[
            result,
            tree,
            engineState
          ];
  }
}

function renameNode(targetNodeId, name, param) {
  var editorState = param[0];
  var tree = TreeAssetEditorService$WonderEditor.unsafeGetTree(editorState);
  var partial_arg = /* tuple */[
    targetNodeId,
    name
  ];
  var partial_arg$1 = /* tuple */[
    targetNodeId,
    name
  ];
  var partial_arg$2 = /* tuple */[
    targetNodeId,
    name
  ];
  var partial_arg$3 = /* tuple */[
    targetNodeId,
    name
  ];
  var partial_arg$4 = /* tuple */[
    targetNodeId,
    name
  ];
  var partial_arg$5 = /* tuple */[
    targetNodeId,
    name
  ];
  var partial_arg$6 = /* tuple */[
    targetNodeId,
    name
  ];
  var match = IterateTreeAssetService$WonderEditor.foldWithParentFolderNode((function (param, param$1, param$2, param$3, param$4) {
          return _folderNodeFunc(partial_arg, param, param$1, param$2, param$3, param$4);
        }), /* tuple */[
        Result$WonderEditor.RelationResult[/* success */0](/* () */0),
        tree,
        param[1]
      ], tree, undefined, (function (param, param$1, param$2, param$3) {
          return _textureNodeFunc(partial_arg$1, param, param$1, param$2, param$3);
        }), (function (param, param$1, param$2, param$3) {
          return _materialNodeFunc(partial_arg$2, param, param$1, param$2, param$3);
        }), (function (param, param$1, param$2, param$3) {
          return _scriptEventFunctionNodeFunc(partial_arg$3, param, param$1, param$2, param$3);
        }), (function (param, param$1, param$2, param$3) {
          return _scriptAttributeNodeFunc(partial_arg$4, param, param$1, param$2, param$3);
        }), (function (param, param$1, param$2, param$3) {
          return _wdbNodeFunc(partial_arg$5, param, param$1, param$2, param$3);
        }), (function (param, param$1, param$2, param$3) {
          return _assetBundleNodeFunc(partial_arg$6, param, param$1, param$2, param$3);
        }), Caml_option.some(undefined), /* () */0);
  var engineState = match[2];
  var result = match[0];
  if (result.tag) {
    return Result$WonderEditor.SameDataResult[/* fail */1](/* tuple */[
                OptionService$WonderEditor.unsafeGet(result[0]),
                /* tuple */[
                  TreeAssetEditorService$WonderEditor.setTree(tree, editorState),
                  engineState
                ]
              ]);
  } else {
    return Result$WonderEditor.SameDataResult[/* success */0](/* tuple */[
                TreeAssetEditorService$WonderEditor.setTree(match[1], editorState),
                engineState
              ]);
  }
}

export {
  _isNameEqualDefaultMaterialName ,
  _checkParentNode ,
  _textureNodeFunc ,
  _renameMaterialNode ,
  _materialNodeFunc ,
  _hasTargetName ,
  _scriptEventFunctionNodeFunc ,
  _scriptAttributeNodeFunc ,
  _wdbNodeFunc ,
  _assetBundleNodeFunc ,
  _folderNodeFunc ,
  renameNode ,
  
}
/* LanguageUtils-WonderEditor Not a pure module */