@react-querybuilder/core
Version:
React Query Builder component for constructing queries and filters, with utilities for executing them in various database and evaluation contexts
47 lines (45 loc) • 1.8 kB
JavaScript
const require_isRuleGroup = require('./isRuleGroup-DqAs2x4E.js');
let immer = require("immer");
immer = require_isRuleGroup.__toESM(immer);
//#region src/utils/transformQuery.ts
const remapProperties = (obj, propertyMap, deleteRemappedProperties) => (0, immer.produce)(obj, (draft) => {
for (const [k, v] of Object.entries(propertyMap)) if (v === false) delete draft[k];
else if (!!v && k !== v && k in draft) {
draft[v] = draft[k];
if (deleteRemappedProperties) delete draft[k];
}
});
function transformQuery(query, options = {}) {
const { ruleProcessor = (r) => r, ruleGroupProcessor = (rg) => rg, propertyMap = {}, combinatorMap = {}, operatorMap = {}, omitPath = false, deleteRemappedProperties = true } = options;
const processGroup = (rg) => ({
...ruleGroupProcessor(remapProperties({
...rg,
...require_isRuleGroup.isRuleGroupType(rg) ? { combinator: combinatorMap[rg.combinator] ?? rg.combinator } : {}
}, propertyMap, deleteRemappedProperties)),
...propertyMap["rules"] === false ? null : { [propertyMap["rules"] ?? "rules"]: rg.rules.map((r, idx) => {
const pathObject = omitPath ? null : { path: [...rg.path, idx] };
if (typeof r === "string") return combinatorMap[r] ?? r;
else if (require_isRuleGroup.isRuleGroup(r)) return processGroup({
...r,
...pathObject
});
return ruleProcessor(remapProperties({
...r,
...pathObject,
..."operator" in r ? { operator: operatorMap[r.operator] ?? r.operator } : {}
}, propertyMap, deleteRemappedProperties));
}) }
});
return processGroup({
...query,
...omitPath ? null : { path: [] }
});
}
//#endregion
Object.defineProperty(exports, 'transformQuery', {
enumerable: true,
get: function () {
return transformQuery;
}
});
//# sourceMappingURL=transformQuery-CWDPogO5.js.map