@react-awesome-query-builder/core
Version:
User-friendly query builder for React. Core
84 lines (82 loc) • 5.25 kB
JavaScript
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
import Immutable from "immutable";
import { getFieldConfig, getFieldParts, getFirstField, getOperatorConfig, getFirstOperator } from "./configUtils";
import { isImmutable, isImmutableList } from "./stuff";
import { jsToImmutable } from "./treeUtils";
// @deprecated Use defaultGroupConjunction
export var defaultConjunction = function defaultConjunction(config) {
return defaultGroupConjunction(config);
};
//used for complex operators like proximity
export var defaultOperatorOptions = function defaultOperatorOptions(config, operator, field) {
var operatorConfig = operator ? getOperatorConfig(config, operator, field) : null;
if (!operatorConfig) return null; //new Immutable.Map();
return operatorConfig.options ? new Immutable.Map(operatorConfig.options && operatorConfig.options.defaults || {}) : null;
};
export var defaultGroupConjunction = function defaultGroupConjunction(config) {
var _groupFieldConfig, _groupFieldConfig2;
var groupFieldConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
groupFieldConfig = getFieldConfig(config, groupFieldConfig); // if `groupFieldConfig` is field name, not config
var conjs = ((_groupFieldConfig = groupFieldConfig) === null || _groupFieldConfig === void 0 ? void 0 : _groupFieldConfig.conjunctions) || Object.keys(config.conjunctions);
if (conjs.length == 1) return conjs[0];
// todo: config.settings.defaultGroupConjunction is deprecated, defaultConjunction should be used instead
return ((_groupFieldConfig2 = groupFieldConfig) === null || _groupFieldConfig2 === void 0 ? void 0 : _groupFieldConfig2.defaultConjunction) || config.settings.defaultConjunction || config.settings.defaultGroupConjunction || conjs[0];
};
export var defaultGroupProperties = function defaultGroupProperties(config) {
var groupFieldConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
return new Immutable.Map({
conjunction: defaultGroupConjunction(config, groupFieldConfig),
not: false
});
};
export var getDefaultField = function getDefaultField(config) {
var canGetFirst = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var parentRuleGroupField = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
var defaultField = config.settings.defaultField;
var f = (!parentRuleGroupField ? defaultField : getDefaultSubField(config, parentRuleGroupField)) || canGetFirst && getFirstField(config, parentRuleGroupField) || null;
// if default LHS is func, convert to Immutable
if (f != null && typeof f !== "string" && !isImmutable(f)) {
f = jsToImmutable(f);
}
return f;
};
export var getDefaultSubField = function getDefaultSubField(config) {
var _config$settings;
var parentRuleGroupField = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
if (!parentRuleGroupField) return null;
var fieldSeparator = (config === null || config === void 0 || (_config$settings = config.settings) === null || _config$settings === void 0 ? void 0 : _config$settings.fieldSeparator) || ".";
var parentRuleGroupConfig = getFieldConfig(config, parentRuleGroupField);
var f = parentRuleGroupConfig === null || parentRuleGroupConfig === void 0 ? void 0 : parentRuleGroupConfig.defaultField;
if (f) {
f = [].concat(_toConsumableArray(getFieldParts(parentRuleGroupField)), [f]).join(fieldSeparator);
}
return f;
};
export var getDefaultFieldSrc = function getDefaultFieldSrc(config) {
var _config$settings$fiel;
var canGetFirst = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
return canGetFirst && ((_config$settings$fiel = config.settings.fieldSources) === null || _config$settings$fiel === void 0 ? void 0 : _config$settings$fiel[0]) || "field";
};
export var getDefaultOperator = function getDefaultOperator(config, field) {
var canGetFirst = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
var fieldConfig = getFieldConfig(config, field);
var fieldOperators = (fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.operators) || [];
var globalDefaultOperator = config.settings.defaultOperator;
if (globalDefaultOperator && !fieldOperators.includes(globalDefaultOperator)) globalDefaultOperator = null;
var fieldDefaultOperator = fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.defaultOperator;
var fieldOwnDefaultOperator = fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.ownDefaultOperator;
var firstOperator = canGetFirst ? getFirstOperator(config, field) : null;
var op = fieldOwnDefaultOperator || globalDefaultOperator || fieldDefaultOperator || firstOperator;
return op;
};
export var createListWithOneElement = function createListWithOneElement(el) {
if (isImmutableList(el)) return el; // already Immutable list
return createListFromArray([el]);
};
export var createListFromArray = function createListFromArray(arr) {
if (isImmutableList(arr)) return arr; // already Immutable list
return new Immutable.List(arr);
};
export var emptyProperties = function emptyProperties() {
return new Immutable.Map();
};