@react-querybuilder/core 8.20.2 → 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 +319 -22
  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 +170 -88
  15. package/dist/formatQuery.js.map +1 -1
  16. package/dist/formatQuery.mjs +97 -20
  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-Bni5VgYM.js → prepareQueryObjects-C2-kTZvR.js} +5 -5
  75. package/dist/prepareQueryObjects-C2-kTZvR.js.map +1 -0
  76. package/dist/{prepareQueryObjects-BCLU20Cg.mjs → prepareQueryObjects-Q18lHCKl.mjs} +3 -3
  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 +335 -40
  83. package/dist/react-querybuilder_core.legacy-esm.js.map +1 -1
  84. package/dist/react-querybuilder_core.mjs +309 -23
  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 +14 -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-BCLU20Cg.mjs.map +0 -1
  106. package/dist/prepareQueryObjects-Bni5VgYM.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
@@ -674,7 +718,7 @@ const isRuleGroupType = (rg) => isRuleGroup(rg) && typeof rg.combinator === "str
674
718
  */
675
719
  const isRuleGroupTypeIC = (rg) => isRuleGroup(rg) && rg.combinator === void 0;
676
720
  //#endregion
677
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/typeof.js
721
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/typeof.js
678
722
  function _typeof(o) {
679
723
  "@babel/helpers - typeof";
680
724
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -684,7 +728,7 @@ function _typeof(o) {
684
728
  }, _typeof(o);
685
729
  }
686
730
  //#endregion
687
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPrimitive.js
731
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPrimitive.js
688
732
  function toPrimitive(t, r) {
689
733
  if ("object" != _typeof(t) || !t) return t;
690
734
  var e = t[Symbol.toPrimitive];
@@ -696,13 +740,13 @@ function toPrimitive(t, r) {
696
740
  return ("string" === r ? String : Number)(t);
697
741
  }
698
742
  //#endregion
699
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPropertyKey.js
743
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPropertyKey.js
700
744
  function toPropertyKey(t) {
701
745
  var i = toPrimitive(t, "string");
702
746
  return "symbol" == _typeof(i) ? i : i + "";
703
747
  }
704
748
  //#endregion
705
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/defineProperty.js
749
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/defineProperty.js
706
750
  function _defineProperty(e, r, t) {
707
751
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
708
752
  value: t,
@@ -712,7 +756,7 @@ function _defineProperty(e, r, t) {
712
756
  }) : e[r] = t, e;
713
757
  }
714
758
  //#endregion
715
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/objectSpread2.js
759
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/objectSpread2.js
716
760
  function ownKeys(e, r) {
717
761
  var t = Object.keys(e);
718
762
  if (Object.getOwnPropertySymbols) {
@@ -735,7 +779,7 @@ function _objectSpread2(e) {
735
779
  return e;
736
780
  }
737
781
  //#endregion
738
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/objectWithoutPropertiesLoose.js
782
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/objectWithoutPropertiesLoose.js
739
783
  function _objectWithoutPropertiesLoose(r, e) {
740
784
  if (null == r) return {};
741
785
  var t = {};
@@ -746,7 +790,7 @@ function _objectWithoutPropertiesLoose(r, e) {
746
790
  return t;
747
791
  }
748
792
  //#endregion
749
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/objectWithoutProperties.js
793
+ //#region \0@oxc-project+runtime@0.140.0/helpers/esm/objectWithoutProperties.js
750
794
  function _objectWithoutProperties(e, t) {
751
795
  if (null == e) return {};
752
796
  var o, r, i = _objectWithoutPropertiesLoose(e, t);
@@ -1254,6 +1298,51 @@ const mapSQLOperator = (rqbOperator) => {
1254
1298
  }
1255
1299
  };
1256
1300
  /**
1301
+ * Returns a preset-aware SQL string-concatenation function. Emits `CONCAT(a, b, ...)` when
1302
+ * `concatOperator` is `"CONCAT"` (case-insensitive), otherwise joins with the infix operator
1303
+ * (e.g. `a || b`, `a + b`).
1304
+ *
1305
+ * @group Export
1306
+ */
1307
+ const getSQLConcat = (concatOperator = "||") => (...values) => concatOperator.toUpperCase() === "CONCAT" ? `CONCAT(${values.join(", ")})` : values.join(` ${concatOperator} `);
1308
+ /**
1309
+ * Returns the `[prefix, suffix]` `LIKE` wildcards for a string-match operator (e.g. `contains`
1310
+ * → `['%', '%']`, `beginsWith` → `['', '%']`, `endsWith` → `['%', '']`). Unknown operators
1311
+ * yield `['', '']`.
1312
+ *
1313
+ * @group Export
1314
+ */
1315
+ const getLikeWildcards = (operatorLC) => {
1316
+ switch (operatorLC) {
1317
+ case "contains":
1318
+ case "doesnotcontain": return ["%", "%"];
1319
+ case "beginswith":
1320
+ case "doesnotbeginwith": return ["", "%"];
1321
+ case "endswith":
1322
+ case "doesnotendwith": return ["%", ""];
1323
+ default: return ["", ""];
1324
+ }
1325
+ };
1326
+ /**
1327
+ * Wraps an already-serialized SQL fragment (a quoted field name or an expression) with the
1328
+ * `LIKE` wildcards for the given (lowercase) string-match operator, concatenating the literal
1329
+ * `%` markers via the preset-aware {@link getSQLConcat}. Returns the fragment untouched for
1330
+ * operators without wildcards.
1331
+ *
1332
+ * @group Export
1333
+ */
1334
+ const wrapLikeFragment = (fragment, operatorLC, { concatOperator = "||", quoteValuesWith, wrapValueWith = ["", ""] } = {}) => {
1335
+ const [pre, post] = getLikeWildcards(operatorLC);
1336
+ const quoteChar = quoteValuesWith || `'`;
1337
+ const quote = (p) => `${wrapValueWith[0]}${quoteChar}${p}${quoteChar}${wrapValueWith[1]}`;
1338
+ const parts = [
1339
+ pre && quote(pre),
1340
+ fragment,
1341
+ post && quote(post)
1342
+ ].filter(Boolean);
1343
+ return parts.length > 1 ? getSQLConcat(concatOperator)(...parts) : fragment;
1344
+ };
1345
+ /**
1257
1346
  * Maps a (lowercase) {@link DefaultOperatorName} to a MongoDB operator.
1258
1347
  *
1259
1348
  * @group Export
@@ -1405,6 +1494,27 @@ const normalizeConstituentWordOrder = (input) => {
1405
1494
  return result;
1406
1495
  };
1407
1496
  /**
1497
+ * Prefixes a named-parameter value with the given `paramPrefix` unless the value already
1498
+ * begins with it. Used by {@link formatQuery} to render rules whose `valueSource` is
1499
+ * `"parameter"` (e.g. `"p1"` with prefix `":"` → `":p1"`; `":p1"` → `":p1"`).
1500
+ *
1501
+ * @group Export
1502
+ */
1503
+ const withParamPrefix = (value, paramPrefix = ":") => {
1504
+ const v = `${value !== null && value !== void 0 ? value : ""}`;
1505
+ return paramPrefix && v.startsWith(paramPrefix) ? v : `${paramPrefix}${v}`;
1506
+ };
1507
+ /**
1508
+ * Strips a leading `paramPrefix` from a named-parameter value if present. Inverse of
1509
+ * {@link withParamPrefix}; used to normalize parameter names for validation/lookup.
1510
+ *
1511
+ * @group Export
1512
+ */
1513
+ const stripParamPrefix = (value, paramPrefix = ":") => {
1514
+ const v = `${value !== null && value !== void 0 ? value : ""}`;
1515
+ return paramPrefix && v.startsWith(paramPrefix) ? v.slice(paramPrefix.length) : v;
1516
+ };
1517
+ /**
1408
1518
  * Default translations used by {@link formatQuery} for "natural_language" format.
1409
1519
  *
1410
1520
  * @group Export
@@ -1547,7 +1657,7 @@ const escapeDoubleQuotes$1 = (v, escapeQuotes) => typeof v !== "string" || !esca
1547
1657
  const defaultRuleProcessorCEL = (rule, opts = {}) => {
1548
1658
  const { escapeQuotes, parseNumbers, preserveValueOrder } = opts;
1549
1659
  const { field, operator, value, valueSource } = rule;
1550
- const valueIsField = valueSource === "field";
1660
+ const valueIsField = valueSource === "field" || valueSource === "parameter";
1551
1661
  const operatorTL = lc(operator === "=" ? "==" : operator);
1552
1662
  const useBareValue = typeof value === "number" || typeof value === "boolean" || typeof value === "bigint" || shouldRenderAsNumber(value, parseNumbers);
1553
1663
  const matchEval = processMatchMode(rule);
@@ -1854,7 +1964,7 @@ const escapeSingleQuotes$2 = (v, escapeQuotes) => typeof v !== "string" || !esca
1854
1964
  const defaultRuleProcessorSpEL = (rule, opts = {}) => {
1855
1965
  const { field, operator, value, valueSource } = rule;
1856
1966
  const { escapeQuotes, parseNumbers, preserveValueOrder } = opts;
1857
- const valueIsField = valueSource === "field";
1967
+ const valueIsField = valueSource === "field" || valueSource === "parameter";
1858
1968
  const operatorTL = lc(operator === "=" ? "==" : operator);
1859
1969
  const useBareValue = typeof value === "number" || typeof value === "boolean" || typeof value === "bigint" || shouldRenderAsNumber(value, parseNumbers);
1860
1970
  const matchEval = processMatchMode(rule);
@@ -1885,11 +1995,20 @@ const defaultRuleProcessorSpEL = (rule, opts = {}) => {
1885
1995
  case ">":
1886
1996
  case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? trimIfString(value) : `'${escapeSingleQuotes$2(value, escapeQuotes)}'`}`;
1887
1997
  case "contains":
1888
- case "doesnotcontain": return wrapInNegation(`${field} matches ${valueIsField || useBareValue ? trimIfString(value) : `'${escapeSingleQuotes$2(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
1998
+ case "doesnotcontain": {
1999
+ const valueTL = valueIsField ? `'.*'.concat(${trimIfString(value)}).concat('.*')` : `'.*${escapeSingleQuotes$2(value, escapeQuotes)}.*'`;
2000
+ return wrapInNegation(`${field} matches ${valueTL}`, shouldNegate$1(operatorTL));
2001
+ }
1889
2002
  case "beginswith":
1890
- case "doesnotbeginwith": return wrapInNegation(`${field} matches ${valueIsField ? `'^'.concat(${trimIfString(value)})` : `'${typeof value === "string" && !value.startsWith("^") || useBareValue ? "^" : ""}${escapeSingleQuotes$2(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
2003
+ case "doesnotbeginwith": {
2004
+ const valueTL = valueIsField ? `'^'.concat(${trimIfString(value)}).concat('.*')` : `'${typeof value === "string" && !value.startsWith("^") || useBareValue ? "^" : ""}${escapeSingleQuotes$2(value, escapeQuotes)}.*'`;
2005
+ return wrapInNegation(`${field} matches ${valueTL}`, shouldNegate$1(operatorTL));
2006
+ }
1891
2007
  case "endswith":
1892
- case "doesnotendwith": return wrapInNegation(`${field} matches ${valueIsField ? `${trimIfString(value)}.concat('$')` : `'${escapeSingleQuotes$2(value, escapeQuotes)}${typeof value === "string" && !value.endsWith("$") || useBareValue ? "$" : ""}'`}`, shouldNegate$1(operatorTL));
2008
+ case "doesnotendwith": {
2009
+ const valueTL = valueIsField ? `'.*'.concat(${trimIfString(value)}).concat('$')` : `'.*${escapeSingleQuotes$2(value, escapeQuotes)}${typeof value === "string" && !value.endsWith("$") || useBareValue ? "$" : ""}'`;
2010
+ return wrapInNegation(`${field} matches ${valueTL}`, shouldNegate$1(operatorTL));
2011
+ }
1893
2012
  case "null": return `${field} == null`;
1894
2013
  case "notnull": return `${field} != null`;
1895
2014
  case "in":
@@ -1927,7 +2046,36 @@ const escapeStringValueQuotes$1 = (v, quoteChar, escapeQuotes) => escapeQuotes &
1927
2046
  *
1928
2047
  * @group Export
1929
2048
  */
1930
- const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQuotes, parseNumbers, preserveValueOrder, quoteFieldNamesWith, quoteValuesWith, concatOperator = "||", fieldIdentifierSeparator, wrapValueWith = ["", ""], translations } = {}) => {
2049
+ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQuotes, parseNumbers, preserveValueOrder, quoteFieldNamesWith, quoteValuesWith, concatOperator = "||", fieldIdentifierSeparator, paramPrefix, wrapValueWith = ["", ""], translations } = {}) => {
2050
+ if (valueSource === "parameter") {
2051
+ const operatorLowerCase = lc(operator);
2052
+ if (operatorLowerCase === "between" || operatorLowerCase === "notbetween") {
2053
+ var _ref, _translations$between;
2054
+ const valueAsArray = toArray(value, { retainEmptyStrings: true });
2055
+ if (valueAsArray.length < 2 || !isValidValue(valueAsArray[0]) || !isValidValue(valueAsArray[1])) return "";
2056
+ const [first, second] = valueAsArray;
2057
+ return [withParamPrefix(first, paramPrefix), withParamPrefix(second, paramPrefix)].join(` ${(_ref = (_translations$between = translations === null || translations === void 0 ? void 0 : translations.betweenAnd) !== null && _translations$between !== void 0 ? _translations$between : translations === null || translations === void 0 ? void 0 : translations.and) !== null && _ref !== void 0 ? _ref : "and"} `);
2058
+ }
2059
+ if (operatorLowerCase === "in" || operatorLowerCase === "notin") {
2060
+ const valueAsArray = toArray(value);
2061
+ if (valueAsArray.length === 0) return "";
2062
+ return `(${valueAsArray.map((v) => withParamPrefix(v, paramPrefix)).join(", ")})`;
2063
+ }
2064
+ const paramRef = withParamPrefix(value, paramPrefix);
2065
+ switch (operatorLowerCase) {
2066
+ case "contains":
2067
+ case "doesnotcontain":
2068
+ case "beginswith":
2069
+ case "doesnotbeginwith":
2070
+ case "endswith":
2071
+ case "doesnotendwith": return wrapLikeFragment(paramRef, operatorLowerCase, {
2072
+ concatOperator,
2073
+ quoteValuesWith,
2074
+ wrapValueWith
2075
+ });
2076
+ }
2077
+ return paramRef;
2078
+ }
1931
2079
  const valueIsField = valueSource === "field";
1932
2080
  const operatorLowerCase = lc(operator);
1933
2081
  const quoteChar = quoteValuesWith || "'";
@@ -1938,7 +2086,11 @@ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQ
1938
2086
  quoteFieldNamesWith,
1939
2087
  fieldIdentifierSeparator
1940
2088
  });
1941
- const concat = (...values) => concatOperator.toUpperCase() === "CONCAT" ? `CONCAT(${values.join(", ")})` : values.join(` ${concatOperator} `);
2089
+ const likeOpts = {
2090
+ concatOperator,
2091
+ quoteValuesWith,
2092
+ wrapValueWith
2093
+ };
1942
2094
  switch (operatorLowerCase) {
1943
2095
  case "null":
1944
2096
  case "notnull": return "";
@@ -1950,7 +2102,7 @@ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQ
1950
2102
  }
1951
2103
  case "between":
1952
2104
  case "notbetween": {
1953
- var _ref, _translations$between;
2105
+ var _ref2, _translations$between2;
1954
2106
  const valueAsArray = toArray(value, { retainEmptyStrings: true });
1955
2107
  if (valueAsArray.length < 2 || !isValidValue(valueAsArray[0]) || !isValidValue(valueAsArray[1])) return "";
1956
2108
  const [first, second] = valueAsArray;
@@ -1963,14 +2115,14 @@ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQ
1963
2115
  valsOneAndTwoOnly[0] = secondNum;
1964
2116
  valsOneAndTwoOnly[1] = firstNum;
1965
2117
  }
1966
- 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(` ${(_ref = (_translations$between = translations === null || translations === void 0 ? void 0 : translations.betweenAnd) !== null && _translations$between !== void 0 ? _translations$between : translations === null || translations === void 0 ? void 0 : translations.and) !== null && _ref !== void 0 ? _ref : "and"} `);
2118
+ 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(` ${(_ref2 = (_translations$between2 = translations === null || translations === void 0 ? void 0 : translations.betweenAnd) !== null && _translations$between2 !== void 0 ? _translations$between2 : translations === null || translations === void 0 ? void 0 : translations.and) !== null && _ref2 !== void 0 ? _ref2 : "and"} `);
1967
2119
  }
1968
2120
  case "contains":
1969
- case "doesnotcontain": return valueIsField ? concat(quoteValue("%"), wrapFieldName(value), quoteValue("%")) : quoteValue(`%${escapeValue(value)}%`);
2121
+ case "doesnotcontain": return valueIsField ? wrapLikeFragment(wrapFieldName(value), operatorLowerCase, likeOpts) : quoteValue(`%${escapeValue(value)}%`);
1970
2122
  case "beginswith":
1971
- case "doesnotbeginwith": return valueIsField ? concat(wrapFieldName(value), quoteValue("%")) : quoteValue(`${escapeValue(value)}%`);
2123
+ case "doesnotbeginwith": return valueIsField ? wrapLikeFragment(wrapFieldName(value), operatorLowerCase, likeOpts) : quoteValue(`${escapeValue(value)}%`);
1972
2124
  case "endswith":
1973
- case "doesnotendwith": return valueIsField ? concat(quoteValue("%"), wrapFieldName(value)) : quoteValue(`%${escapeValue(value)}`);
2125
+ case "doesnotendwith": return valueIsField ? wrapLikeFragment(wrapFieldName(value), operatorLowerCase, likeOpts) : quoteValue(`%${escapeValue(value)}`);
1974
2126
  }
1975
2127
  if (typeof value === "boolean") return value ? "TRUE" : "FALSE";
1976
2128
  return valueIsField ? wrapFieldName(value) : shouldRenderAsNumber(value, parseNumbers) ? `${trimIfString(value)}` : `${wrapAndEscape(value)}`;
@@ -3538,7 +3690,10 @@ const defaultRuleProcessorJsonLogic = (rule, options = {}) => {
3538
3690
  case "null":
3539
3691
  case "notnull": return { [`${operatorLC === "notnull" ? "!" : "="}=`]: [fieldObject, null] };
3540
3692
  case "in":
3541
- case "notin": return negateIfNotOp(operatorLC, { in: [fieldObject, toArray(value).map((v) => fieldOrNumberRenderer(v))] });
3693
+ case "notin": {
3694
+ const valueAsArray = toArray(value).map((v) => fieldOrNumberRenderer(v));
3695
+ return negateIfNotOp(operatorLC, { in: [fieldObject, valueAsArray] });
3696
+ }
3542
3697
  case "between":
3543
3698
  case "notbetween": {
3544
3699
  const valueAsArray = toArray(value);
@@ -3569,11 +3724,20 @@ const defaultRuleProcessorJsonLogic = (rule, options = {}) => {
3569
3724
  return false;
3570
3725
  }
3571
3726
  case "contains":
3572
- case "doesnotcontain": return negateIfNotOp(operatorLC, { in: [fieldOrNumberRenderer(value), fieldObject] });
3727
+ case "doesnotcontain": {
3728
+ const jsonRule = { in: [fieldOrNumberRenderer(value), fieldObject] };
3729
+ return negateIfNotOp(operatorLC, jsonRule);
3730
+ }
3573
3731
  case "beginswith":
3574
- case "doesnotbeginwith": return negateIfNotOp(operatorLC, { startsWith: [fieldObject, fieldOrNumberRenderer(value)] });
3732
+ case "doesnotbeginwith": {
3733
+ const jsonRule = { startsWith: [fieldObject, fieldOrNumberRenderer(value)] };
3734
+ return negateIfNotOp(operatorLC, jsonRule);
3735
+ }
3575
3736
  case "endswith":
3576
- case "doesnotendwith": return negateIfNotOp(operatorLC, { endsWith: [fieldObject, fieldOrNumberRenderer(value)] });
3737
+ case "doesnotendwith": {
3738
+ const jsonRule = { endsWith: [fieldObject, fieldOrNumberRenderer(value)] };
3739
+ return negateIfNotOp(operatorLC, jsonRule);
3740
+ }
3577
3741
  }
3578
3742
  return false;
3579
3743
  };
@@ -3607,7 +3771,10 @@ const defaultRuleProcessorLDAP = (rule, options = {}) => {
3607
3771
  case "null":
3608
3772
  case "notnull": return negateIf(`(${field}=*)`, operatorLC === "notnull");
3609
3773
  case "in":
3610
- case "notin": return negateIf(`(|${toArray(value).map((val) => `(${field}=${ldapEscape(val)})`).join("")})`, operatorLC === "notin");
3774
+ case "notin": {
3775
+ const valueAsArray = toArray(value);
3776
+ return negateIf(`(|${valueAsArray.map((val) => `(${field}=${ldapEscape(val)})`).join("")})`, operatorLC === "notin");
3777
+ }
3611
3778
  case "between":
3612
3779
  case "notbetween": {
3613
3780
  const valueAsArray = toArray(value);
@@ -3914,7 +4081,22 @@ const defaultRuleProcessorParameterized = (rule, opts, meta) => {
3914
4081
  const [qPre, qPost] = quoteFieldNamesWith;
3915
4082
  if ((sqlOperatorLowerCase === "in" || sqlOperatorLowerCase === "not in" || sqlOperatorLowerCase === "between" || sqlOperatorLowerCase === "not between") && !value) return finalize("");
3916
4083
  else if (sqlOperatorLowerCase === "is null" || sqlOperatorLowerCase === "is not null") return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator}`);
3917
- else if (rule.valueSource === "field") return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator} ${value}`.trim());
4084
+ else if (rule.valueSource === "parameter") {
4085
+ const registerParam = (v) => {
4086
+ const ref = withParamPrefix(v, paramPrefix);
4087
+ if (!parameterized) paramsNamed[paramsKeepPrefix ? ref : stripParamPrefix(v, paramPrefix)] = null;
4088
+ return ref;
4089
+ };
4090
+ if (sqlOperatorLowerCase === "between" || sqlOperatorLowerCase === "not between") {
4091
+ const [first, second] = toArray(rule.value, { retainEmptyStrings: true }).slice(0, 2);
4092
+ return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator} ${registerParam(first)} and ${registerParam(second)}`.trim());
4093
+ }
4094
+ if (sqlOperatorLowerCase === "in" || sqlOperatorLowerCase === "not in") {
4095
+ const splitValue = toArray(rule.value);
4096
+ return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator} (${splitValue.map((v) => registerParam(v)).join(", ")})`);
4097
+ }
4098
+ return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator} ${wrapLikeFragment(registerParam(rule.value), lc(rule.operator), { concatOperator })}`.trim());
4099
+ } else if (rule.valueSource === "field") return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator} ${value}`.trim());
3918
4100
  else if (sqlOperatorLowerCase === "in" || sqlOperatorLowerCase === "not in") {
3919
4101
  const splitValue = toArray(rule.value);
3920
4102
  if (parameterized) {
@@ -4107,7 +4289,9 @@ const defaultRuleProcessorSPARQL = (rule, opts = {}) => {
4107
4289
  if (typeof v === "bigint") return String(v);
4108
4290
  if (valueIsField) return sparqlVar(trimIfString(v));
4109
4291
  if (typeof v === "number" || shouldRenderAsNumber(v, parseNumbers)) return trimIfString(v);
4292
+ /* v8 ignore start -- @preserve */
4110
4293
  const s = typeof v === "string" ? v : (_JSON$stringify = JSON.stringify(v)) !== null && _JSON$stringify !== void 0 ? _JSON$stringify : "";
4294
+ /* v8 ignore stop -- @preserve */
4111
4295
  if (s.startsWith("?") || s.startsWith("<") || s.includes(":")) return s;
4112
4296
  return `"${escapeDoubleQuotes(s, escapeQuotes)}"`;
4113
4297
  };
@@ -4433,6 +4617,10 @@ function formatQuery(ruleGroup, optionParam = {}) {
4433
4617
  if (typeof field.validator === "function") fieldValidator = field.validator;
4434
4618
  }
4435
4619
  }
4620
+ if (rule.valueSource === "parameter" && typeof optObj.getParameters === "function") {
4621
+ const fieldData = getOption(fields, rule.field);
4622
+ 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;
4623
+ }
4436
4624
  return [validationResult, fieldValidator];
4437
4625
  };
4438
4626
  const finalOptions = _objectSpread2(_objectSpread2({}, optObj), {}, {
@@ -4694,6 +4882,45 @@ const getMatchModesUtil = (fieldData, getMatchModes) => {
4694
4882
  })) !== null && _matchModes$map !== void 0 ? _matchModes$map : [];
4695
4883
  };
4696
4884
  //#endregion
4885
+ //#region src/utils/getRuleDefaultValue.ts
4886
+ const getFirstOptionsFrom = (opts, r, listsAsArrays) => {
4887
+ const firstOption = getFirstOption(opts);
4888
+ if (r.operator === "between" || r.operator === "notBetween") {
4889
+ const valueAsArray = [firstOption, firstOption];
4890
+ return listsAsArrays ? valueAsArray : joinWith(valueAsArray.map((v) => v !== null && v !== void 0 ? v : /* v8 ignore start -- @preserve */ ""), ",");
4891
+ }
4892
+ return firstOption;
4893
+ };
4894
+ /**
4895
+ * Computes the default `value` for a rule given its `field`/`operator`/`valueSource`, mirroring
4896
+ * the precedence the {@link react-querybuilder!QueryBuilder QueryBuilder} applies: a field's
4897
+ * `defaultValue`, then a `getDefaultValue` override, then a value derived from the field/operator's
4898
+ * value list and editor type (first option for `select`/`radio`, `false` for `checkbox`, paired for
4899
+ * `between`/`notBetween`), or a comparator-valid field when `valueSource` is `'field'`. Falls back
4900
+ * to `''`.
4901
+ *
4902
+ * @group Option Lists
4903
+ */
4904
+ const getRuleDefaultValue = (rule, options) => {
4905
+ const { fieldData, fields, getValueEditorType, getValues, getDefaultValue, getParameters, listsAsArrays } = options;
4906
+ if ((fieldData === null || fieldData === void 0 ? void 0 : fieldData.defaultValue) !== void 0 && fieldData.defaultValue !== null) return fieldData.defaultValue;
4907
+ else if (getDefaultValue) return getDefaultValue(rule, { fieldData });
4908
+ let value = "";
4909
+ const values = getValues(rule.field, rule.operator, { fieldData });
4910
+ if (rule.valueSource === "field") {
4911
+ const filteredFields = filterFieldsByComparator(fieldData, fields, rule.operator);
4912
+ value = filteredFields.length > 0 ? getFirstOptionsFrom(filteredFields, rule, listsAsArrays) : "";
4913
+ } else if (rule.valueSource === "parameter") {
4914
+ const parameters = getParameters ? getParameters(rule.field, rule.operator, { fieldData }) : null;
4915
+ value = parameters && parameters.length > 0 ? getFirstOption(parameters) : "";
4916
+ } else if (values.length > 0) {
4917
+ const editorType = getValueEditorType(rule.field, rule.operator, { fieldData });
4918
+ if (editorType === "multiselect") value = listsAsArrays ? [] : "";
4919
+ else if (editorType === "select" || editorType === "radio") value = getFirstOptionsFrom(values, rule, listsAsArrays);
4920
+ } else if (getValueEditorType(rule.field, rule.operator, { fieldData }) === "checkbox") value = false;
4921
+ return value;
4922
+ };
4923
+ //#endregion
4697
4924
  //#region src/utils/getValidationClassNames.ts
4698
4925
  /**
4699
4926
  * Gets the standard classname for valid or invalid components
@@ -4933,21 +5160,89 @@ const addInPlace = (query, ruleOrGroup, parentPathOrID, options = {}) => {
4933
5160
  return query;
4934
5161
  };
4935
5162
  /**
4936
- * Updates a property of a rule or group within a query without mutating the original query.
5163
+ * Relative order in which properties are applied during a multi-property update.
5164
+ * Lower ranks apply first; `value` applies last so an explicitly-provided value
5165
+ * is never clobbered by a reset triggered by a `field`/`operator`/`valueSource`
5166
+ * change. Unranked properties default to `3` (between `valueSource` and `value`).
5167
+ */
5168
+ const updatePropRank = {
5169
+ field: 0,
5170
+ operator: 1,
5171
+ valueSource: 2,
5172
+ value: 4
5173
+ };
5174
+ /** Stable-sorts `[prop, value]` entries by {@link updatePropRank}. */
5175
+ const orderUpdateEntries = (entries) => entries.sort((x, y) => {
5176
+ var _updatePropRank$x$, _updatePropRank$y$;
5177
+ return ((_updatePropRank$x$ = updatePropRank[x[0]]) !== null && _updatePropRank$x$ !== void 0 ? _updatePropRank$x$ : 3) - ((_updatePropRank$y$ = updatePropRank[y[0]]) !== null && _updatePropRank$y$ !== void 0 ? _updatePropRank$y$ : 3);
5178
+ });
5179
+ /**
5180
+ * Normalizes the variadic {@link update}/{@link updateInPlace} arguments (single
5181
+ * prop+value, parallel arrays, or property map) into a canonically-ordered list
5182
+ * of `[prop, value]` entries plus the target path/ID and options.
5183
+ */
5184
+ const normalizeUpdateArgs = (a, b, c, d) => {
5185
+ var _ref3;
5186
+ if (typeof a === "string") {
5187
+ var _ref;
5188
+ return {
5189
+ entries: [[a, b]],
5190
+ pathOrID: c,
5191
+ options: (_ref = d) !== null && _ref !== void 0 ? _ref : {}
5192
+ };
5193
+ }
5194
+ if (Array.isArray(a)) {
5195
+ var _ref2;
5196
+ const values = b;
5197
+ return {
5198
+ entries: orderUpdateEntries(a.map((prop, i) => [prop, values[i]])),
5199
+ pathOrID: c,
5200
+ options: (_ref2 = d) !== null && _ref2 !== void 0 ? _ref2 : {}
5201
+ };
5202
+ }
5203
+ return {
5204
+ entries: orderUpdateEntries(Object.entries(a)),
5205
+ pathOrID: b,
5206
+ options: (_ref3 = c) !== null && _ref3 !== void 0 ? _ref3 : {}
5207
+ };
5208
+ };
5209
+ /**
5210
+ * Applies one or more property updates to a query in place. Shared by
5211
+ * {@link update} and {@link updateInPlace}.
5212
+ */
5213
+ const applyUpdatesInPlace = (query, a, b, c, d) => {
5214
+ const { entries, pathOrID, options } = normalizeUpdateArgs(a, b, c, d);
5215
+ for (const [prop, value] of entries) updateInPlaceSingle(query, prop, value, pathOrID, options);
5216
+ return query;
5217
+ };
5218
+ /**
5219
+ * Updates one or more properties of a rule or group within a query without
5220
+ * mutating the original query. Properties may be supplied individually
5221
+ * (`prop`, `value`), as parallel arrays (`props`, `values`), or as a
5222
+ * property-to-value map. For multi-property updates, `field`, `operator`, and
5223
+ * `valueSource` are applied before `value`, so an explicit `value` is never
5224
+ * reset by a change to one of those properties.
4937
5225
  *
4938
- * @returns A new query with the rule or group property updated.
5226
+ * @returns A new query with the rule or group properties updated.
4939
5227
  *
4940
5228
  * @group Query Tools
4941
5229
  */
4942
- const update = (query, prop, value, pathOrID, options = {}) => produce(query, (q) => updateInPlace(q, prop, value, pathOrID, options));
5230
+ const update = ((query, a, b, c, d) => produce(query, (q) => {
5231
+ applyUpdatesInPlace(q, a, b, c, d);
5232
+ }));
4943
5233
  /**
4944
- * Updates a property of a rule or group within a query in place.
5234
+ * Updates one or more properties of a rule or group within a query in place.
5235
+ * See {@link update} for the supported argument forms and ordering semantics.
4945
5236
  *
4946
- * @returns The query (mutated in place) with the rule or group property updated.
5237
+ * @returns The query (mutated in place) with the rule or group properties updated.
4947
5238
  *
4948
5239
  * @group Query Tools
4949
5240
  */
4950
- const updateInPlace = (query, prop, value, pathOrID, options = {}) => {
5241
+ const updateInPlace = ((query, a, b, c, d) => applyUpdatesInPlace(query, a, b, c, d));
5242
+ /**
5243
+ * Updates a single property of a rule or group within a query in place.
5244
+ */
5245
+ const updateInPlaceSingle = (query, prop, value, pathOrID, options = {}) => {
4951
5246
  const { resetOnFieldChange: _resetOnFieldChange = true, resetOnOperatorChange = false, getRuleDefaultOperator = () => "=", getValueSources = () => ["value"], getRuleDefaultValue = () => "", getMatchModes = () => [] } = options;
4952
5247
  let resetOnFieldChange = _resetOnFieldChange;
4953
5248
  const path = Array.isArray(pathOrID) ? pathOrID : getPathOfID(pathOrID, query);
@@ -5099,13 +5394,13 @@ const moveInPlace = (query, oldPathOrID, newPath, options = {}) => {
5099
5394
  if (parentToInsertInto.rules.length === 0 || !independentCombinators) insertRuleOrGroup(ruleOrGroup);
5100
5395
  else if (newIndex === 0) if (ruleToRemoveIndex === 0 && oldNextCombinator) insertRuleOrGroup(ruleOrGroup, oldNextCombinator);
5101
5396
  else {
5102
- var _ref, _parentToInsertInto$r;
5103
- insertRuleOrGroup(ruleOrGroup, (_ref = (_parentToInsertInto$r = parentToInsertInto.rules[1]) !== null && _parentToInsertInto$r !== void 0 ? _parentToInsertInto$r : oldPrevCombinator) !== null && _ref !== void 0 ? _ref : getFirstOption(combinators));
5397
+ var _ref4, _parentToInsertInto$r;
5398
+ insertRuleOrGroup(ruleOrGroup, (_ref4 = (_parentToInsertInto$r = parentToInsertInto.rules[1]) !== null && _parentToInsertInto$r !== void 0 ? _parentToInsertInto$r : oldPrevCombinator) !== null && _ref4 !== void 0 ? _ref4 : getFirstOption(combinators));
5104
5399
  }
5105
5400
  else if (oldPrevCombinator) insertRuleOrGroup(oldPrevCombinator, ruleOrGroup);
5106
5401
  else {
5107
- var _ref2, _parentToInsertInto$r2;
5108
- insertRuleOrGroup((_ref2 = (_parentToInsertInto$r2 = parentToInsertInto.rules[newIndex - 2]) !== null && _parentToInsertInto$r2 !== void 0 ? _parentToInsertInto$r2 : oldNextCombinator) !== null && _ref2 !== void 0 ? _ref2 : getFirstOption(combinators), ruleOrGroup);
5402
+ var _ref5, _parentToInsertInto$r2;
5403
+ insertRuleOrGroup((_ref5 = (_parentToInsertInto$r2 = parentToInsertInto.rules[newIndex - 2]) !== null && _parentToInsertInto$r2 !== void 0 ? _parentToInsertInto$r2 : oldNextCombinator) !== null && _ref5 !== void 0 ? _ref5 : getFirstOption(combinators), ruleOrGroup);
5109
5404
  }
5110
5405
  return query;
5111
5406
  };
@@ -5142,15 +5437,15 @@ const insertInPlace = (query, ruleOrGroup, path, options = {}) => {
5142
5437
  var _rorg$path;
5143
5438
  if (((_rorg$path = rorg.path) === null || _rorg$path === void 0 ? void 0 : _rorg$path.at(-1)) === 0 && combinatorSucceeding) insertRuleOrGroup(newIndex, rorg, combinatorSucceeding);
5144
5439
  else {
5145
- var _ref3, _parentToInsertInto$r3;
5146
- insertRuleOrGroup(newIndex, rorg, (_ref3 = (_parentToInsertInto$r3 = parentToInsertInto.rules[1]) !== null && _parentToInsertInto$r3 !== void 0 ? _parentToInsertInto$r3 : combinatorPreceding) !== null && _ref3 !== void 0 ? _ref3 : getFirstOption(combinators));
5440
+ var _ref6, _parentToInsertInto$r3;
5441
+ insertRuleOrGroup(newIndex, rorg, (_ref6 = (_parentToInsertInto$r3 = parentToInsertInto.rules[1]) !== null && _parentToInsertInto$r3 !== void 0 ? _parentToInsertInto$r3 : combinatorPreceding) !== null && _ref6 !== void 0 ? _ref6 : getFirstOption(combinators));
5147
5442
  }
5148
5443
  } else {
5149
5444
  const normalizedNewIndex = newIndex % 2 === 0 ? newIndex - 1 : newIndex;
5150
5445
  if (combinatorPreceding) insertRuleOrGroup(normalizedNewIndex, combinatorPreceding, rorg);
5151
5446
  else {
5152
- var _ref4, _parentToInsertInto$r4;
5153
- insertRuleOrGroup(normalizedNewIndex, (_ref4 = (_parentToInsertInto$r4 = parentToInsertInto.rules[normalizedNewIndex - 2]) !== null && _parentToInsertInto$r4 !== void 0 ? _parentToInsertInto$r4 : combinatorSucceeding) !== null && _ref4 !== void 0 ? _ref4 : getFirstOption(combinators), rorg);
5447
+ var _ref7, _parentToInsertInto$r4;
5448
+ insertRuleOrGroup(normalizedNewIndex, (_ref7 = (_parentToInsertInto$r4 = parentToInsertInto.rules[normalizedNewIndex - 2]) !== null && _parentToInsertInto$r4 !== void 0 ? _parentToInsertInto$r4 : combinatorSucceeding) !== null && _ref7 !== void 0 ? _ref7 : getFirstOption(combinators), rorg);
5154
5449
  }
5155
5450
  }
5156
5451
  return query;
@@ -5209,6 +5504,6 @@ const groupInPlace = (query, sourcePathOrID, targetPathOrID, options = {}) => {
5209
5504
  return query;
5210
5505
  };
5211
5506
  //#endregion
5212
- 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 };
5507
+ 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 };
5213
5508
 
5214
5509
  //# sourceMappingURL=react-querybuilder_core.legacy-esm.js.map