UNPKG

@react-awesome-query-builder/core

Version:
172 lines (164 loc) 6.47 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.getCompatibleArgsOnFuncChange = void 0; Object.defineProperty(exports, "getDefaultArgValue", { enumerable: true, get: function get() { return _ruleUtils.getDefaultArgValue; } }); Object.defineProperty(exports, "setArgValue", { enumerable: true, get: function get() { return _ruleUtils.setArgValue; } }); exports.setFunc = exports.setArgValueSrc = exports.setArgValueAsyncListValues = void 0; Object.defineProperty(exports, "setFuncDefaultArg", { enumerable: true, get: function get() { return _ruleUtils.setFuncDefaultArg; } }); Object.defineProperty(exports, "setFuncDefaultArgs", { enumerable: true, get: function get() { return _ruleUtils.setFuncDefaultArgs; } }); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _configUtils = require("../utils/configUtils"); var _ruleUtils = require("../utils/ruleUtils"); var _validation = require("../utils/validation"); var _immutable = _interopRequireDefault(require("immutable")); /** * @param {Immutable.Map} value * @return {array} - [usedFields, badFields] */ // const getUsedFieldsInFuncValue = (value, config) => { // let usedFields = []; // let badFields = []; // const _traverse = (value) => { // const args = value && value.get("args"); // if (!args) return; // for (const arg of args.values()) { // if (arg.get("valueSrc") == "field") { // const rightField = arg.get("value"); // if (rightField) { // const rightFieldDefinition = config ? getFieldConfig(config, rightField) : undefined; // if (config && !rightFieldDefinition) // badFields.push(rightField); // else // usedFields.push(rightField); // } // } else if (arg.get("valueSrc") == "func") { // _traverse(arg.get("value")); // } // } // }; // _traverse(value); // return [usedFields, badFields]; // }; /** * Used @ FuncWidget * @param {Immutable.Map} value * @param {string} funcKey * @param {object} config * @param {boolean} canFixArgs */ var setFunc = exports.setFunc = function setFunc(value, funcKey, config, canFixArgs) { var fieldSeparator = config.settings.fieldSeparator; value = value || new _immutable["default"].Map(); if (Array.isArray(funcKey)) { // fix for cascader funcKey = funcKey.join(fieldSeparator); } var oldFuncKey = value.get("func"); var oldArgs = value.get("args"); value = value.set("func", funcKey); var funcConfig = funcKey && (0, _configUtils.getFuncConfig)(config, funcKey); var newFuncSignature = funcKey && (0, _configUtils.getFuncSignature)(config, funcKey); var oldFuncSignature = oldFuncKey && (0, _configUtils.getFuncSignature)(config, oldFuncKey); var keepArgsKeys = getCompatibleArgsOnFuncChange(oldFuncSignature, newFuncSignature, oldArgs, config, canFixArgs); if (keepArgsKeys.length) { var argsKeys = Object.keys(newFuncSignature.args); var deleteArgsKeys = argsKeys.filter(function (k) { return !keepArgsKeys.includes(k); }); value = deleteArgsKeys.reduce(function (value, k) { return value.deleteIn(["args", k]); }, value); } else { value = value.set("args", new _immutable["default"].Map()); } // defaults value = (0, _ruleUtils.setFuncDefaultArgs)(config, value, funcConfig); return value; }; /** * Used @ FuncWidget * @param {Immutable.Map} value * @param {string} argKey * @param {string} argValSrc * @param {object} argConfig */ var setArgValueSrc = exports.setArgValueSrc = function setArgValueSrc(value, argKey, argValSrc, _argConfig, _config) { if (value && value.get("func")) { value = value.setIn(["args", argKey], new _immutable["default"].Map({ valueSrc: argValSrc })); } return value; }; var setArgValueAsyncListValues = exports.setArgValueAsyncListValues = function setArgValueAsyncListValues(value, argKey, asyncListValues, _argConfig, _config) { if (value && value.get("func")) { value = value.setIn(["args", argKey, "asyncListValues"], asyncListValues); } return value; }; // see getFuncSignature in configUtils var getCompatibleArgsOnFuncChange = exports.getCompatibleArgsOnFuncChange = function getCompatibleArgsOnFuncChange(s1, s2, argVals, config) { var canFixArgs = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; if ((s1 === null || s1 === void 0 ? void 0 : s1.returnType) != (s2 === null || s2 === void 0 ? void 0 : s2.returnType)) return []; var checkIndexes = false; var keys = Object.keys(s2.args); var compatibleKeys = keys.filter(function (k, i) { var arg2 = s2.args[k]; var arg1 = s1.args[k]; var oldInd = Object.keys(s1.args).indexOf(k); if (!arg1 && (arg2.defaultValue !== undefined || arg2.isOptional)) { return true; } if (checkIndexes && i !== oldInd) { return false; } if ((arg1 === null || arg1 === void 0 ? void 0 : arg1.type) != arg2.type) return false; if (_configUtils.selectTypes.includes(arg2.type)) { if (!arg1.listValuesType || arg1.listValuesType !== arg2.listValuesType) return false; } if (argVals) { var _argValidErrors$filte; var argVal = argVals.get(k); var argValue = argVal === null || argVal === void 0 ? void 0 : argVal.get("value"); var argValueSrc = argVal === null || argVal === void 0 ? void 0 : argVal.get("valueSrc"); if (argValueSrc && arg2.valueSources && !arg2.valueSources.includes(argValueSrc)) return false; var leftField = null, operator = null, argDef = arg2, asyncListValues = null, isEndValue = true; var _validateValue = (0, _validation.validateValue)(config, leftField, argDef, operator, argValue, argDef.type, argValueSrc, asyncListValues, canFixArgs, isEndValue), _validateValue2 = (0, _slicedToArray2["default"])(_validateValue, 2), _fixedArgVal = _validateValue2[0], argValidErrors = _validateValue2[1]; if (argValidErrors !== null && argValidErrors !== void 0 && (_argValidErrors$filte = argValidErrors.filter(function (e) { return !e.fixed; })) !== null && _argValidErrors$filte !== void 0 && _argValidErrors$filte.length) return false; } return true; }); return compatibleKeys; };