wonder.js
Version:
53 lines (48 loc) • 3.25 kB
JavaScript
'use strict';
var Caml_array = require("bs-platform/lib/js/caml_array.js");
var Log$WonderLog = require("wonder-log/lib/js/src/Log.js");
var Contract$WonderLog = require("wonder-log/lib/js/src/Contract.js");
var ArrayService$Wonderjs = require("../../../atom/ArrayService.js");
var StateDataMain$Wonderjs = require("../data/StateDataMain.js");
var IsDebugMainService$Wonderjs = require("../state/IsDebugMainService.js");
var ArrayService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ArrayService.js");
var HierachyTransformService$Wonderjs = require("../../../record/main/transform/HierachyTransformService.js");
var RecordTransformMainService$Wonderjs = require("./RecordTransformMainService.js");
function _changeChildOrder(sourceTransfrom, targetTransform, children, action) {
return ArrayService$WonderCommonlib.reduceOneParam((function (newChildren, child) {
if (child === targetTransform) {
if (action) {
return ArrayService$Wonderjs.push(sourceTransfrom, ArrayService$Wonderjs.push(targetTransform, newChildren));
} else {
return ArrayService$Wonderjs.push(targetTransform, ArrayService$Wonderjs.push(sourceTransfrom, newChildren));
}
} else if (child === sourceTransfrom) {
return newChildren;
} else {
return ArrayService$Wonderjs.push(child, newChildren);
}
}), /* array */[], children);
}
function changeChildOrder(sourceTransfrom, targetTransform, targetParentTransform, action, state) {
Contract$WonderLog.requireCheck((function (param) {
return Contract$WonderLog.test(Log$WonderLog.buildAssertMessage("parent should be the parent of source and target", "not"), (function (param) {
var record = RecordTransformMainService$Wonderjs.getRecord(state);
var match = HierachyTransformService$Wonderjs.getParent(sourceTransfrom, record);
var match$1 = HierachyTransformService$Wonderjs.getParent(targetTransform, record);
if (match !== undefined && match$1 !== undefined) {
var targetParent = match$1;
Contract$WonderLog.Operators[/* = */0](match, targetParent);
return Contract$WonderLog.Operators[/* = */0](targetParentTransform, targetParent);
} else {
return Contract$WonderLog.assertFail(/* () */0);
}
}));
}), IsDebugMainService$Wonderjs.getIsDebug(StateDataMain$Wonderjs.stateData));
var record = RecordTransformMainService$Wonderjs.getRecord(state);
var newrecord = Caml_array.caml_array_dup(state);
newrecord[/* transformRecord */11] = HierachyTransformService$Wonderjs.setChildren(record, targetParentTransform, _changeChildOrder(sourceTransfrom, targetTransform, HierachyTransformService$Wonderjs.unsafeGetChildren(targetParentTransform, record), action));
return newrecord;
}
exports._changeChildOrder = _changeChildOrder;
exports.changeChildOrder = changeChildOrder;
/* Log-WonderLog Not a pure module */