@react-querybuilder/core 8.20.1 → 8.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/README.md +4 -0
  2. package/dist/cjs/react-querybuilder_core.cjs.development.d.ts +2261 -2113
  3. package/dist/cjs/react-querybuilder_core.cjs.development.js +323 -26
  4. package/dist/cjs/react-querybuilder_core.cjs.development.js.map +1 -1
  5. package/dist/cjs/react-querybuilder_core.cjs.production.d.ts +2261 -2113
  6. package/dist/cjs/react-querybuilder_core.cjs.production.js +1 -1
  7. package/dist/cjs/react-querybuilder_core.cjs.production.js.map +1 -1
  8. package/dist/{convertQuery-BJKNgecE.js → convertQuery-Cw76XFIn.js} +8 -8
  9. package/dist/{convertQuery-BJKNgecE.js.map → convertQuery-Cw76XFIn.js.map} +1 -1
  10. package/dist/{convertQuery-J1CaoDxe.mjs → convertQuery-D_4J7E-Z.mjs} +2 -2
  11. package/dist/{convertQuery-J1CaoDxe.mjs.map → convertQuery-D_4J7E-Z.mjs.map} +1 -1
  12. package/dist/formatQuery.d.mts +499 -459
  13. package/dist/formatQuery.d.ts +499 -459
  14. package/dist/formatQuery.js +173 -91
  15. package/dist/formatQuery.js.map +1 -1
  16. package/dist/formatQuery.mjs +100 -23
  17. package/dist/formatQuery.mjs.map +1 -1
  18. package/dist/import-BVdxeIBO.d.mts +26 -0
  19. package/dist/import-Ddc3d_8q.d.ts +26 -0
  20. package/dist/{index-DlVg-QXo.d.mts → index-BSwFvkeI.d.mts} +679 -648
  21. package/dist/{index-DlVg-QXo.d.ts → index-BSwFvkeI.d.ts} +679 -648
  22. package/dist/{objectUtils-DBJI82bl.js → isRuleGroup-0JNiQgLg.js} +1 -26
  23. package/dist/isRuleGroup-0JNiQgLg.js.map +1 -0
  24. package/dist/{objectUtils-ZvPkF6u6.mjs → isRuleGroup-CqLThsbu.mjs} +2 -15
  25. package/dist/isRuleGroup-CqLThsbu.mjs.map +1 -0
  26. package/dist/objectUtils-Cr02aGxb.js +27 -0
  27. package/dist/objectUtils-Cr02aGxb.js.map +1 -0
  28. package/dist/objectUtils-DBlmJgBf.mjs +16 -0
  29. package/dist/objectUtils-DBlmJgBf.mjs.map +1 -0
  30. package/dist/parseCEL.d.mts +64 -30
  31. package/dist/parseCEL.d.ts +64 -30
  32. package/dist/parseCEL.js +91 -12
  33. package/dist/parseCEL.js.map +1 -1
  34. package/dist/parseCEL.mjs +85 -8
  35. package/dist/parseCEL.mjs.map +1 -1
  36. package/dist/parseCypher.d.mts +24 -25
  37. package/dist/parseCypher.d.ts +24 -25
  38. package/dist/parseGremlin.d.mts +18 -19
  39. package/dist/parseGremlin.d.ts +18 -19
  40. package/dist/parseJSONata.d.mts +207 -20
  41. package/dist/parseJSONata.d.ts +207 -20
  42. package/dist/parseJSONata.js +92 -7
  43. package/dist/parseJSONata.js.map +1 -1
  44. package/dist/parseJSONata.mjs +80 -4
  45. package/dist/parseJSONata.mjs.map +1 -1
  46. package/dist/parseJsonLogic.d.mts +51 -18
  47. package/dist/parseJsonLogic.d.ts +51 -18
  48. package/dist/parseJsonLogic.js +95 -34
  49. package/dist/parseJsonLogic.js.map +1 -1
  50. package/dist/parseJsonLogic.mjs +65 -6
  51. package/dist/parseJsonLogic.mjs.map +1 -1
  52. package/dist/parseMongoDB.d.mts +89 -58
  53. package/dist/parseMongoDB.d.ts +89 -58
  54. package/dist/parseMongoDB.js +140 -15
  55. package/dist/parseMongoDB.js.map +1 -1
  56. package/dist/parseMongoDB.mjs +128 -5
  57. package/dist/parseMongoDB.mjs.map +1 -1
  58. package/dist/parseSPARQL.d.mts +17 -18
  59. package/dist/parseSPARQL.d.ts +17 -18
  60. package/dist/parseSPARQL.js.map +1 -1
  61. package/dist/parseSPARQL.mjs.map +1 -1
  62. package/dist/parseSQL.d.mts +266 -18
  63. package/dist/parseSQL.d.ts +266 -18
  64. package/dist/parseSQL.js +163 -10
  65. package/dist/parseSQL.js.map +1 -1
  66. package/dist/parseSQL.mjs +149 -7
  67. package/dist/parseSQL.mjs.map +1 -1
  68. package/dist/parseSpEL.d.mts +193 -19
  69. package/dist/parseSpEL.d.ts +193 -19
  70. package/dist/parseSpEL.js +166 -7
  71. package/dist/parseSpEL.js.map +1 -1
  72. package/dist/parseSpEL.mjs +142 -6
  73. package/dist/parseSpEL.mjs.map +1 -1
  74. package/dist/{prepareQueryObjects-DaAXX792.js → prepareQueryObjects-C2-kTZvR.js} +6 -6
  75. package/dist/prepareQueryObjects-C2-kTZvR.js.map +1 -0
  76. package/dist/{prepareQueryObjects-Cd_tt4oy.mjs → prepareQueryObjects-Q18lHCKl.mjs} +4 -4
  77. package/dist/prepareQueryObjects-Q18lHCKl.mjs.map +1 -0
  78. package/dist/query-builder-layout.css.map +1 -1
  79. package/dist/query-builder.css.map +1 -1
  80. package/dist/react-querybuilder_core.d.mts +2261 -2113
  81. package/dist/react-querybuilder_core.legacy-esm.d.ts +2261 -2113
  82. package/dist/react-querybuilder_core.legacy-esm.js +339 -44
  83. package/dist/react-querybuilder_core.legacy-esm.js.map +1 -1
  84. package/dist/react-querybuilder_core.mjs +313 -27
  85. package/dist/react-querybuilder_core.mjs.map +1 -1
  86. package/dist/react-querybuilder_core.production.d.mts +2261 -2113
  87. package/dist/react-querybuilder_core.production.mjs +1 -1
  88. package/dist/react-querybuilder_core.production.mjs.map +1 -1
  89. package/dist/styles/_layout.scss +4 -10
  90. package/dist/transformQuery.d.mts +91 -92
  91. package/dist/transformQuery.d.ts +91 -92
  92. package/dist/transformQuery.js +4 -3
  93. package/dist/transformQuery.js.map +1 -1
  94. package/dist/transformQuery.mjs +2 -1
  95. package/dist/transformQuery.mjs.map +1 -1
  96. package/dist/{utils-BpaOtylk.js → utils-DEwV7F6B.js} +108 -12
  97. package/dist/utils-DEwV7F6B.js.map +1 -0
  98. package/dist/{utils-CJRGiPb-.mjs → utils-Dt0D_DMV.mjs} +69 -3
  99. package/dist/utils-Dt0D_DMV.mjs.map +1 -0
  100. package/package.json +15 -14
  101. package/dist/import-Qs1-kgv5.d.ts +0 -27
  102. package/dist/import-ShTj5IdB.d.mts +0 -27
  103. package/dist/objectUtils-DBJI82bl.js.map +0 -1
  104. package/dist/objectUtils-ZvPkF6u6.mjs.map +0 -1
  105. package/dist/prepareQueryObjects-Cd_tt4oy.mjs.map +0 -1
  106. package/dist/prepareQueryObjects-DaAXX792.js.map +0 -1
  107. package/dist/utils-BpaOtylk.js.map +0 -1
  108. package/dist/utils-CJRGiPb-.mjs.map +0 -1
@@ -322,6 +322,50 @@ const defaultOperatorNegationMap = {
322
322
  null: "notNull"
323
323
  };
324
324
  /**
325
+ * Relational/comparison operators (`=`, `!=`, `<`, `>`, `<=`, `>=`).
326
+ *
327
+ * @group Defaults
328
+ */
329
+ const relationalOperators = /* @__PURE__ */ new Set([
330
+ "=",
331
+ "!=",
332
+ "<",
333
+ ">",
334
+ "<=",
335
+ ">="
336
+ ]);
337
+ /**
338
+ * Substring/text-matching operators (`contains`, `beginsWith`, `endsWith`, and negations).
339
+ *
340
+ * @group Defaults
341
+ */
342
+ const substringOperators = /* @__PURE__ */ new Set([
343
+ "contains",
344
+ "beginsWith",
345
+ "endsWith",
346
+ "doesNotContain",
347
+ "doesNotBeginWith",
348
+ "doesNotEndWith"
349
+ ]);
350
+ /**
351
+ * Null-check operators (`null`, `notNull`).
352
+ *
353
+ * @group Defaults
354
+ */
355
+ const nullOperators = /* @__PURE__ */ new Set(["null", "notNull"]);
356
+ /**
357
+ * List-membership operators (`in`, `notIn`).
358
+ *
359
+ * @group Defaults
360
+ */
361
+ const inOperators = /* @__PURE__ */ new Set(["in", "notIn"]);
362
+ /**
363
+ * Range operators (`between`, `notBetween`).
364
+ *
365
+ * @group Defaults
366
+ */
367
+ const betweenOperators = /* @__PURE__ */ new Set(["between", "notBetween"]);
368
+ /**
325
369
  * Default combinator list.
326
370
  *
327
371
  * @group Defaults
@@ -1175,6 +1219,51 @@ const mapSQLOperator = (rqbOperator) => {
1175
1219
  }
1176
1220
  };
1177
1221
  /**
1222
+ * Returns a preset-aware SQL string-concatenation function. Emits `CONCAT(a, b, ...)` when
1223
+ * `concatOperator` is `"CONCAT"` (case-insensitive), otherwise joins with the infix operator
1224
+ * (e.g. `a || b`, `a + b`).
1225
+ *
1226
+ * @group Export
1227
+ */
1228
+ const getSQLConcat = (concatOperator = "||") => (...values) => concatOperator.toUpperCase() === "CONCAT" ? `CONCAT(${values.join(", ")})` : values.join(` ${concatOperator} `);
1229
+ /**
1230
+ * Returns the `[prefix, suffix]` `LIKE` wildcards for a string-match operator (e.g. `contains`
1231
+ * → `['%', '%']`, `beginsWith` → `['', '%']`, `endsWith` → `['%', '']`). Unknown operators
1232
+ * yield `['', '']`.
1233
+ *
1234
+ * @group Export
1235
+ */
1236
+ const getLikeWildcards = (operatorLC) => {
1237
+ switch (operatorLC) {
1238
+ case "contains":
1239
+ case "doesnotcontain": return ["%", "%"];
1240
+ case "beginswith":
1241
+ case "doesnotbeginwith": return ["", "%"];
1242
+ case "endswith":
1243
+ case "doesnotendwith": return ["%", ""];
1244
+ default: return ["", ""];
1245
+ }
1246
+ };
1247
+ /**
1248
+ * Wraps an already-serialized SQL fragment (a quoted field name or an expression) with the
1249
+ * `LIKE` wildcards for the given (lowercase) string-match operator, concatenating the literal
1250
+ * `%` markers via the preset-aware {@link getSQLConcat}. Returns the fragment untouched for
1251
+ * operators without wildcards.
1252
+ *
1253
+ * @group Export
1254
+ */
1255
+ const wrapLikeFragment = (fragment, operatorLC, { concatOperator = "||", quoteValuesWith, wrapValueWith = ["", ""] } = {}) => {
1256
+ const [pre, post] = getLikeWildcards(operatorLC);
1257
+ const quoteChar = quoteValuesWith || `'`;
1258
+ const quote = (p) => `${wrapValueWith[0]}${quoteChar}${p}${quoteChar}${wrapValueWith[1]}`;
1259
+ const parts = [
1260
+ pre && quote(pre),
1261
+ fragment,
1262
+ post && quote(post)
1263
+ ].filter(Boolean);
1264
+ return parts.length > 1 ? getSQLConcat(concatOperator)(...parts) : fragment;
1265
+ };
1266
+ /**
1178
1267
  * Maps a (lowercase) {@link DefaultOperatorName} to a MongoDB operator.
1179
1268
  *
1180
1269
  * @group Export
@@ -1338,6 +1427,27 @@ const normalizeConstituentWordOrder = (input) => {
1338
1427
  return result;
1339
1428
  };
1340
1429
  /**
1430
+ * Prefixes a named-parameter value with the given `paramPrefix` unless the value already
1431
+ * begins with it. Used by {@link formatQuery} to render rules whose `valueSource` is
1432
+ * `"parameter"` (e.g. `"p1"` with prefix `":"` → `":p1"`; `":p1"` → `":p1"`).
1433
+ *
1434
+ * @group Export
1435
+ */
1436
+ const withParamPrefix = (value, paramPrefix = ":") => {
1437
+ const v = `${value ?? ""}`;
1438
+ return paramPrefix && v.startsWith(paramPrefix) ? v : `${paramPrefix}${v}`;
1439
+ };
1440
+ /**
1441
+ * Strips a leading `paramPrefix` from a named-parameter value if present. Inverse of
1442
+ * {@link withParamPrefix}; used to normalize parameter names for validation/lookup.
1443
+ *
1444
+ * @group Export
1445
+ */
1446
+ const stripParamPrefix = (value, paramPrefix = ":") => {
1447
+ const v = `${value ?? ""}`;
1448
+ return paramPrefix && v.startsWith(paramPrefix) ? v.slice(paramPrefix.length) : v;
1449
+ };
1450
+ /**
1341
1451
  * Default translations used by {@link formatQuery} for "natural_language" format.
1342
1452
  *
1343
1453
  * @group Export
@@ -1470,7 +1580,7 @@ const escapeDoubleQuotes$1 = (v, escapeQuotes) => typeof v !== "string" || !esca
1470
1580
  const defaultRuleProcessorCEL = (rule, opts = {}) => {
1471
1581
  const { escapeQuotes, parseNumbers, preserveValueOrder } = opts;
1472
1582
  const { field, operator, value, valueSource } = rule;
1473
- const valueIsField = valueSource === "field";
1583
+ const valueIsField = valueSource === "field" || valueSource === "parameter";
1474
1584
  const operatorTL = lc(operator === "=" ? "==" : operator);
1475
1585
  const useBareValue = typeof value === "number" || typeof value === "boolean" || typeof value === "bigint" || shouldRenderAsNumber(value, parseNumbers);
1476
1586
  const matchEval = processMatchMode(rule);
@@ -1791,7 +1901,7 @@ const escapeSingleQuotes$2 = (v, escapeQuotes) => typeof v !== "string" || !esca
1791
1901
  const defaultRuleProcessorSpEL = (rule, opts = {}) => {
1792
1902
  const { field, operator, value, valueSource } = rule;
1793
1903
  const { escapeQuotes, parseNumbers, preserveValueOrder } = opts;
1794
- const valueIsField = valueSource === "field";
1904
+ const valueIsField = valueSource === "field" || valueSource === "parameter";
1795
1905
  const operatorTL = lc(operator === "=" ? "==" : operator);
1796
1906
  const useBareValue = typeof value === "number" || typeof value === "boolean" || typeof value === "bigint" || shouldRenderAsNumber(value, parseNumbers);
1797
1907
  const matchEval = processMatchMode(rule);
@@ -1825,11 +1935,20 @@ const defaultRuleProcessorSpEL = (rule, opts = {}) => {
1825
1935
  case ">":
1826
1936
  case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? trimIfString(value) : `'${escapeSingleQuotes$2(value, escapeQuotes)}'`}`;
1827
1937
  case "contains":
1828
- case "doesnotcontain": return wrapInNegation(`${field} matches ${valueIsField || useBareValue ? trimIfString(value) : `'${escapeSingleQuotes$2(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
1938
+ case "doesnotcontain": {
1939
+ const valueTL = valueIsField ? `'.*'.concat(${trimIfString(value)}).concat('.*')` : `'.*${escapeSingleQuotes$2(value, escapeQuotes)}.*'`;
1940
+ return wrapInNegation(`${field} matches ${valueTL}`, shouldNegate$1(operatorTL));
1941
+ }
1829
1942
  case "beginswith":
1830
- case "doesnotbeginwith": return wrapInNegation(`${field} matches ${valueIsField ? `'^'.concat(${trimIfString(value)})` : `'${typeof value === "string" && !value.startsWith("^") || useBareValue ? "^" : ""}${escapeSingleQuotes$2(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
1943
+ case "doesnotbeginwith": {
1944
+ const valueTL = valueIsField ? `'^'.concat(${trimIfString(value)}).concat('.*')` : `'${typeof value === "string" && !value.startsWith("^") || useBareValue ? "^" : ""}${escapeSingleQuotes$2(value, escapeQuotes)}.*'`;
1945
+ return wrapInNegation(`${field} matches ${valueTL}`, shouldNegate$1(operatorTL));
1946
+ }
1831
1947
  case "endswith":
1832
- case "doesnotendwith": return wrapInNegation(`${field} matches ${valueIsField ? `${trimIfString(value)}.concat('$')` : `'${escapeSingleQuotes$2(value, escapeQuotes)}${typeof value === "string" && !value.endsWith("$") || useBareValue ? "$" : ""}'`}`, shouldNegate$1(operatorTL));
1948
+ case "doesnotendwith": {
1949
+ const valueTL = valueIsField ? `'.*'.concat(${trimIfString(value)}).concat('$')` : `'.*${escapeSingleQuotes$2(value, escapeQuotes)}${typeof value === "string" && !value.endsWith("$") || useBareValue ? "$" : ""}'`;
1950
+ return wrapInNegation(`${field} matches ${valueTL}`, shouldNegate$1(operatorTL));
1951
+ }
1833
1952
  case "null": return `${field} == null`;
1834
1953
  case "notnull": return `${field} != null`;
1835
1954
  case "in":
@@ -1867,7 +1986,35 @@ const escapeStringValueQuotes$1 = (v, quoteChar, escapeQuotes) => escapeQuotes &
1867
1986
  *
1868
1987
  * @group Export
1869
1988
  */
1870
- const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQuotes, parseNumbers, preserveValueOrder, quoteFieldNamesWith, quoteValuesWith, concatOperator = "||", fieldIdentifierSeparator, wrapValueWith = ["", ""], translations } = {}) => {
1989
+ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQuotes, parseNumbers, preserveValueOrder, quoteFieldNamesWith, quoteValuesWith, concatOperator = "||", fieldIdentifierSeparator, paramPrefix, wrapValueWith = ["", ""], translations } = {}) => {
1990
+ if (valueSource === "parameter") {
1991
+ const operatorLowerCase = lc(operator);
1992
+ if (operatorLowerCase === "between" || operatorLowerCase === "notbetween") {
1993
+ const valueAsArray = toArray(value, { retainEmptyStrings: true });
1994
+ if (valueAsArray.length < 2 || !isValidValue(valueAsArray[0]) || !isValidValue(valueAsArray[1])) return "";
1995
+ const [first, second] = valueAsArray;
1996
+ return [withParamPrefix(first, paramPrefix), withParamPrefix(second, paramPrefix)].join(` ${translations?.betweenAnd ?? translations?.and ?? "and"} `);
1997
+ }
1998
+ if (operatorLowerCase === "in" || operatorLowerCase === "notin") {
1999
+ const valueAsArray = toArray(value);
2000
+ if (valueAsArray.length === 0) return "";
2001
+ return `(${valueAsArray.map((v) => withParamPrefix(v, paramPrefix)).join(", ")})`;
2002
+ }
2003
+ const paramRef = withParamPrefix(value, paramPrefix);
2004
+ switch (operatorLowerCase) {
2005
+ case "contains":
2006
+ case "doesnotcontain":
2007
+ case "beginswith":
2008
+ case "doesnotbeginwith":
2009
+ case "endswith":
2010
+ case "doesnotendwith": return wrapLikeFragment(paramRef, operatorLowerCase, {
2011
+ concatOperator,
2012
+ quoteValuesWith,
2013
+ wrapValueWith
2014
+ });
2015
+ }
2016
+ return paramRef;
2017
+ }
1871
2018
  const valueIsField = valueSource === "field";
1872
2019
  const operatorLowerCase = lc(operator);
1873
2020
  const quoteChar = quoteValuesWith || "'";
@@ -1878,7 +2025,11 @@ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQ
1878
2025
  quoteFieldNamesWith,
1879
2026
  fieldIdentifierSeparator
1880
2027
  });
1881
- const concat = (...values) => concatOperator.toUpperCase() === "CONCAT" ? `CONCAT(${values.join(", ")})` : values.join(` ${concatOperator} `);
2028
+ const likeOpts = {
2029
+ concatOperator,
2030
+ quoteValuesWith,
2031
+ wrapValueWith
2032
+ };
1882
2033
  switch (operatorLowerCase) {
1883
2034
  case "null":
1884
2035
  case "notnull": return "";
@@ -1905,11 +2056,11 @@ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQ
1905
2056
  return (valueIsField ? valsOneAndTwoOnly.map((v) => wrapFieldName(v)) : valsOneAndTwoOnly.every((v) => shouldRenderAsNumber(v, parseNumbers)) ? valsOneAndTwoOnly.map((v) => parseNumber(v, { parseNumbers: "strict" })) : valsOneAndTwoOnly.map((v) => wrapAndEscape(v))).join(` ${translations?.betweenAnd ?? translations?.and ?? "and"} `);
1906
2057
  }
1907
2058
  case "contains":
1908
- case "doesnotcontain": return valueIsField ? concat(quoteValue("%"), wrapFieldName(value), quoteValue("%")) : quoteValue(`%${escapeValue(value)}%`);
2059
+ case "doesnotcontain": return valueIsField ? wrapLikeFragment(wrapFieldName(value), operatorLowerCase, likeOpts) : quoteValue(`%${escapeValue(value)}%`);
1909
2060
  case "beginswith":
1910
- case "doesnotbeginwith": return valueIsField ? concat(wrapFieldName(value), quoteValue("%")) : quoteValue(`${escapeValue(value)}%`);
2061
+ case "doesnotbeginwith": return valueIsField ? wrapLikeFragment(wrapFieldName(value), operatorLowerCase, likeOpts) : quoteValue(`${escapeValue(value)}%`);
1911
2062
  case "endswith":
1912
- case "doesnotendwith": return valueIsField ? concat(quoteValue("%"), wrapFieldName(value)) : quoteValue(`%${escapeValue(value)}`);
2063
+ case "doesnotendwith": return valueIsField ? wrapLikeFragment(wrapFieldName(value), operatorLowerCase, likeOpts) : quoteValue(`%${escapeValue(value)}`);
1913
2064
  }
1914
2065
  if (typeof value === "boolean") return value ? "TRUE" : "FALSE";
1915
2066
  return valueIsField ? wrapFieldName(value) : shouldRenderAsNumber(value, parseNumbers) ? `${trimIfString(value)}` : `${wrapAndEscape(value)}`;
@@ -2657,7 +2808,7 @@ const defaultRuleGroupProcessorTanStackDB = (ruleGroup, options) => (refs) => {
2657
2808
  };
2658
2809
  //#endregion
2659
2810
  //#region src/utils/formatQuery/defaultRuleGroupProcessorDiagnostics.ts
2660
- const numericInputTypes = new Set([
2811
+ const numericInputTypes = /* @__PURE__ */ new Set([
2661
2812
  "number",
2662
2813
  "range",
2663
2814
  "bigint"
@@ -3481,7 +3632,10 @@ const defaultRuleProcessorJsonLogic = (rule, options = {}) => {
3481
3632
  case "null":
3482
3633
  case "notnull": return { [`${operatorLC === "notnull" ? "!" : "="}=`]: [fieldObject, null] };
3483
3634
  case "in":
3484
- case "notin": return negateIfNotOp(operatorLC, { in: [fieldObject, toArray(value).map((v) => fieldOrNumberRenderer(v))] });
3635
+ case "notin": {
3636
+ const valueAsArray = toArray(value).map((v) => fieldOrNumberRenderer(v));
3637
+ return negateIfNotOp(operatorLC, { in: [fieldObject, valueAsArray] });
3638
+ }
3485
3639
  case "between":
3486
3640
  case "notbetween": {
3487
3641
  const valueAsArray = toArray(value);
@@ -3512,11 +3666,20 @@ const defaultRuleProcessorJsonLogic = (rule, options = {}) => {
3512
3666
  return false;
3513
3667
  }
3514
3668
  case "contains":
3515
- case "doesnotcontain": return negateIfNotOp(operatorLC, { in: [fieldOrNumberRenderer(value), fieldObject] });
3669
+ case "doesnotcontain": {
3670
+ const jsonRule = { in: [fieldOrNumberRenderer(value), fieldObject] };
3671
+ return negateIfNotOp(operatorLC, jsonRule);
3672
+ }
3516
3673
  case "beginswith":
3517
- case "doesnotbeginwith": return negateIfNotOp(operatorLC, { startsWith: [fieldObject, fieldOrNumberRenderer(value)] });
3674
+ case "doesnotbeginwith": {
3675
+ const jsonRule = { startsWith: [fieldObject, fieldOrNumberRenderer(value)] };
3676
+ return negateIfNotOp(operatorLC, jsonRule);
3677
+ }
3518
3678
  case "endswith":
3519
- case "doesnotendwith": return negateIfNotOp(operatorLC, { endsWith: [fieldObject, fieldOrNumberRenderer(value)] });
3679
+ case "doesnotendwith": {
3680
+ const jsonRule = { endsWith: [fieldObject, fieldOrNumberRenderer(value)] };
3681
+ return negateIfNotOp(operatorLC, jsonRule);
3682
+ }
3520
3683
  }
3521
3684
  return false;
3522
3685
  };
@@ -3550,7 +3713,10 @@ const defaultRuleProcessorLDAP = (rule, options = {}) => {
3550
3713
  case "null":
3551
3714
  case "notnull": return negateIf(`(${field}=*)`, operatorLC === "notnull");
3552
3715
  case "in":
3553
- case "notin": return negateIf(`(|${toArray(value).map((val) => `(${field}=${ldapEscape(val)})`).join("")})`, operatorLC === "notin");
3716
+ case "notin": {
3717
+ const valueAsArray = toArray(value);
3718
+ return negateIf(`(|${valueAsArray.map((val) => `(${field}=${ldapEscape(val)})`).join("")})`, operatorLC === "notin");
3719
+ }
3554
3720
  case "between":
3555
3721
  case "notbetween": {
3556
3722
  const valueAsArray = toArray(value);
@@ -3861,7 +4027,22 @@ const defaultRuleProcessorParameterized = (rule, opts, meta) => {
3861
4027
  const [qPre, qPost] = quoteFieldNamesWith;
3862
4028
  if ((sqlOperatorLowerCase === "in" || sqlOperatorLowerCase === "not in" || sqlOperatorLowerCase === "between" || sqlOperatorLowerCase === "not between") && !value) return finalize("");
3863
4029
  else if (sqlOperatorLowerCase === "is null" || sqlOperatorLowerCase === "is not null") return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator}`);
3864
- else if (rule.valueSource === "field") return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator} ${value}`.trim());
4030
+ else if (rule.valueSource === "parameter") {
4031
+ const registerParam = (v) => {
4032
+ const ref = withParamPrefix(v, paramPrefix);
4033
+ if (!parameterized) paramsNamed[paramsKeepPrefix ? ref : stripParamPrefix(v, paramPrefix)] = null;
4034
+ return ref;
4035
+ };
4036
+ if (sqlOperatorLowerCase === "between" || sqlOperatorLowerCase === "not between") {
4037
+ const [first, second] = toArray(rule.value, { retainEmptyStrings: true }).slice(0, 2);
4038
+ return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator} ${registerParam(first)} and ${registerParam(second)}`.trim());
4039
+ }
4040
+ if (sqlOperatorLowerCase === "in" || sqlOperatorLowerCase === "not in") {
4041
+ const splitValue = toArray(rule.value);
4042
+ return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator} (${splitValue.map((v) => registerParam(v)).join(", ")})`);
4043
+ }
4044
+ return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator} ${wrapLikeFragment(registerParam(rule.value), lc(rule.operator), { concatOperator })}`.trim());
4045
+ } else if (rule.valueSource === "field") return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator} ${value}`.trim());
3865
4046
  else if (sqlOperatorLowerCase === "in" || sqlOperatorLowerCase === "not in") {
3866
4047
  const splitValue = toArray(rule.value);
3867
4048
  if (parameterized) {
@@ -4053,7 +4234,9 @@ const defaultRuleProcessorSPARQL = (rule, opts = {}) => {
4053
4234
  if (typeof v === "bigint") return String(v);
4054
4235
  if (valueIsField) return sparqlVar(trimIfString(v));
4055
4236
  if (typeof v === "number" || shouldRenderAsNumber(v, parseNumbers)) return trimIfString(v);
4237
+ /* v8 ignore start -- @preserve */
4056
4238
  const s = typeof v === "string" ? v : JSON.stringify(v) ?? "";
4239
+ /* v8 ignore stop -- @preserve */
4057
4240
  if (s.startsWith("?") || s.startsWith("<") || s.includes(":")) return s;
4058
4241
  return `"${escapeDoubleQuotes(s, escapeQuotes)}"`;
4059
4242
  };
@@ -4297,7 +4480,7 @@ const defaultFormatQueryOptions = {
4297
4480
  translations: {},
4298
4481
  operatorMap: {}
4299
4482
  };
4300
- const valueProcessorCanActAsRuleProcessor = new Set([
4483
+ const valueProcessorCanActAsRuleProcessor = /* @__PURE__ */ new Set([
4301
4484
  "cel",
4302
4485
  "drizzle",
4303
4486
  "elasticsearch",
@@ -4311,7 +4494,7 @@ const valueProcessorCanActAsRuleProcessor = new Set([
4311
4494
  "spel",
4312
4495
  "tanstack_db"
4313
4496
  ]);
4314
- const sqlFormats = new Set([
4497
+ const sqlFormats = /* @__PURE__ */ new Set([
4315
4498
  "sql",
4316
4499
  "parameterized",
4317
4500
  "parameterized_named",
@@ -4376,6 +4559,10 @@ function formatQuery(ruleGroup, optionParam = {}) {
4376
4559
  if (typeof field.validator === "function") fieldValidator = field.validator;
4377
4560
  }
4378
4561
  }
4562
+ if (rule.valueSource === "parameter" && typeof optObj.getParameters === "function") {
4563
+ const fieldData = getOption(fields, rule.field);
4564
+ if (!new Set(toFlatOptionArray(toFullOptionList(optObj.getParameters(rule.field, rule.operator, { fieldData }))).map((p) => stripParamPrefix(p.value, optObj.paramPrefix))).has(stripParamPrefix(rule.value, optObj.paramPrefix))) validationResult = false;
4565
+ }
4379
4566
  return [validationResult, fieldValidator];
4380
4567
  };
4381
4568
  const finalOptions = {
@@ -4592,7 +4779,7 @@ if (cryptoModule) {
4592
4779
  if (typeof cryptoModule.randomUUID === "function") generateID = () => cryptoModule.randomUUID();
4593
4780
  else if (typeof cryptoModule.getRandomValues === "function") {
4594
4781
  const position19vals = "89ab";
4595
- const container = new Uint32Array(32);
4782
+ const container = /* @__PURE__ */ new Uint32Array(32);
4596
4783
  generateID = () => {
4597
4784
  cryptoModule.getRandomValues(container);
4598
4785
  let id = (container[0] % 16).toString(16);
@@ -4634,6 +4821,45 @@ const getMatchModesUtil = (fieldData, getMatchModes) => {
4634
4821
  }) ?? [];
4635
4822
  };
4636
4823
  //#endregion
4824
+ //#region src/utils/getRuleDefaultValue.ts
4825
+ const getFirstOptionsFrom = (opts, r, listsAsArrays) => {
4826
+ const firstOption = getFirstOption(opts);
4827
+ if (r.operator === "between" || r.operator === "notBetween") {
4828
+ const valueAsArray = [firstOption, firstOption];
4829
+ return listsAsArrays ? valueAsArray : joinWith(valueAsArray.map((v) => v ?? ""), ",");
4830
+ }
4831
+ return firstOption;
4832
+ };
4833
+ /**
4834
+ * Computes the default `value` for a rule given its `field`/`operator`/`valueSource`, mirroring
4835
+ * the precedence the {@link react-querybuilder!QueryBuilder QueryBuilder} applies: a field's
4836
+ * `defaultValue`, then a `getDefaultValue` override, then a value derived from the field/operator's
4837
+ * value list and editor type (first option for `select`/`radio`, `false` for `checkbox`, paired for
4838
+ * `between`/`notBetween`), or a comparator-valid field when `valueSource` is `'field'`. Falls back
4839
+ * to `''`.
4840
+ *
4841
+ * @group Option Lists
4842
+ */
4843
+ const getRuleDefaultValue = (rule, options) => {
4844
+ const { fieldData, fields, getValueEditorType, getValues, getDefaultValue, getParameters, listsAsArrays } = options;
4845
+ if (fieldData?.defaultValue !== void 0 && fieldData.defaultValue !== null) return fieldData.defaultValue;
4846
+ else if (getDefaultValue) return getDefaultValue(rule, { fieldData });
4847
+ let value = "";
4848
+ const values = getValues(rule.field, rule.operator, { fieldData });
4849
+ if (rule.valueSource === "field") {
4850
+ const filteredFields = filterFieldsByComparator(fieldData, fields, rule.operator);
4851
+ value = filteredFields.length > 0 ? getFirstOptionsFrom(filteredFields, rule, listsAsArrays) : "";
4852
+ } else if (rule.valueSource === "parameter") {
4853
+ const parameters = getParameters ? getParameters(rule.field, rule.operator, { fieldData }) : null;
4854
+ value = parameters && parameters.length > 0 ? getFirstOption(parameters) : "";
4855
+ } else if (values.length > 0) {
4856
+ const editorType = getValueEditorType(rule.field, rule.operator, { fieldData });
4857
+ if (editorType === "multiselect") value = listsAsArrays ? [] : "";
4858
+ else if (editorType === "select" || editorType === "radio") value = getFirstOptionsFrom(values, rule, listsAsArrays);
4859
+ } else if (getValueEditorType(rule.field, rule.operator, { fieldData }) === "checkbox") value = false;
4860
+ return value;
4861
+ };
4862
+ //#endregion
4637
4863
  //#region src/utils/getValidationClassNames.ts
4638
4864
  /**
4639
4865
  * Gets the standard classname for valid or invalid components
@@ -4884,21 +5110,81 @@ const addInPlace = (query, ruleOrGroup, parentPathOrID, options = {}) => {
4884
5110
  return query;
4885
5111
  };
4886
5112
  /**
4887
- * Updates a property of a rule or group within a query without mutating the original query.
5113
+ * Relative order in which properties are applied during a multi-property update.
5114
+ * Lower ranks apply first; `value` applies last so an explicitly-provided value
5115
+ * is never clobbered by a reset triggered by a `field`/`operator`/`valueSource`
5116
+ * change. Unranked properties default to `3` (between `valueSource` and `value`).
5117
+ */
5118
+ const updatePropRank = {
5119
+ field: 0,
5120
+ operator: 1,
5121
+ valueSource: 2,
5122
+ value: 4
5123
+ };
5124
+ /** Stable-sorts `[prop, value]` entries by {@link updatePropRank}. */
5125
+ const orderUpdateEntries = (entries) => entries.sort((x, y) => (updatePropRank[x[0]] ?? 3) - (updatePropRank[y[0]] ?? 3));
5126
+ /**
5127
+ * Normalizes the variadic {@link update}/{@link updateInPlace} arguments (single
5128
+ * prop+value, parallel arrays, or property map) into a canonically-ordered list
5129
+ * of `[prop, value]` entries plus the target path/ID and options.
5130
+ */
5131
+ const normalizeUpdateArgs = (a, b, c, d) => {
5132
+ if (typeof a === "string") return {
5133
+ entries: [[a, b]],
5134
+ pathOrID: c,
5135
+ options: d ?? {}
5136
+ };
5137
+ if (Array.isArray(a)) {
5138
+ const values = b;
5139
+ return {
5140
+ entries: orderUpdateEntries(a.map((prop, i) => [prop, values[i]])),
5141
+ pathOrID: c,
5142
+ options: d ?? {}
5143
+ };
5144
+ }
5145
+ return {
5146
+ entries: orderUpdateEntries(Object.entries(a)),
5147
+ pathOrID: b,
5148
+ options: c ?? {}
5149
+ };
5150
+ };
5151
+ /**
5152
+ * Applies one or more property updates to a query in place. Shared by
5153
+ * {@link update} and {@link updateInPlace}.
5154
+ */
5155
+ const applyUpdatesInPlace = (query, a, b, c, d) => {
5156
+ const { entries, pathOrID, options } = normalizeUpdateArgs(a, b, c, d);
5157
+ for (const [prop, value] of entries) updateInPlaceSingle(query, prop, value, pathOrID, options);
5158
+ return query;
5159
+ };
5160
+ /**
5161
+ * Updates one or more properties of a rule or group within a query without
5162
+ * mutating the original query. Properties may be supplied individually
5163
+ * (`prop`, `value`), as parallel arrays (`props`, `values`), or as a
5164
+ * property-to-value map. For multi-property updates, `field`, `operator`, and
5165
+ * `valueSource` are applied before `value`, so an explicit `value` is never
5166
+ * reset by a change to one of those properties.
4888
5167
  *
4889
- * @returns A new query with the rule or group property updated.
5168
+ * @returns A new query with the rule or group properties updated.
4890
5169
  *
4891
5170
  * @group Query Tools
4892
5171
  */
4893
- const update = (query, prop, value, pathOrID, options = {}) => produce(query, (q) => updateInPlace(q, prop, value, pathOrID, options));
5172
+ const update = ((query, a, b, c, d) => produce(query, (q) => {
5173
+ applyUpdatesInPlace(q, a, b, c, d);
5174
+ }));
4894
5175
  /**
4895
- * Updates a property of a rule or group within a query in place.
5176
+ * Updates one or more properties of a rule or group within a query in place.
5177
+ * See {@link update} for the supported argument forms and ordering semantics.
4896
5178
  *
4897
- * @returns The query (mutated in place) with the rule or group property updated.
5179
+ * @returns The query (mutated in place) with the rule or group properties updated.
4898
5180
  *
4899
5181
  * @group Query Tools
4900
5182
  */
4901
- const updateInPlace = (query, prop, value, pathOrID, options = {}) => {
5183
+ const updateInPlace = ((query, a, b, c, d) => applyUpdatesInPlace(query, a, b, c, d));
5184
+ /**
5185
+ * Updates a single property of a rule or group within a query in place.
5186
+ */
5187
+ const updateInPlaceSingle = (query, prop, value, pathOrID, options = {}) => {
4902
5188
  const { resetOnFieldChange: _resetOnFieldChange = true, resetOnOperatorChange = false, getRuleDefaultOperator = () => "=", getValueSources = () => ["value"], getRuleDefaultValue = () => "", getMatchModes = () => [] } = options;
4903
5189
  let resetOnFieldChange = _resetOnFieldChange;
4904
5190
  const path = Array.isArray(pathOrID) ? pathOrID : getPathOfID(pathOrID, query);
@@ -5145,6 +5431,6 @@ const groupInPlace = (query, sourcePathOrID, targetPathOrID, options = {}) => {
5145
5431
  return query;
5146
5432
  };
5147
5433
  //#endregion
5148
- export { LogType, TestID, add, addInPlace, bigIntJsonParseReviver, bigIntJsonStringifyReplacer, celCombinatorMap, clsx, convertFromIC, convertQuery, convertToIC, cypherCombinatorMap, defaultCELValueProcessor, defaultCombinatorLabelMap, defaultCombinators, defaultCombinatorsExtended, defaultControlClassnames, defaultExportOperatorMap, defaultJoinChar, defaultMatchModes, defaultMongoDBValueProcessor, defaultNLTranslations, defaultOperatorLabelMap, defaultOperatorNegationMap, defaultOperatorProcessorNL, defaultOperatorProcessorSQL, defaultOperators, defaultPlaceholderFieldGroupLabel, defaultPlaceholderFieldLabel, defaultPlaceholderFieldName, defaultPlaceholderLabel, defaultPlaceholderName, defaultPlaceholderOperatorGroupLabel, defaultPlaceholderOperatorLabel, defaultPlaceholderOperatorName, defaultPlaceholderValueGroupLabel, defaultPlaceholderValueLabel, defaultPlaceholderValueName, defaultRuleGroupProcessorCEL, defaultRuleGroupProcessorCypher, defaultRuleGroupProcessorDiagnostics, defaultRuleGroupProcessorDrizzle, defaultRuleGroupProcessorElasticSearch, defaultRuleGroupProcessorGremlin, defaultRuleGroupProcessorJSONata, defaultRuleGroupProcessorJsonLogic, defaultRuleGroupProcessorLDAP, defaultRuleGroupProcessorMongoDB, defaultRuleGroupProcessorMongoDBQuery, defaultRuleGroupProcessorNL, defaultRuleGroupProcessorParameterized, defaultRuleGroupProcessorPrisma, defaultRuleGroupProcessorSPARQL, defaultRuleGroupProcessorSQL, defaultRuleGroupProcessorSequelize, defaultRuleGroupProcessorSpEL, defaultRuleGroupProcessorTanStackDB, defaultRuleProcessorCEL, defaultRuleProcessorCypher, defaultRuleProcessorDrizzle, defaultRuleProcessorElasticSearch, defaultRuleProcessorGremlin, defaultRuleProcessorJSONata, defaultRuleProcessorJsonLogic, defaultRuleProcessorLDAP, defaultRuleProcessorMongoDB, defaultRuleProcessorMongoDBQuery, defaultRuleProcessorNL, defaultRuleProcessorParameterized, defaultRuleProcessorPrisma, defaultRuleProcessorSPARQL, defaultRuleProcessorSQL, defaultRuleProcessorSequelize, defaultRuleProcessorSpEL, defaultRuleProcessorTanStackDB, defaultSpELValueProcessor, defaultTranslations, defaultValidator, defaultValueProcessor, defaultValueProcessorByRule, defaultValueProcessorCELByRule, defaultValueProcessorMongoDBByRule, defaultValueProcessorNL, defaultValueProcessorSpELByRule, filterFieldsByComparator, findID, findPath, formatQuery, formatQueryOptionPresets, generateAccessibleDescription, generateID, getCommonAncestorPath, getFirstOption, getMatchModesUtil, getNLTranslataion, getOption, getParentPath, getParseNumberMethod, getPathOfID, getQuoteFieldNamesWithArray, getQuotedFieldName, getValidationClassNames, getValueSourcesUtil, group, groupInPlace, groupInvalidReasons, insert, insertInPlace, isAncestor, isFlexibleOptionArray, isFlexibleOptionGroupArray, isFullOptionArray, isFullOptionGroupArray, isOptionGroupArray, isPojo, isRuleGroup, isRuleGroupType, isRuleGroupTypeIC, isRuleOrGroupValid, isRuleType, isUnsafeKey, isValidValue, isValidationResult, isValueProcessorLegacy, joinWith, jsonLogicAdditionalOperators, lc, mapSQLOperator, mergeAnyTranslation, mergeAnyTranslations, mergeClassnames, mongoDbFallback, mongoOperators, move, moveInPlace, normalizeConstituentWordOrder, nullFreeArray, nullOrUndefinedOrEmpty, numericRegex, numerifyValues, objectEntries, objectKeys, parseNumber, pathIsDisabled, pathsAreEqual, preferAnyProp, preferFlagProps, preferProp, prepareOptionList, prepareRule, prepareRuleGroup, prepareRuleOrGroup, prismaFallback, prismaOperators, processMatchMode, queryBuilderFlagDefaults, regenerateID, regenerateIDs, remove, removeInPlace, rootPath, shouldRenderAsNumber, sparqlVar, splitBy, sqlDialectPresets, standardClassnames, toArray, toFlatOptionArray, toFullOption, toFullOptionList, toFullOptionMap, transformQuery, trimIfString, uniqByIdentifier, uniqByName, uniqOptGroups, uniqOptList, update, updateInPlace, uuidV4regex };
5434
+ export { LogType, TestID, add, addInPlace, betweenOperators, bigIntJsonParseReviver, bigIntJsonStringifyReplacer, celCombinatorMap, clsx, convertFromIC, convertQuery, convertToIC, cypherCombinatorMap, defaultCELValueProcessor, defaultCombinatorLabelMap, defaultCombinators, defaultCombinatorsExtended, defaultControlClassnames, defaultExportOperatorMap, defaultJoinChar, defaultMatchModes, defaultMongoDBValueProcessor, defaultNLTranslations, defaultOperatorLabelMap, defaultOperatorNegationMap, defaultOperatorProcessorNL, defaultOperatorProcessorSQL, defaultOperators, defaultPlaceholderFieldGroupLabel, defaultPlaceholderFieldLabel, defaultPlaceholderFieldName, defaultPlaceholderLabel, defaultPlaceholderName, defaultPlaceholderOperatorGroupLabel, defaultPlaceholderOperatorLabel, defaultPlaceholderOperatorName, defaultPlaceholderValueGroupLabel, defaultPlaceholderValueLabel, defaultPlaceholderValueName, defaultRuleGroupProcessorCEL, defaultRuleGroupProcessorCypher, defaultRuleGroupProcessorDiagnostics, defaultRuleGroupProcessorDrizzle, defaultRuleGroupProcessorElasticSearch, defaultRuleGroupProcessorGremlin, defaultRuleGroupProcessorJSONata, defaultRuleGroupProcessorJsonLogic, defaultRuleGroupProcessorLDAP, defaultRuleGroupProcessorMongoDB, defaultRuleGroupProcessorMongoDBQuery, defaultRuleGroupProcessorNL, defaultRuleGroupProcessorParameterized, defaultRuleGroupProcessorPrisma, defaultRuleGroupProcessorSPARQL, defaultRuleGroupProcessorSQL, defaultRuleGroupProcessorSequelize, defaultRuleGroupProcessorSpEL, defaultRuleGroupProcessorTanStackDB, defaultRuleProcessorCEL, defaultRuleProcessorCypher, defaultRuleProcessorDrizzle, defaultRuleProcessorElasticSearch, defaultRuleProcessorGremlin, defaultRuleProcessorJSONata, defaultRuleProcessorJsonLogic, defaultRuleProcessorLDAP, defaultRuleProcessorMongoDB, defaultRuleProcessorMongoDBQuery, defaultRuleProcessorNL, defaultRuleProcessorParameterized, defaultRuleProcessorPrisma, defaultRuleProcessorSPARQL, defaultRuleProcessorSQL, defaultRuleProcessorSequelize, defaultRuleProcessorSpEL, defaultRuleProcessorTanStackDB, defaultSpELValueProcessor, defaultTranslations, defaultValidator, defaultValueProcessor, defaultValueProcessorByRule, defaultValueProcessorCELByRule, defaultValueProcessorMongoDBByRule, defaultValueProcessorNL, defaultValueProcessorSpELByRule, filterFieldsByComparator, findID, findPath, formatQuery, formatQueryOptionPresets, generateAccessibleDescription, generateID, getCommonAncestorPath, getFirstOption, getLikeWildcards, getMatchModesUtil, getNLTranslataion, getOption, getParentPath, getParseNumberMethod, getPathOfID, getQuoteFieldNamesWithArray, getQuotedFieldName, getRuleDefaultValue, getSQLConcat, getValidationClassNames, getValueSourcesUtil, group, groupInPlace, groupInvalidReasons, inOperators, insert, insertInPlace, isAncestor, isFlexibleOptionArray, isFlexibleOptionGroupArray, isFullOptionArray, isFullOptionGroupArray, isOptionGroupArray, isPojo, isRuleGroup, isRuleGroupType, isRuleGroupTypeIC, isRuleOrGroupValid, isRuleType, isUnsafeKey, isValidValue, isValidationResult, isValueProcessorLegacy, joinWith, jsonLogicAdditionalOperators, lc, mapSQLOperator, mergeAnyTranslation, mergeAnyTranslations, mergeClassnames, mongoDbFallback, mongoOperators, move, moveInPlace, normalizeConstituentWordOrder, nullFreeArray, nullOperators, nullOrUndefinedOrEmpty, numericRegex, numerifyValues, objectEntries, objectKeys, parseNumber, pathIsDisabled, pathsAreEqual, preferAnyProp, preferFlagProps, preferProp, prepareOptionList, prepareRule, prepareRuleGroup, prepareRuleOrGroup, prismaFallback, prismaOperators, processMatchMode, queryBuilderFlagDefaults, regenerateID, regenerateIDs, relationalOperators, remove, removeInPlace, rootPath, shouldRenderAsNumber, sparqlVar, splitBy, sqlDialectPresets, standardClassnames, stripParamPrefix, substringOperators, toArray, toFlatOptionArray, toFullOption, toFullOptionList, toFullOptionMap, transformQuery, trimIfString, uniqByIdentifier, uniqByName, uniqOptGroups, uniqOptList, update, updateInPlace, uuidV4regex, withParamPrefix, wrapLikeFragment };
5149
5435
 
5150
5436
  //# sourceMappingURL=react-querybuilder_core.mjs.map