@react-querybuilder/datetime 8.17.0 → 8.19.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.
- package/dist/cjs/getDatetimeRuleProcessorTanStackDB-CL79A1_x.js +1208 -0
- package/dist/cjs/getDatetimeRuleProcessorTanStackDB-CL79A1_x.js.map +1 -0
- package/dist/cjs/getDatetimeRuleProcessorTanStackDB-DgUg_arY.js +2 -0
- package/dist/cjs/getDatetimeRuleProcessorTanStackDB-DgUg_arY.js.map +1 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.development.d.ts +214 -8
- package/dist/cjs/react-querybuilder_datetime.cjs.development.date-fns.d.ts +46 -2
- package/dist/cjs/react-querybuilder_datetime.cjs.development.date-fns.js +93 -15
- package/dist/cjs/react-querybuilder_datetime.cjs.development.date-fns.js.map +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.development.dayjs.d.ts +46 -2
- package/dist/cjs/react-querybuilder_datetime.cjs.development.dayjs.js +70 -59
- package/dist/cjs/react-querybuilder_datetime.cjs.development.dayjs.js.map +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.development.js +482 -71
- package/dist/cjs/react-querybuilder_datetime.cjs.development.js.map +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.development.jsdate.d.ts +46 -2
- package/dist/cjs/react-querybuilder_datetime.cjs.development.jsdate.js +129 -15
- package/dist/cjs/react-querybuilder_datetime.cjs.development.jsdate.js.map +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.development.luxon.d.ts +46 -2
- package/dist/cjs/react-querybuilder_datetime.cjs.development.luxon.js +81 -15
- package/dist/cjs/react-querybuilder_datetime.cjs.development.luxon.js.map +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.production.d.ts +214 -8
- package/dist/cjs/react-querybuilder_datetime.cjs.production.date-fns.d.ts +46 -2
- package/dist/cjs/react-querybuilder_datetime.cjs.production.date-fns.js +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.production.date-fns.js.map +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.production.dayjs.d.ts +46 -2
- package/dist/cjs/react-querybuilder_datetime.cjs.production.dayjs.js +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.production.dayjs.js.map +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.production.js +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.production.js.map +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.production.jsdate.d.ts +46 -2
- package/dist/cjs/react-querybuilder_datetime.cjs.production.jsdate.js +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.production.jsdate.js.map +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.production.luxon.d.ts +46 -2
- package/dist/cjs/react-querybuilder_datetime.cjs.production.luxon.js +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.production.luxon.js.map +1 -1
- package/dist/cjs/rqbDateTimeLibraryAPI.dayjs-BfILPx88.js +2 -0
- package/dist/cjs/rqbDateTimeLibraryAPI.dayjs-BfILPx88.js.map +1 -0
- package/dist/cjs/rqbDateTimeLibraryAPI.dayjs-CzLh_zi9.js +63 -0
- package/dist/cjs/rqbDateTimeLibraryAPI.dayjs-CzLh_zi9.js.map +1 -0
- package/dist/cjs/types-XYMw0jFT.d.ts +265 -0
- package/dist/datetime-layout.css +1 -0
- package/dist/datetime-layout.css.map +1 -0
- package/dist/datetime-layout.scss +3 -0
- package/dist/datetime.css +1 -0
- package/dist/datetime.css.map +1 -0
- package/dist/datetime.scss +1 -0
- package/dist/getDatetimeRuleProcessorTanStackDB-BcOC-o2A.mjs +1029 -0
- package/dist/getDatetimeRuleProcessorTanStackDB-BcOC-o2A.mjs.map +1 -0
- package/dist/getDatetimeRuleProcessorTanStackDB-Dloxv6k2.mjs +2 -0
- package/dist/getDatetimeRuleProcessorTanStackDB-Dloxv6k2.mjs.map +1 -0
- package/dist/getDatetimeRuleProcessorTanStackDB-LDwhMJg0.js +1035 -0
- package/dist/getDatetimeRuleProcessorTanStackDB-LDwhMJg0.js.map +1 -0
- package/dist/react-querybuilder_datetime.d.mts +214 -8
- package/dist/react-querybuilder_datetime.date-fns.d.mts +46 -2
- package/dist/react-querybuilder_datetime.date-fns.mjs +71 -4
- package/dist/react-querybuilder_datetime.date-fns.mjs.map +1 -1
- package/dist/react-querybuilder_datetime.dayjs.d.mts +46 -2
- package/dist/react-querybuilder_datetime.dayjs.mjs +47 -24
- package/dist/react-querybuilder_datetime.dayjs.mjs.map +1 -1
- package/dist/react-querybuilder_datetime.jsdate.d.mts +46 -2
- package/dist/react-querybuilder_datetime.jsdate.mjs +106 -3
- package/dist/react-querybuilder_datetime.jsdate.mjs.map +1 -1
- package/dist/react-querybuilder_datetime.legacy-esm.d.ts +214 -8
- package/dist/react-querybuilder_datetime.legacy-esm.date-fns.d.ts +46 -2
- package/dist/react-querybuilder_datetime.legacy-esm.date-fns.js +71 -4
- package/dist/react-querybuilder_datetime.legacy-esm.date-fns.js.map +1 -1
- package/dist/react-querybuilder_datetime.legacy-esm.dayjs.d.ts +46 -2
- package/dist/react-querybuilder_datetime.legacy-esm.dayjs.js +47 -24
- package/dist/react-querybuilder_datetime.legacy-esm.dayjs.js.map +1 -1
- package/dist/react-querybuilder_datetime.legacy-esm.js +425 -58
- package/dist/react-querybuilder_datetime.legacy-esm.js.map +1 -1
- package/dist/react-querybuilder_datetime.legacy-esm.jsdate.d.ts +46 -2
- package/dist/react-querybuilder_datetime.legacy-esm.jsdate.js +106 -3
- package/dist/react-querybuilder_datetime.legacy-esm.jsdate.js.map +1 -1
- package/dist/react-querybuilder_datetime.legacy-esm.luxon.d.ts +46 -2
- package/dist/react-querybuilder_datetime.legacy-esm.luxon.js +58 -3
- package/dist/react-querybuilder_datetime.legacy-esm.luxon.js.map +1 -1
- package/dist/react-querybuilder_datetime.luxon.d.mts +46 -2
- package/dist/react-querybuilder_datetime.luxon.mjs +58 -3
- package/dist/react-querybuilder_datetime.luxon.mjs.map +1 -1
- package/dist/react-querybuilder_datetime.mjs +443 -57
- package/dist/react-querybuilder_datetime.mjs.map +1 -1
- package/dist/react-querybuilder_datetime.production.d.mts +214 -8
- package/dist/react-querybuilder_datetime.production.date-fns.d.mts +46 -2
- package/dist/react-querybuilder_datetime.production.date-fns.mjs +1 -1
- package/dist/react-querybuilder_datetime.production.date-fns.mjs.map +1 -1
- package/dist/react-querybuilder_datetime.production.dayjs.d.mts +46 -2
- package/dist/react-querybuilder_datetime.production.dayjs.mjs +1 -1
- package/dist/react-querybuilder_datetime.production.dayjs.mjs.map +1 -1
- package/dist/react-querybuilder_datetime.production.jsdate.d.mts +46 -2
- package/dist/react-querybuilder_datetime.production.jsdate.mjs +1 -1
- package/dist/react-querybuilder_datetime.production.jsdate.mjs.map +1 -1
- package/dist/react-querybuilder_datetime.production.luxon.d.mts +46 -2
- package/dist/react-querybuilder_datetime.production.luxon.mjs +1 -1
- package/dist/react-querybuilder_datetime.production.luxon.mjs.map +1 -1
- package/dist/react-querybuilder_datetime.production.mjs +1 -1
- package/dist/react-querybuilder_datetime.production.mjs.map +1 -1
- package/dist/rqbDateTimeLibraryAPI.dayjs-BW7faYFD.mjs +29 -0
- package/dist/rqbDateTimeLibraryAPI.dayjs-BW7faYFD.mjs.map +1 -0
- package/dist/rqbDateTimeLibraryAPI.dayjs-BoX90aqZ.mjs +2 -0
- package/dist/rqbDateTimeLibraryAPI.dayjs-BoX90aqZ.mjs.map +1 -0
- package/dist/rqbDateTimeLibraryAPI.dayjs-DvFSxPKu.js +29 -0
- package/dist/rqbDateTimeLibraryAPI.dayjs-DvFSxPKu.js.map +1 -0
- package/dist/styles/_layout.scss +30 -0
- package/dist/styles/_root.scss +5 -0
- package/dist/styles/_variables.scss +8 -0
- package/dist/types-CdjHqQ0k.d.mts +265 -0
- package/dist/types-CdjHqQ0k.d.ts +265 -0
- package/package.json +30 -15
- package/dist/cjs/getDatetimeRuleProcessorSQL-Cca9pzSn.js +0 -2
- package/dist/cjs/getDatetimeRuleProcessorSQL-Cca9pzSn.js.map +0 -1
- package/dist/cjs/getDatetimeRuleProcessorSQL-CrA2ZrSe.js +0 -563
- package/dist/cjs/getDatetimeRuleProcessorSQL-CrA2ZrSe.js.map +0 -1
- package/dist/cjs/types-c6_k1Tpr.d.ts +0 -105
- package/dist/getDatetimeRuleProcessorSQL-Crw01Jo-.js +0 -482
- package/dist/getDatetimeRuleProcessorSQL-Crw01Jo-.js.map +0 -1
- package/dist/getDatetimeRuleProcessorSQL-CvGKzojM.mjs +0 -2
- package/dist/getDatetimeRuleProcessorSQL-CvGKzojM.mjs.map +0 -1
- package/dist/getDatetimeRuleProcessorSQL-Nz_XjNeY.mjs +0 -468
- package/dist/getDatetimeRuleProcessorSQL-Nz_XjNeY.mjs.map +0 -1
- package/dist/types-c6_k1Tpr.d.mts +0 -105
- package/dist/types-c6_k1Tpr.d.ts +0 -105
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
2
|
+
const require_rqbDateTimeLibraryAPI_dayjs = require("./rqbDateTimeLibraryAPI.dayjs-CzLh_zi9.js");
|
|
3
|
+
const require_getDatetimeRuleProcessorTanStackDB = require("./getDatetimeRuleProcessorTanStackDB-CL79A1_x.js");
|
|
3
4
|
let react_querybuilder = require("react-querybuilder");
|
|
5
|
+
let react = require("react");
|
|
6
|
+
react = require_rqbDateTimeLibraryAPI_dayjs.__toESM(react);
|
|
4
7
|
//#region src/datetimeRuleProcessorJsonLogic.ts
|
|
5
8
|
const dateOperationMap = {
|
|
6
9
|
"!=": "dateNotOn",
|
|
@@ -24,26 +27,37 @@ const dateOperationMap = {
|
|
|
24
27
|
*/
|
|
25
28
|
const datetimeRuleProcessorJsonLogic = (rule, options) => {
|
|
26
29
|
const opts = options ?? ( /* v8 ignore start -- @preserve */ {});
|
|
27
|
-
if (!
|
|
28
|
-
const { field,
|
|
30
|
+
if (!require_getDatetimeRuleProcessorTanStackDB.processIsDateField(opts.context?.isDateField, rule, opts)) return (0, react_querybuilder.defaultRuleProcessorJsonLogic)(rule, opts);
|
|
31
|
+
const { field, value, valueSource } = rule;
|
|
32
|
+
const operator = require_getDatetimeRuleProcessorTanStackDB.resolveDatetimeOperator(rule, opts);
|
|
29
33
|
const valueIsField = valueSource === "field";
|
|
30
34
|
const fieldObject = { var: field };
|
|
31
|
-
const
|
|
35
|
+
const dateOnly = require_getDatetimeRuleProcessorTanStackDB.isDateOnlyDatatype(opts?.fieldData?.datatype);
|
|
36
|
+
const renderValue = (v) => {
|
|
37
|
+
if (valueIsField) return { var: `${v}` };
|
|
38
|
+
if (require_getDatetimeRuleProcessorTanStackDB.isRelativeDateTimeValue(v)) return { dateRelative: [
|
|
39
|
+
v.anchor,
|
|
40
|
+
v.offset,
|
|
41
|
+
v.unit,
|
|
42
|
+
dateOnly
|
|
43
|
+
] };
|
|
44
|
+
return v;
|
|
45
|
+
};
|
|
32
46
|
switch (operator) {
|
|
33
47
|
case "<":
|
|
34
48
|
case "<=":
|
|
35
49
|
case "=":
|
|
36
50
|
case "!=":
|
|
37
51
|
case ">":
|
|
38
|
-
case ">=": return { [dateOperationMap[operator]]: [fieldObject,
|
|
52
|
+
case ">=": return { [dateOperationMap[operator]]: [fieldObject, renderValue(value)] };
|
|
39
53
|
case "in":
|
|
40
54
|
case "notIn": {
|
|
41
|
-
const valueAsArray = (0, react_querybuilder.toArray)(value).map(
|
|
55
|
+
const valueAsArray = (Array.isArray(value) ? value : (0, react_querybuilder.toArray)(value)).map(renderValue);
|
|
42
56
|
return { [dateOperationMap[operator]]: [fieldObject, valueAsArray] };
|
|
43
57
|
}
|
|
44
58
|
case "between":
|
|
45
59
|
case "notBetween": {
|
|
46
|
-
const valueAsArray = (0, react_querybuilder.toArray)(value).map(
|
|
60
|
+
const valueAsArray = (Array.isArray(value) ? value : (0, react_querybuilder.toArray)(value)).map(renderValue);
|
|
47
61
|
if (valueAsArray.length < 2) return false;
|
|
48
62
|
return { [dateOperationMap[operator]]: [
|
|
49
63
|
valueAsArray[0],
|
|
@@ -55,77 +69,474 @@ const datetimeRuleProcessorJsonLogic = (rule, options) => {
|
|
|
55
69
|
return (0, react_querybuilder.defaultRuleProcessorJsonLogic)(rule, options);
|
|
56
70
|
};
|
|
57
71
|
//#endregion
|
|
58
|
-
//#region src/
|
|
59
|
-
const shouldNegate = (op) => /^(does)?not/i.test(op);
|
|
60
|
-
const negate = (clause, neg) => neg ? `$not(${clause})` : `${clause}`;
|
|
72
|
+
//#region src/InheritedValueEditorContext.ts
|
|
61
73
|
/**
|
|
62
|
-
*
|
|
63
|
-
* {@link
|
|
74
|
+
* Holds the value editor inherited from an outer (compat package) context provider,
|
|
75
|
+
* captured _before_ {@link QueryBuilderDateTime} overrides it. Lets the date/time value
|
|
76
|
+
* editor delegate non-date fields (and absolute date inputs) to the compat editor instead
|
|
77
|
+
* of the bare default {@link react-querybuilder!ValueEditor ValueEditor}. `null` = none
|
|
78
|
+
* inherited (fall back to default).
|
|
64
79
|
*/
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
80
|
+
const InheritedValueEditorContext = (0, react.createContext)(null);
|
|
81
|
+
/** Inherited (compat) value editor, or `null` if none. See {@link InheritedValueEditorContext}. */
|
|
82
|
+
const useInheritedValueEditor = () => (0, react.useContext)(InheritedValueEditorContext);
|
|
83
|
+
//#endregion
|
|
84
|
+
//#region src/relativeDateTimeConstants.ts
|
|
85
|
+
/**
|
|
86
|
+
* Class name applied to the absolute/relative mode toggle button. Package-local (not part
|
|
87
|
+
* of the core `standardClassnames`) to avoid coupling core to this extension.
|
|
88
|
+
*/
|
|
89
|
+
const relativeDateTimeToggleClassName = "rule-value-dateTimeRelative-toggle";
|
|
90
|
+
/** Default value applied when switching a rule to relative mode. */
|
|
91
|
+
const defaultRelativeDateTimeValue = {
|
|
92
|
+
mode: "relative",
|
|
93
|
+
anchor: "now",
|
|
94
|
+
offset: 0,
|
|
95
|
+
unit: "day"
|
|
96
|
+
};
|
|
97
|
+
/** Default anchor (reference-point) options for the relative date/time editor. */
|
|
98
|
+
const defaultRelativeDateTimeAnchors = [
|
|
99
|
+
{
|
|
100
|
+
name: "now",
|
|
101
|
+
value: "now",
|
|
102
|
+
label: "now"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: "startOfDay",
|
|
106
|
+
value: "startOfDay",
|
|
107
|
+
label: "start of day"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
name: "endOfDay",
|
|
111
|
+
value: "endOfDay",
|
|
112
|
+
label: "end of day"
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: "startOfWeek",
|
|
116
|
+
value: "startOfWeek",
|
|
117
|
+
label: "start of week"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
name: "endOfWeek",
|
|
121
|
+
value: "endOfWeek",
|
|
122
|
+
label: "end of week"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
name: "startOfMonth",
|
|
126
|
+
value: "startOfMonth",
|
|
127
|
+
label: "start of month"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
name: "endOfMonth",
|
|
131
|
+
value: "endOfMonth",
|
|
132
|
+
label: "end of month"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
name: "startOfYear",
|
|
136
|
+
value: "startOfYear",
|
|
137
|
+
label: "start of year"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
name: "endOfYear",
|
|
141
|
+
value: "endOfYear",
|
|
142
|
+
label: "end of year"
|
|
85
143
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
144
|
+
];
|
|
145
|
+
/** Default unit options for the relative date/time editor. */
|
|
146
|
+
const defaultRelativeDateTimeUnits = [
|
|
147
|
+
{
|
|
148
|
+
name: "minute",
|
|
149
|
+
value: "minute",
|
|
150
|
+
label: "minute(s)"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
name: "hour",
|
|
154
|
+
value: "hour",
|
|
155
|
+
label: "hour(s)"
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
name: "day",
|
|
159
|
+
value: "day",
|
|
160
|
+
label: "day(s)"
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
name: "week",
|
|
164
|
+
value: "week",
|
|
165
|
+
label: "week(s)"
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
name: "month",
|
|
169
|
+
value: "month",
|
|
170
|
+
label: "month(s)"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
name: "year",
|
|
174
|
+
value: "year",
|
|
175
|
+
label: "year(s)"
|
|
176
|
+
}
|
|
177
|
+
];
|
|
178
|
+
/** Default labels/content for the absolute/relative mode toggle. */
|
|
179
|
+
const defaultRelativeDateTimeToggleLabels = {
|
|
180
|
+
label: "Toggle relative date/time",
|
|
181
|
+
absoluteTitle: "Absolute date/time (click for relative)",
|
|
182
|
+
relativeTitle: "Relative date/time (click for absolute)",
|
|
183
|
+
absoluteContent: "",
|
|
184
|
+
relativeContent: ""
|
|
185
|
+
};
|
|
186
|
+
//#endregion
|
|
187
|
+
//#region src/relativeDateTimeModeControllers.tsx
|
|
188
|
+
/**
|
|
189
|
+
* Compact absolute/relative toggle rendered by {@link toggleModeController}. A
|
|
190
|
+
* `role="switch"` button whose default glyph is supplied by CSS (keyed on
|
|
191
|
+
* `aria-checked`); override via the `toggleLabels` config.
|
|
192
|
+
*
|
|
193
|
+
* @group Components
|
|
194
|
+
*/
|
|
195
|
+
const RelativeDateTimeModeToggle = ({ isRelative, setMode, disabled, className, labels }) => {
|
|
196
|
+
const onClick = react.useCallback(() => setMode(isRelative ? "absolute" : "relative"), [setMode, isRelative]);
|
|
197
|
+
return /* @__PURE__ */ react.createElement("button", {
|
|
198
|
+
type: "button",
|
|
199
|
+
role: "switch",
|
|
200
|
+
"aria-checked": isRelative,
|
|
201
|
+
"aria-label": labels.label,
|
|
202
|
+
title: isRelative ? labels.relativeTitle : labels.absoluteTitle,
|
|
203
|
+
disabled,
|
|
204
|
+
className: (0, react_querybuilder.clsx)(relativeDateTimeToggleClassName, className),
|
|
205
|
+
onClick
|
|
206
|
+
}, isRelative ? labels.relativeContent : labels.absoluteContent);
|
|
207
|
+
};
|
|
208
|
+
/**
|
|
209
|
+
* Zero-config default {@link RelativeDateTimeModeController}: derives the mode from the
|
|
210
|
+
* value shape and renders a compact toggle button to switch between absolute and
|
|
211
|
+
* relative entry.
|
|
212
|
+
*/
|
|
213
|
+
const toggleModeController = {
|
|
214
|
+
isRelative: (props) => require_getDatetimeRuleProcessorTanStackDB.isRelativeDateTimeValue(props.value),
|
|
215
|
+
ModeControl: RelativeDateTimeModeToggle
|
|
216
|
+
};
|
|
217
|
+
/**
|
|
218
|
+
* Builds an operator-driven {@link RelativeDateTimeModeController} that derives the mode
|
|
219
|
+
* from the rule's operator. Pass the operator name(s) (or a predicate) that should put the
|
|
220
|
+
* editor in relative mode. No toggle is rendered — the operator selector is the mode
|
|
221
|
+
* affordance.
|
|
222
|
+
*
|
|
223
|
+
* NOTE: the chosen operators only signal _mode_; the rule's value remains a
|
|
224
|
+
* {@link RelativeDateTimeValue}. For these operators to export correctly, map each one to a
|
|
225
|
+
* real comparison operator via `context.relativeOperatorMap` when calling `formatQuery`
|
|
226
|
+
* (e.g. `{ relativeEq: '=' }`). See the documentation.
|
|
227
|
+
*/
|
|
228
|
+
const createOperatorModeController = (relativeOperators) => ({ isRelative: (props) => typeof relativeOperators === "function" ? relativeOperators(props.operator) : relativeOperators.includes(props.operator) });
|
|
229
|
+
/**
|
|
230
|
+
* Appends the given `operators` to each field's `operators` list, so the operator-driven
|
|
231
|
+
* controller (see {@link createOperatorModeController}) has an operator to switch into
|
|
232
|
+
* relative mode. Fields without an explicit `operators` list fall back to the core
|
|
233
|
+
* `defaultOperators`.
|
|
234
|
+
*/
|
|
235
|
+
const withRelativeOperators = (fields, operators) => fields.map((field) => ({
|
|
236
|
+
...field,
|
|
237
|
+
operators: [...field.operators ?? react_querybuilder.defaultOperators, ...operators]
|
|
238
|
+
}));
|
|
239
|
+
//#endregion
|
|
240
|
+
//#region src/RelativeDateTimeConfigContext.tsx
|
|
241
|
+
/**
|
|
242
|
+
* Carries {@link RelativeDateTimeEditorConfig} to the {@link RelativeDateTimeValueEditor}.
|
|
243
|
+
* Provided by {@link QueryBuilderDateTime}; defaults apply when no provider is present.
|
|
244
|
+
*/
|
|
245
|
+
const RelativeDateTimeConfigContext = (0, react.createContext)({});
|
|
246
|
+
/** Reads the relative date/time editor config from context, merged with defaults. */
|
|
247
|
+
const useRelativeDateTimeConfig = () => {
|
|
248
|
+
const config = (0, react.useContext)(RelativeDateTimeConfigContext);
|
|
249
|
+
return (0, react.useMemo)(() => ({
|
|
250
|
+
modeController: config.modeController ?? toggleModeController,
|
|
251
|
+
anchors: config.anchors ?? defaultRelativeDateTimeAnchors,
|
|
252
|
+
units: config.units ?? defaultRelativeDateTimeUnits,
|
|
253
|
+
toggleLabels: {
|
|
254
|
+
...defaultRelativeDateTimeToggleLabels,
|
|
255
|
+
...config.toggleLabels
|
|
256
|
+
},
|
|
257
|
+
dateTimeAPI: config.dateTimeAPI ?? require_rqbDateTimeLibraryAPI_dayjs.rqbDateTimeLibraryAPI
|
|
258
|
+
}), [config]);
|
|
259
|
+
};
|
|
260
|
+
//#endregion
|
|
261
|
+
//#region src/RelativeDateTimeValueEditor.tsx
|
|
262
|
+
const dummyPath = [];
|
|
263
|
+
const dummyFieldData = {
|
|
264
|
+
name: "",
|
|
265
|
+
value: "",
|
|
266
|
+
label: ""
|
|
267
|
+
};
|
|
268
|
+
/** Splits a value into the from/to pair used by between/notBetween, object-safe. */
|
|
269
|
+
const toBetweenArray = (value) => Array.isArray(value) ? value : require_getDatetimeRuleProcessorTanStackDB.isRelativeDateTimeValue(value) ? [value] : (0, react_querybuilder.toArray)(value);
|
|
270
|
+
/**
|
|
271
|
+
* Renders a single absolute-or-relative date/time value: a mode affordance (per the
|
|
272
|
+
* controller) plus either an absolute date input or anchor + signed offset + unit
|
|
273
|
+
* selectors. Reused once per slot so between/notBetween can mix bounds (e.g. an absolute
|
|
274
|
+
* "from" and a relative "to").
|
|
275
|
+
*/
|
|
276
|
+
const RelativeDateTimeSingleValueEditor = ({ baseProps, value, onChange, absoluteOperator, config, SelectorComponent, valueListItemClassName, numericSchema }) => {
|
|
277
|
+
const { schema, disabled, title, testID } = baseProps;
|
|
278
|
+
const { modeController, anchors, units, toggleLabels } = config;
|
|
279
|
+
const NumericEditor = useInheritedValueEditor() ?? react_querybuilder.ValueEditor;
|
|
280
|
+
const isRelative = modeController.isRelative({
|
|
281
|
+
...baseProps,
|
|
282
|
+
value
|
|
283
|
+
});
|
|
284
|
+
const relValue = require_getDatetimeRuleProcessorTanStackDB.isRelativeDateTimeValue(value) ? value : defaultRelativeDateTimeValue;
|
|
285
|
+
const handleSetMode = (0, react.useCallback)((mode) => onChange(mode === "relative" ? defaultRelativeDateTimeValue : ""), [onChange]);
|
|
286
|
+
const handleChangeAnchor = (0, react.useCallback)((anchor) => onChange({
|
|
287
|
+
...relValue,
|
|
288
|
+
anchor
|
|
289
|
+
}), [onChange, relValue]);
|
|
290
|
+
const handleChangeOffset = (0, react.useCallback)((offset) => onChange({
|
|
291
|
+
...relValue,
|
|
292
|
+
offset: (0, react_querybuilder.parseNumber)(offset, { parseNumbers: true }) || 0
|
|
293
|
+
}), [onChange, relValue]);
|
|
294
|
+
const handleChangeUnit = (0, react.useCallback)((unit) => onChange({
|
|
295
|
+
...relValue,
|
|
296
|
+
unit
|
|
297
|
+
}), [onChange, relValue]);
|
|
298
|
+
const { ModeControl } = modeController;
|
|
299
|
+
return /* @__PURE__ */ react.createElement(react.Fragment, null, ModeControl && /* @__PURE__ */ react.createElement(ModeControl, {
|
|
300
|
+
isRelative,
|
|
301
|
+
setMode: handleSetMode,
|
|
302
|
+
schema,
|
|
303
|
+
disabled,
|
|
304
|
+
className: valueListItemClassName,
|
|
305
|
+
title,
|
|
306
|
+
testID,
|
|
307
|
+
labels: toggleLabels
|
|
308
|
+
}), isRelative ? /* @__PURE__ */ react.createElement(react.Fragment, null, /* @__PURE__ */ react.createElement(SelectorComponent, {
|
|
309
|
+
schema,
|
|
310
|
+
testID,
|
|
311
|
+
title,
|
|
312
|
+
className: valueListItemClassName,
|
|
313
|
+
handleOnChange: handleChangeAnchor,
|
|
314
|
+
disabled,
|
|
315
|
+
value: relValue.anchor,
|
|
316
|
+
options: anchors,
|
|
317
|
+
multiple: false,
|
|
318
|
+
listsAsArrays: false,
|
|
319
|
+
path: dummyPath,
|
|
320
|
+
level: 0
|
|
321
|
+
}), /* @__PURE__ */ react.createElement(NumericEditor, {
|
|
322
|
+
skipHook: true,
|
|
323
|
+
testID,
|
|
324
|
+
inputType: "number",
|
|
325
|
+
title,
|
|
326
|
+
className: valueListItemClassName,
|
|
327
|
+
disabled,
|
|
328
|
+
handleOnChange: handleChangeOffset,
|
|
329
|
+
field: "",
|
|
330
|
+
operator: "",
|
|
331
|
+
value: relValue.offset,
|
|
332
|
+
valueSource: "value",
|
|
333
|
+
fieldData: dummyFieldData,
|
|
334
|
+
schema: numericSchema,
|
|
335
|
+
path: dummyPath,
|
|
336
|
+
level: 0,
|
|
337
|
+
rule: {
|
|
338
|
+
field: "",
|
|
339
|
+
operator: "=",
|
|
340
|
+
value: relValue.offset
|
|
109
341
|
}
|
|
342
|
+
}), relValue.offset !== 0 && /* @__PURE__ */ react.createElement(SelectorComponent, {
|
|
343
|
+
schema,
|
|
344
|
+
testID,
|
|
345
|
+
title,
|
|
346
|
+
className: valueListItemClassName,
|
|
347
|
+
handleOnChange: handleChangeUnit,
|
|
348
|
+
disabled,
|
|
349
|
+
value: relValue.unit,
|
|
350
|
+
options: units,
|
|
351
|
+
multiple: false,
|
|
352
|
+
listsAsArrays: false,
|
|
353
|
+
path: dummyPath,
|
|
354
|
+
level: 0
|
|
355
|
+
})) : /* @__PURE__ */ react.createElement(DateTimeValueEditor, {
|
|
356
|
+
...baseProps,
|
|
357
|
+
operator: absoluteOperator,
|
|
358
|
+
value,
|
|
359
|
+
handleOnChange: onChange,
|
|
360
|
+
className: react_querybuilder.standardClassnames.value
|
|
361
|
+
}));
|
|
362
|
+
};
|
|
363
|
+
/**
|
|
364
|
+
* Value editor with support for {@link RelativeDateTimeValue relative date/time values}
|
|
365
|
+
* (e.g. "three months ago" or "the beginning of this year"). How the user switches
|
|
366
|
+
* between absolute and relative modes is delegated to a pluggable
|
|
367
|
+
* {@link RelativeDateTimeModeController} (default: a compact toggle), supplied via
|
|
368
|
+
* {@link QueryBuilderDateTime}. In relative mode it renders anchor + signed offset + unit
|
|
369
|
+
* selectors; the unit selector is hidden when the offset is `0`.
|
|
370
|
+
*
|
|
371
|
+
* For the `between`/`notBetween` operators it renders two independent value editors (each
|
|
372
|
+
* with its own mode affordance) and stores the bounds as a two-element array, so the from
|
|
373
|
+
* and to bounds can independently be absolute or relative.
|
|
374
|
+
*
|
|
375
|
+
* @group Components
|
|
376
|
+
*/
|
|
377
|
+
const RelativeDateTimeValueEditor = (props) => {
|
|
378
|
+
const { valueListItemClassName } = (0, react_querybuilder.useValueEditor)(props);
|
|
379
|
+
const { className, value, handleOnChange, schema, operator, separator } = props;
|
|
380
|
+
const { suppressStandardClassnames } = schema;
|
|
381
|
+
const SelectorComponent = props.selectorComponent ?? schema.controls.valueSelector;
|
|
382
|
+
const config = useRelativeDateTimeConfig();
|
|
383
|
+
const numericSchema = (0, react.useMemo)(() => ({
|
|
384
|
+
...schema,
|
|
385
|
+
parseNumbers: true
|
|
386
|
+
}), [schema]);
|
|
387
|
+
const outerClassname = (0, react.useMemo)(() => (0, react_querybuilder.clsx)(suppressStandardClassnames || react_querybuilder.standardClassnames.valueDateTimeRelative, className), [suppressStandardClassnames, className]);
|
|
388
|
+
const isBetween = operator === "between" || operator === "notBetween";
|
|
389
|
+
const valueAsArray = (0, react.useMemo)(() => toBetweenArray(value), [value]);
|
|
390
|
+
const handleChangeBound = (0, react.useCallback)((index) => (boundValue) => {
|
|
391
|
+
const next = [valueAsArray[0], valueAsArray[1]];
|
|
392
|
+
next[index] = boundValue;
|
|
393
|
+
handleOnChange(next);
|
|
394
|
+
}, [valueAsArray, handleOnChange]);
|
|
395
|
+
if (isBetween) return /* @__PURE__ */ react.createElement("span", { className: outerClassname }, /* @__PURE__ */ react.createElement(RelativeDateTimeSingleValueEditor, {
|
|
396
|
+
baseProps: props,
|
|
397
|
+
value: valueAsArray[0],
|
|
398
|
+
onChange: handleChangeBound(0),
|
|
399
|
+
absoluteOperator: "=",
|
|
400
|
+
config,
|
|
401
|
+
SelectorComponent,
|
|
402
|
+
valueListItemClassName,
|
|
403
|
+
numericSchema
|
|
404
|
+
}), separator, /* @__PURE__ */ react.createElement(RelativeDateTimeSingleValueEditor, {
|
|
405
|
+
baseProps: props,
|
|
406
|
+
value: valueAsArray[1],
|
|
407
|
+
onChange: handleChangeBound(1),
|
|
408
|
+
absoluteOperator: "=",
|
|
409
|
+
config,
|
|
410
|
+
SelectorComponent,
|
|
411
|
+
valueListItemClassName,
|
|
412
|
+
numericSchema
|
|
413
|
+
}));
|
|
414
|
+
return /* @__PURE__ */ react.createElement("span", { className: outerClassname }, /* @__PURE__ */ react.createElement(RelativeDateTimeSingleValueEditor, {
|
|
415
|
+
baseProps: props,
|
|
416
|
+
value,
|
|
417
|
+
onChange: handleOnChange,
|
|
418
|
+
absoluteOperator: operator,
|
|
419
|
+
config,
|
|
420
|
+
SelectorComponent,
|
|
421
|
+
valueListItemClassName,
|
|
422
|
+
numericSchema
|
|
423
|
+
}));
|
|
424
|
+
};
|
|
425
|
+
//#endregion
|
|
426
|
+
//#region src/QueryBuilderDateTime.tsx
|
|
427
|
+
/**
|
|
428
|
+
* Whether a rule should use a date/time editor, based on either the coerced input
|
|
429
|
+
* type (`date`/`datetime-local`) or a date-like `datatype` (`date`/`datetime`/`timestamp`).
|
|
430
|
+
*/
|
|
431
|
+
const isDateTimeEditor = (props, inputTypeCoerced) => props.type === "text" && (inputTypeCoerced === "date" || inputTypeCoerced === "datetime-local") || /^(?:date|datetime|timestamp)\b/i.test(props.fieldData?.datatype);
|
|
432
|
+
const pad2 = (n) => `${n}`.padStart(2, "0");
|
|
433
|
+
/**
|
|
434
|
+
* Formats a `Date` into the local value expected by a native `date`/`datetime-local`
|
|
435
|
+
* input (library-agnostic; the date library only handles parsing/validation).
|
|
436
|
+
*/
|
|
437
|
+
const formatDateInputValue = (d, withTime) => {
|
|
438
|
+
const datePart = `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())}`;
|
|
439
|
+
return withTime ? `${datePart}T${pad2(d.getHours())}:${pad2(d.getMinutes())}` : datePart;
|
|
440
|
+
};
|
|
441
|
+
const DateTimeValueEditor = (props) => {
|
|
442
|
+
const uVE = (0, react_querybuilder.useValueEditor)(props);
|
|
443
|
+
const InheritedEditor = useInheritedValueEditor();
|
|
444
|
+
const { dateTimeAPI } = useRelativeDateTimeConfig();
|
|
445
|
+
const fallback = (p) => InheritedEditor ? /* @__PURE__ */ react.createElement(InheritedEditor, p) : /* @__PURE__ */ react.createElement(react_querybuilder.ValueEditor, {
|
|
446
|
+
...p,
|
|
447
|
+
skipHook: true
|
|
448
|
+
});
|
|
449
|
+
if (!isDateTimeEditor(props, uVE.inputTypeCoerced)) return fallback(props);
|
|
450
|
+
if (dateTimeAPI.isValid(props.value)) {
|
|
451
|
+
const value = formatDateInputValue(dateTimeAPI.toDate(props.value), uVE.inputTypeCoerced !== "date");
|
|
452
|
+
return fallback({
|
|
453
|
+
...props,
|
|
454
|
+
value
|
|
455
|
+
});
|
|
110
456
|
}
|
|
111
|
-
return (
|
|
457
|
+
return fallback(props);
|
|
458
|
+
};
|
|
459
|
+
/**
|
|
460
|
+
* Provider value editor: renders the relative-capable {@link RelativeDateTimeValueEditor}
|
|
461
|
+
* for date/time fields and falls back to the inherited (compat) editor for everything else.
|
|
462
|
+
*/
|
|
463
|
+
const QueryBuilderDateTimeValueEditor = (props) => {
|
|
464
|
+
const uVE = (0, react_querybuilder.useValueEditor)(props);
|
|
465
|
+
const InheritedEditor = useInheritedValueEditor();
|
|
466
|
+
if (isDateTimeEditor(props, uVE.inputTypeCoerced)) return /* @__PURE__ */ react.createElement(RelativeDateTimeValueEditor, props);
|
|
467
|
+
return InheritedEditor ? /* @__PURE__ */ react.createElement(InheritedEditor, props) : /* @__PURE__ */ react.createElement(react_querybuilder.ValueEditor, {
|
|
468
|
+
...props,
|
|
469
|
+
skipHook: true
|
|
470
|
+
});
|
|
471
|
+
};
|
|
472
|
+
const QueryBuilderDateTimeContext = (0, react_querybuilder.getCompatContextProvider)({ controlElements: { valueEditor: QueryBuilderDateTimeValueEditor } });
|
|
473
|
+
/**
|
|
474
|
+
* Context provider enabling date/time features for a wrapped
|
|
475
|
+
* {@link react-querybuilder!QueryBuilder QueryBuilder}: renders the relative-capable
|
|
476
|
+
* {@link RelativeDateTimeValueEditor} for date/time fields, and accepts optional
|
|
477
|
+
* {@link RelativeDateTimeEditorConfig} props (mode controller, anchor/unit options, and
|
|
478
|
+
* toggle labels). With no props it provides the zero-config toggle experience.
|
|
479
|
+
*
|
|
480
|
+
* @group Components
|
|
481
|
+
*/
|
|
482
|
+
const QueryBuilderDateTime = ({ children, modeController, anchors, units, toggleLabels, dateTimeAPI }) => {
|
|
483
|
+
const config = (0, react.useMemo)(() => ({
|
|
484
|
+
modeController,
|
|
485
|
+
anchors,
|
|
486
|
+
units,
|
|
487
|
+
toggleLabels,
|
|
488
|
+
dateTimeAPI
|
|
489
|
+
}), [
|
|
490
|
+
modeController,
|
|
491
|
+
anchors,
|
|
492
|
+
units,
|
|
493
|
+
toggleLabels,
|
|
494
|
+
dateTimeAPI
|
|
495
|
+
]);
|
|
496
|
+
const inheritedValueEditor = (0, react.useContext)(react_querybuilder.QueryBuilderContext).controlElements?.valueEditor ?? null;
|
|
497
|
+
return /* @__PURE__ */ react.createElement(RelativeDateTimeConfigContext.Provider, { value: config }, /* @__PURE__ */ react.createElement(InheritedValueEditorContext.Provider, { value: inheritedValueEditor }, /* @__PURE__ */ react.createElement(QueryBuilderDateTimeContext, null, children)));
|
|
112
498
|
};
|
|
113
499
|
//#endregion
|
|
500
|
+
exports.DateTimeValueEditor = DateTimeValueEditor;
|
|
501
|
+
exports.QueryBuilderDateTime = QueryBuilderDateTime;
|
|
502
|
+
exports.QueryBuilderDateTimeContext = QueryBuilderDateTimeContext;
|
|
503
|
+
exports.RelativeDateTimeConfigContext = RelativeDateTimeConfigContext;
|
|
504
|
+
exports.RelativeDateTimeModeToggle = RelativeDateTimeModeToggle;
|
|
505
|
+
exports.RelativeDateTimeValueEditor = RelativeDateTimeValueEditor;
|
|
506
|
+
exports.createOperatorModeController = createOperatorModeController;
|
|
114
507
|
exports.datetimeRuleProcessorJsonLogic = datetimeRuleProcessorJsonLogic;
|
|
115
|
-
exports.datetimeValueProcessorNL =
|
|
116
|
-
exports.defaultDateTimeNLOperatorMap =
|
|
117
|
-
exports.
|
|
118
|
-
exports.
|
|
119
|
-
exports.
|
|
120
|
-
exports.
|
|
121
|
-
exports.
|
|
122
|
-
exports.
|
|
123
|
-
exports.
|
|
124
|
-
exports.
|
|
125
|
-
exports.
|
|
126
|
-
exports.
|
|
127
|
-
exports.
|
|
128
|
-
exports.
|
|
129
|
-
exports.
|
|
508
|
+
exports.datetimeValueProcessorNL = require_getDatetimeRuleProcessorTanStackDB.datetimeValueProcessorNL;
|
|
509
|
+
exports.defaultDateTimeNLOperatorMap = require_getDatetimeRuleProcessorTanStackDB.defaultDateTimeNLOperatorMap;
|
|
510
|
+
exports.defaultRelativeDateTimeAnchors = defaultRelativeDateTimeAnchors;
|
|
511
|
+
exports.defaultRelativeDateTimeToggleLabels = defaultRelativeDateTimeToggleLabels;
|
|
512
|
+
exports.defaultRelativeDateTimeUnits = defaultRelativeDateTimeUnits;
|
|
513
|
+
exports.defaultRelativeDateTimeValue = defaultRelativeDateTimeValue;
|
|
514
|
+
exports.getDatetimeJsonLogicOperations = require_getDatetimeRuleProcessorTanStackDB.getDatetimeJsonLogicOperations;
|
|
515
|
+
exports.getDatetimeRuleProcessorCEL = require_getDatetimeRuleProcessorTanStackDB.getDatetimeRuleProcessorCEL;
|
|
516
|
+
exports.getDatetimeRuleProcessorCypher = require_getDatetimeRuleProcessorTanStackDB.getDatetimeRuleProcessorCypher;
|
|
517
|
+
exports.getDatetimeRuleProcessorDrizzle = require_getDatetimeRuleProcessorTanStackDB.getDatetimeRuleProcessorDrizzle;
|
|
518
|
+
exports.getDatetimeRuleProcessorElasticSearch = require_getDatetimeRuleProcessorTanStackDB.getDatetimeRuleProcessorElasticSearch;
|
|
519
|
+
exports.getDatetimeRuleProcessorGremlin = require_getDatetimeRuleProcessorTanStackDB.getDatetimeRuleProcessorGremlin;
|
|
520
|
+
exports.getDatetimeRuleProcessorJSONata = require_getDatetimeRuleProcessorTanStackDB.getDatetimeRuleProcessorJSONata;
|
|
521
|
+
exports.getDatetimeRuleProcessorLDAP = require_getDatetimeRuleProcessorTanStackDB.getDatetimeRuleProcessorLDAP;
|
|
522
|
+
exports.getDatetimeRuleProcessorMongoDB = require_getDatetimeRuleProcessorTanStackDB.getDatetimeRuleProcessorMongoDB;
|
|
523
|
+
exports.getDatetimeRuleProcessorMongoDBQuery = require_getDatetimeRuleProcessorTanStackDB.getDatetimeRuleProcessorMongoDBQuery;
|
|
524
|
+
exports.getDatetimeRuleProcessorNL = require_getDatetimeRuleProcessorTanStackDB.getDatetimeRuleProcessorNL;
|
|
525
|
+
exports.getDatetimeRuleProcessorParameterized = require_getDatetimeRuleProcessorTanStackDB.getDatetimeRuleProcessorParameterized;
|
|
526
|
+
exports.getDatetimeRuleProcessorPrisma = require_getDatetimeRuleProcessorTanStackDB.getDatetimeRuleProcessorPrisma;
|
|
527
|
+
exports.getDatetimeRuleProcessorSPARQL = require_getDatetimeRuleProcessorTanStackDB.getDatetimeRuleProcessorSPARQL;
|
|
528
|
+
exports.getDatetimeRuleProcessorSQL = require_getDatetimeRuleProcessorTanStackDB.getDatetimeRuleProcessorSQL;
|
|
529
|
+
exports.getDatetimeRuleProcessorSequelize = require_getDatetimeRuleProcessorTanStackDB.getDatetimeRuleProcessorSequelize;
|
|
530
|
+
exports.getDatetimeRuleProcessorSpEL = require_getDatetimeRuleProcessorTanStackDB.getDatetimeRuleProcessorSpEL;
|
|
531
|
+
exports.getDatetimeRuleProcessorTanStackDB = require_getDatetimeRuleProcessorTanStackDB.getDatetimeRuleProcessorTanStackDB;
|
|
532
|
+
exports.getDatetimeValueProcessorANSI = require_getDatetimeRuleProcessorTanStackDB.getDatetimeValueProcessorANSI;
|
|
533
|
+
exports.getDatetimeValueProcessorMSSQL = require_getDatetimeRuleProcessorTanStackDB.getDatetimeValueProcessorMSSQL;
|
|
534
|
+
exports.getDatetimeValueProcessorMySQL = require_getDatetimeRuleProcessorTanStackDB.getDatetimeValueProcessorMySQL;
|
|
535
|
+
exports.getDatetimeValueProcessorOracle = require_getDatetimeRuleProcessorTanStackDB.getDatetimeValueProcessorOracle;
|
|
536
|
+
exports.getDatetimeValueProcessorPostgreSQL = require_getDatetimeRuleProcessorTanStackDB.getDatetimeValueProcessorPostgreSQL;
|
|
537
|
+
exports.relativeDateTimeToggleClassName = relativeDateTimeToggleClassName;
|
|
538
|
+
exports.toggleModeController = toggleModeController;
|
|
539
|
+
exports.useRelativeDateTimeConfig = useRelativeDateTimeConfig;
|
|
540
|
+
exports.withRelativeOperators = withRelativeOperators;
|
|
130
541
|
|
|
131
542
|
//# sourceMappingURL=react-querybuilder_datetime.cjs.development.js.map
|