@pega/cosmos-react-condition-builder 9.0.0-build.9.9 → 9.0.1
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/lib/components/ConditionBuilder/AtomicCondition.d.ts +4 -0
- package/lib/components/ConditionBuilder/AtomicCondition.d.ts.map +1 -1
- package/lib/components/ConditionBuilder/AtomicCondition.js +10 -11
- package/lib/components/ConditionBuilder/AtomicCondition.js.map +1 -1
- package/lib/components/ConditionBuilder/ConditionBuilder.d.ts +2 -3
- package/lib/components/ConditionBuilder/ConditionBuilder.d.ts.map +1 -1
- package/lib/components/ConditionBuilder/ConditionBuilder.js +79 -40
- package/lib/components/ConditionBuilder/ConditionBuilder.js.map +1 -1
- package/lib/components/ConditionBuilder/ConditionBuilder.styles.d.ts +604 -6
- package/lib/components/ConditionBuilder/ConditionBuilder.styles.d.ts.map +1 -1
- package/lib/components/ConditionBuilder/ConditionBuilder.styles.js +90 -36
- package/lib/components/ConditionBuilder/ConditionBuilder.styles.js.map +1 -1
- package/lib/components/ConditionBuilder/ConditionBuilder.types.d.ts +42 -2
- package/lib/components/ConditionBuilder/ConditionBuilder.types.d.ts.map +1 -1
- package/lib/components/ConditionBuilder/ConditionBuilder.types.js.map +1 -1
- package/lib/components/ConditionBuilder/RhsControls/CSVInput.d.ts +18 -0
- package/lib/components/ConditionBuilder/RhsControls/CSVInput.d.ts.map +1 -0
- package/lib/components/ConditionBuilder/RhsControls/CSVInput.js +59 -0
- package/lib/components/ConditionBuilder/RhsControls/CSVInput.js.map +1 -0
- package/lib/components/ConditionBuilder/RhsControls/NumericInput.d.ts +2 -0
- package/lib/components/ConditionBuilder/RhsControls/NumericInput.d.ts.map +1 -1
- package/lib/components/ConditionBuilder/RhsControls/NumericInput.js +21 -5
- package/lib/components/ConditionBuilder/RhsControls/NumericInput.js.map +1 -1
- package/lib/components/ConditionBuilder/RhsControls/NumericRangeInput.d.ts +31 -0
- package/lib/components/ConditionBuilder/RhsControls/NumericRangeInput.d.ts.map +1 -0
- package/lib/components/ConditionBuilder/RhsControls/NumericRangeInput.js +52 -0
- package/lib/components/ConditionBuilder/RhsControls/NumericRangeInput.js.map +1 -0
- package/lib/components/ConditionBuilder/RhsControls/ValueSelector.d.ts +5 -3
- package/lib/components/ConditionBuilder/RhsControls/ValueSelector.d.ts.map +1 -1
- package/lib/components/ConditionBuilder/RhsControls/ValueSelector.js +28 -22
- package/lib/components/ConditionBuilder/RhsControls/ValueSelector.js.map +1 -1
- package/lib/components/ConditionBuilder/RhsControls/index.d.ts +5 -5
- package/lib/components/ConditionBuilder/RhsControls/index.d.ts.map +1 -1
- package/lib/components/ConditionBuilder/RhsControls/index.js +35 -43
- package/lib/components/ConditionBuilder/RhsControls/index.js.map +1 -1
- package/lib/components/ConditionBuilder/core/comparators.d.ts.map +1 -1
- package/lib/components/ConditionBuilder/core/comparators.js +6 -1
- package/lib/components/ConditionBuilder/core/comparators.js.map +1 -1
- package/lib/components/ConditionBuilder/core/formatter.d.ts.map +1 -1
- package/lib/components/ConditionBuilder/core/formatter.js +51 -4
- package/lib/components/ConditionBuilder/core/formatter.js.map +1 -1
- package/lib/components/ConditionBuilder/core/time-utils.d.ts +1 -1
- package/lib/components/ConditionBuilder/core/time-utils.d.ts.map +1 -1
- package/lib/components/ConditionBuilder/core/time-utils.js +4 -3
- package/lib/components/ConditionBuilder/core/time-utils.js.map +1 -1
- package/lib/components/ConditionBuilder/core/transformer.d.ts +6 -1
- package/lib/components/ConditionBuilder/core/transformer.d.ts.map +1 -1
- package/lib/components/ConditionBuilder/core/transformer.js +104 -84
- package/lib/components/ConditionBuilder/core/transformer.js.map +1 -1
- package/lib/components/ConditionBuilder/core/types.d.ts +4 -1
- package/lib/components/ConditionBuilder/core/types.d.ts.map +1 -1
- package/lib/components/ConditionBuilder/core/types.js.map +1 -1
- package/lib/components/ConditionBuilder/index.d.ts +2 -1
- package/lib/components/ConditionBuilder/index.d.ts.map +1 -1
- package/lib/components/ConditionBuilder/index.js.map +1 -1
- package/lib/components/ConditionInput/ConditionInput.d.ts.map +1 -1
- package/lib/components/ConditionInput/ConditionInput.js +110 -32
- package/lib/components/ConditionInput/ConditionInput.js.map +1 -1
- package/lib/components/ConditionInput/ConditionInput.styles.d.ts +52 -4
- package/lib/components/ConditionInput/ConditionInput.styles.d.ts.map +1 -1
- package/lib/components/ConditionInput/ConditionInput.styles.js +4 -3
- package/lib/components/ConditionInput/ConditionInput.styles.js.map +1 -1
- package/lib/components/ConditionInput/ConditionInput.types.d.ts +4 -0
- package/lib/components/ConditionInput/ConditionInput.types.d.ts.map +1 -1
- package/lib/components/ConditionInput/ConditionInput.types.js.map +1 -1
- package/lib/components/PromotedFilters/ConditionSelector.d.ts +2 -0
- package/lib/components/PromotedFilters/ConditionSelector.d.ts.map +1 -1
- package/lib/components/PromotedFilters/ConditionSelector.js +13 -20
- package/lib/components/PromotedFilters/ConditionSelector.js.map +1 -1
- package/lib/components/PromotedFilters/PromotedFilters.d.ts.map +1 -1
- package/lib/components/PromotedFilters/PromotedFilters.js +36 -25
- package/lib/components/PromotedFilters/PromotedFilters.js.map +1 -1
- package/lib/components/PromotedFilters/PromotedFilters.styles.d.ts +191 -3
- package/lib/components/PromotedFilters/PromotedFilters.styles.d.ts.map +1 -1
- package/lib/components/PromotedFilters/PromotedFilters.styles.js +13 -5
- package/lib/components/PromotedFilters/PromotedFilters.styles.js.map +1 -1
- package/lib/components/PromotedFilters/PromotedFilters.types.d.ts +4 -0
- package/lib/components/PromotedFilters/PromotedFilters.types.d.ts.map +1 -1
- package/lib/components/PromotedFilters/PromotedFilters.types.js.map +1 -1
- package/package.json +4 -5
|
@@ -2,9 +2,34 @@
|
|
|
2
2
|
import dayjs from 'dayjs';
|
|
3
3
|
import './extendDayJs';
|
|
4
4
|
import { hasProp } from '@pega/cosmos-react-core';
|
|
5
|
-
import { truncateISODateString } from '../RhsControls';
|
|
6
5
|
import { getItem, isAbsoluteDateString } from './utils';
|
|
7
6
|
import { convertTimeValueToMs } from './time-utils';
|
|
7
|
+
/** Expand a date's precision to the floor (start) or ceil (end) boundary.
|
|
8
|
+
* `timePartsCount` is the number of colon-separated segments in the time string
|
|
9
|
+
* (2 = HH:MM, 3 = HH:MM:SS, 4+ = already has ms). */
|
|
10
|
+
function expandPrecision(date, timePartsCount, boundary) {
|
|
11
|
+
if (boundary === 'start') {
|
|
12
|
+
if (timePartsCount <= 2)
|
|
13
|
+
return date.second(0).millisecond(0);
|
|
14
|
+
if (timePartsCount === 3)
|
|
15
|
+
return date.millisecond(0);
|
|
16
|
+
return date;
|
|
17
|
+
}
|
|
18
|
+
// boundary === 'end'
|
|
19
|
+
if (timePartsCount <= 2)
|
|
20
|
+
return date.second(59).millisecond(999);
|
|
21
|
+
if (timePartsCount === 3)
|
|
22
|
+
return date.millisecond(999);
|
|
23
|
+
return date;
|
|
24
|
+
}
|
|
25
|
+
function formatTimeOnlyComparisonValue(date) {
|
|
26
|
+
const utcDate = date.utc();
|
|
27
|
+
const hh = utcDate.hour().toString().padStart(2, '0');
|
|
28
|
+
const mm = utcDate.minute().toString().padStart(2, '0');
|
|
29
|
+
const ss = utcDate.second().toString().padStart(2, '0');
|
|
30
|
+
const ms = utcDate.millisecond().toString().padStart(3, '0');
|
|
31
|
+
return `${hh}:${mm}:${ss}.${ms}`;
|
|
32
|
+
}
|
|
8
33
|
const dayjsDateParts = {
|
|
9
34
|
SECONDS: 'second',
|
|
10
35
|
MINUTES: 'minute',
|
|
@@ -20,62 +45,44 @@ function getConditionForBetweenComparator(start, end, node) {
|
|
|
20
45
|
return node.comparator === 'BTW'
|
|
21
46
|
? {
|
|
22
47
|
AND: [
|
|
23
|
-
{
|
|
24
|
-
|
|
25
|
-
lhs: node.lhs,
|
|
26
|
-
comparator: 'GTE',
|
|
27
|
-
rhs: { value: start }
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
condition: {
|
|
32
|
-
lhs: node.lhs,
|
|
33
|
-
comparator: 'LTE',
|
|
34
|
-
rhs: { value: end }
|
|
35
|
-
}
|
|
36
|
-
}
|
|
48
|
+
{ condition: { lhs: node.lhs, comparator: 'GTE', rhs: { value: start } } },
|
|
49
|
+
{ condition: { lhs: node.lhs, comparator: 'LTE', rhs: { value: end } } }
|
|
37
50
|
]
|
|
38
51
|
}
|
|
39
52
|
: {
|
|
40
53
|
OR: [
|
|
41
|
-
{
|
|
42
|
-
|
|
43
|
-
lhs: node.lhs,
|
|
44
|
-
comparator: 'LT',
|
|
45
|
-
rhs: { value: start }
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
condition: {
|
|
50
|
-
lhs: node.lhs,
|
|
51
|
-
comparator: 'GT',
|
|
52
|
-
rhs: { value: end }
|
|
53
|
-
}
|
|
54
|
-
}
|
|
54
|
+
{ condition: { lhs: node.lhs, comparator: 'LT', rhs: { value: start } } },
|
|
55
|
+
{ condition: { lhs: node.lhs, comparator: 'GT', rhs: { value: end } } }
|
|
55
56
|
]
|
|
56
57
|
};
|
|
57
58
|
}
|
|
58
59
|
function getDateStringInTimezone(d, tz) {
|
|
59
60
|
return d.tz(tz).format('YYYY-MM-DDTHH:mm:ss.SSS');
|
|
60
61
|
}
|
|
62
|
+
/** Format an expanded Dayjs value for a given field type, applying timezone for DATE_TIME. */
|
|
63
|
+
function formatBoundaryValue(d, lhsFieldType, tz, outputUTC) {
|
|
64
|
+
if (lhsFieldType === 'TIME_ONLY') {
|
|
65
|
+
return formatTimeOnlyComparisonValue(d);
|
|
66
|
+
}
|
|
67
|
+
let isoString;
|
|
68
|
+
if (tz) {
|
|
69
|
+
isoString = getDateStringInTimezone(d, tz);
|
|
70
|
+
}
|
|
71
|
+
else if (outputUTC) {
|
|
72
|
+
isoString = d.toISOString();
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
const time = d.toDate().getTime();
|
|
76
|
+
const timezoneOffset = new Date(time).getTimezoneOffset() * 60000;
|
|
77
|
+
isoString = new Date(time - timezoneOffset).toISOString().slice(0, -1);
|
|
78
|
+
}
|
|
79
|
+
if (lhsFieldType === 'DATE_ONLY')
|
|
80
|
+
return isoString.substring(0, isoString.indexOf('T'));
|
|
81
|
+
return isoString;
|
|
82
|
+
}
|
|
61
83
|
/** Construct a date-range filter based on the given date bounds and the comparator */
|
|
62
|
-
function getConditionFromRange(startDate, endDate, node, lhsFieldType, timezone) {
|
|
63
|
-
const formatDate = (d, tz) =>
|
|
64
|
-
let isoString;
|
|
65
|
-
if (tz) {
|
|
66
|
-
isoString = getDateStringInTimezone(d, tz);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
const time = d.toDate().getTime();
|
|
70
|
-
const timezoneOffset = new Date(time).getTimezoneOffset() * 60000;
|
|
71
|
-
isoString = new Date(time - timezoneOffset).toISOString().slice(0, -1);
|
|
72
|
-
}
|
|
73
|
-
if (lhsFieldType === 'TIME_ONLY')
|
|
74
|
-
return truncateISODateString(isoString, lhsFieldType);
|
|
75
|
-
if (lhsFieldType === 'DATE_ONLY')
|
|
76
|
-
return isoString.substring(0, isoString.indexOf('T'));
|
|
77
|
-
return isoString;
|
|
78
|
-
};
|
|
84
|
+
function getConditionFromRange(startDate, endDate, node, lhsFieldType, timezone, outputUTC) {
|
|
85
|
+
const formatDate = (d, tz) => formatBoundaryValue(d, lhsFieldType, tz, outputUTC);
|
|
79
86
|
switch (node.comparator) {
|
|
80
87
|
case 'EQ':
|
|
81
88
|
return {
|
|
@@ -116,6 +123,7 @@ function getConditionFromRange(startDate, endDate, node, lhsFieldType, timezone)
|
|
|
116
123
|
]
|
|
117
124
|
};
|
|
118
125
|
case 'GT':
|
|
126
|
+
// Strict comparisons skip the whole selected precision unit.
|
|
119
127
|
return {
|
|
120
128
|
condition: {
|
|
121
129
|
lhs: node.lhs,
|
|
@@ -124,6 +132,7 @@ function getConditionFromRange(startDate, endDate, node, lhsFieldType, timezone)
|
|
|
124
132
|
}
|
|
125
133
|
};
|
|
126
134
|
case 'GTE':
|
|
135
|
+
// Inclusive comparisons include the whole selected precision unit.
|
|
127
136
|
return {
|
|
128
137
|
condition: {
|
|
129
138
|
lhs: node.lhs,
|
|
@@ -132,6 +141,7 @@ function getConditionFromRange(startDate, endDate, node, lhsFieldType, timezone)
|
|
|
132
141
|
}
|
|
133
142
|
};
|
|
134
143
|
case 'LT':
|
|
144
|
+
// Strict comparisons skip the whole selected precision unit.
|
|
135
145
|
return {
|
|
136
146
|
condition: {
|
|
137
147
|
lhs: node.lhs,
|
|
@@ -140,6 +150,7 @@ function getConditionFromRange(startDate, endDate, node, lhsFieldType, timezone)
|
|
|
140
150
|
}
|
|
141
151
|
};
|
|
142
152
|
case 'LTE':
|
|
153
|
+
// Inclusive comparisons include the whole selected precision unit.
|
|
143
154
|
return {
|
|
144
155
|
condition: {
|
|
145
156
|
lhs: node.lhs,
|
|
@@ -154,12 +165,21 @@ function getConditionFromRange(startDate, endDate, node, lhsFieldType, timezone)
|
|
|
154
165
|
return { condition: node };
|
|
155
166
|
}
|
|
156
167
|
}
|
|
157
|
-
function transformLeafCondition(node, fields,
|
|
168
|
+
function transformLeafCondition(node, fields, transformOptions, currentDateTime, timezone) {
|
|
169
|
+
const { transformRelativeDate, transformWeek } = transformOptions;
|
|
158
170
|
const field = getItem(fields, node.lhs.field);
|
|
159
171
|
if (!field || !hasProp(field, 'type')) {
|
|
160
172
|
return { condition: node }; // Safety check
|
|
161
173
|
}
|
|
162
|
-
|
|
174
|
+
// Expand precision for single-value comparators on DATE_TIME and TIME_ONLY fields.
|
|
175
|
+
// For values with less precision than the storage format (e.g. HH:MM without seconds),
|
|
176
|
+
// expand the hidden precision to create correct boundary values for comparison.
|
|
177
|
+
if ((node.comparator === 'EQ' ||
|
|
178
|
+
node.comparator === 'NEQ' ||
|
|
179
|
+
node.comparator === 'GT' ||
|
|
180
|
+
node.comparator === 'GTE' ||
|
|
181
|
+
node.comparator === 'LT' ||
|
|
182
|
+
node.comparator === 'LTE') &&
|
|
163
183
|
node.rhs &&
|
|
164
184
|
hasProp(node.rhs, 'value') &&
|
|
165
185
|
Object.keys(node.rhs).length === 1 &&
|
|
@@ -168,30 +188,20 @@ function transformLeafCondition(node, fields, transformRelativeDate = true, curr
|
|
|
168
188
|
const timePartsCount = dateTime.split(':').length;
|
|
169
189
|
if (field.type === 'DATE_TIME') {
|
|
170
190
|
const date = isAbsoluteDateString(dateTime)
|
|
171
|
-
? dayjs(dateTime)
|
|
191
|
+
? dayjs.utc(dateTime)
|
|
172
192
|
: dayjs.tz(dateTime, timezone);
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
startDate = startDate.millisecond(0);
|
|
178
|
-
endDate = endDate.millisecond(999);
|
|
179
|
-
return getConditionFromRange(startDate, endDate, node, field.type, timezone);
|
|
180
|
-
}
|
|
181
|
-
// HH:MM expand seconds to 0-59
|
|
182
|
-
if (timePartsCount === 2) {
|
|
183
|
-
startDate = startDate.second(0).millisecond(0);
|
|
184
|
-
endDate = endDate.second(59).millisecond(999);
|
|
185
|
-
return getConditionFromRange(startDate, endDate, node, field.type, timezone);
|
|
193
|
+
const startDate = expandPrecision(date, timePartsCount, 'start');
|
|
194
|
+
const endDate = expandPrecision(date, timePartsCount, 'end');
|
|
195
|
+
if (timePartsCount <= 3) {
|
|
196
|
+
return getConditionFromRange(startDate, endDate, node, field.type, timezone, isAbsoluteDateString(dateTime));
|
|
186
197
|
}
|
|
187
198
|
}
|
|
188
199
|
else if (field.type === 'TIME_ONLY') {
|
|
189
200
|
const dateTimeMs = convertTimeValueToMs(node.rhs.value);
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
const
|
|
193
|
-
|
|
194
|
-
return getConditionFromRange(startDate, endDate, node, field.type, timezone);
|
|
201
|
+
if (timePartsCount <= 3) {
|
|
202
|
+
const startDate = expandPrecision(dayjs.utc(dateTimeMs), timePartsCount, 'start');
|
|
203
|
+
const endDate = expandPrecision(dayjs.utc(dateTimeMs), timePartsCount, 'end');
|
|
204
|
+
return getConditionFromRange(startDate, endDate, node, field.type);
|
|
195
205
|
}
|
|
196
206
|
}
|
|
197
207
|
}
|
|
@@ -200,7 +210,7 @@ function transformLeafCondition(node, fields, transformRelativeDate = true, curr
|
|
|
200
210
|
const { timePeriod, interval, datePart } = node.rhs.relativeDate;
|
|
201
211
|
const dayjsDatePart = dayjsDateParts[datePart];
|
|
202
212
|
const now = !currentDateTime || isAbsoluteDateString(currentDateTime)
|
|
203
|
-
? dayjs.utc(dayjs(currentDateTime).tz(timezone)
|
|
213
|
+
? dayjs.utc(dayjs(currentDateTime)).tz(timezone)
|
|
204
214
|
: dayjs.tz(currentDateTime, timezone);
|
|
205
215
|
let startDate = now;
|
|
206
216
|
let endDate = now;
|
|
@@ -219,11 +229,13 @@ function transformLeafCondition(node, fields, transformRelativeDate = true, curr
|
|
|
219
229
|
startDate = now.add(1, dayjsDatePart).startOf(dayjsDatePart);
|
|
220
230
|
endDate = now.endOf(dayjsDatePart).add(interval, dayjsDatePart);
|
|
221
231
|
}
|
|
222
|
-
return getConditionFromRange(startDate
|
|
232
|
+
return getConditionFromRange(startDate, endDate, node, field.type, timezone);
|
|
223
233
|
}
|
|
224
234
|
// Transform WEEKS-filters into equivalent date-range filters
|
|
225
|
-
|
|
226
|
-
|
|
235
|
+
if (transformWeek &&
|
|
236
|
+
node.rhs &&
|
|
237
|
+
hasProp(node.rhs, 'dateFunction') &&
|
|
238
|
+
node.rhs.dateFunction === 'WEEKS') {
|
|
227
239
|
const startDate = typeof node.rhs.value === 'number' || isAbsoluteDateString(node.rhs.value)
|
|
228
240
|
? dayjs.utc(dayjs(node.rhs.value).tz(timezone)).startOf('day').tz(timezone)
|
|
229
241
|
: dayjs.tz(node.rhs.value, timezone).startOf('day'); // Since we store it as YYYY-MM-DD, it's already the start of day
|
|
@@ -232,16 +244,23 @@ function transformLeafCondition(node, fields, transformRelativeDate = true, curr
|
|
|
232
244
|
}
|
|
233
245
|
// Transform double range comparators (BTW, NOT_BTW) into equivalent pair of single range comparators
|
|
234
246
|
if (node.rhs && hasProp(node.rhs, 'start')) {
|
|
235
|
-
if (field.type === 'DECIMAL' || field.type === 'INTEGER'
|
|
247
|
+
if (field.type === 'DECIMAL' || field.type === 'INTEGER') {
|
|
236
248
|
return getConditionForBetweenComparator(node.rhs.start, node.rhs.end, node);
|
|
237
249
|
}
|
|
238
|
-
const
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
250
|
+
const expandBound = (value, boundary) => {
|
|
251
|
+
if (field.type === 'TIME_ONLY') {
|
|
252
|
+
const parts = typeof value === 'string' ? value.split(':').length : 3;
|
|
253
|
+
const ms = typeof value === 'number' ? value : convertTimeValueToMs(value);
|
|
254
|
+
return expandPrecision(dayjs.utc(ms), parts, boundary).valueOf();
|
|
255
|
+
}
|
|
256
|
+
const isAbsolute = typeof value === 'number' || isAbsoluteDateString(value);
|
|
257
|
+
const date = isAbsolute ? dayjs.utc(value) : dayjs.tz(value, timezone);
|
|
258
|
+
if (field.type !== 'DATE_TIME')
|
|
259
|
+
return formatBoundaryValue(date, field.type, timezone, isAbsolute);
|
|
260
|
+
const parts = typeof value === 'string' ? value.split(':').length : 4;
|
|
261
|
+
return formatBoundaryValue(expandPrecision(date, parts, boundary), 'DATE_TIME', timezone, isAbsolute);
|
|
262
|
+
};
|
|
263
|
+
return getConditionForBetweenComparator(expandBound(node.rhs.start, 'start'), expandBound(node.rhs.end, 'end'), node);
|
|
245
264
|
}
|
|
246
265
|
// apply timezone to date-time fields
|
|
247
266
|
if (timezone && field.type === 'DATE_TIME' && node.rhs && !hasProp(node.rhs, 'dateFunction')) {
|
|
@@ -280,24 +299,25 @@ function transformLeafCondition(node, fields, transformRelativeDate = true, curr
|
|
|
280
299
|
* `["2025-05-12T11:24:45.000", "2025-05-12T11:24:45.999"]`.
|
|
281
300
|
*
|
|
282
301
|
*/
|
|
283
|
-
export default function transformComplexCondition(condition, fields, transformRelativeDate = true, currentDateTime, timezone) {
|
|
302
|
+
export default function transformComplexCondition(condition, fields, { transformRelativeDate = true, transformWeek = true } = {}, currentDateTime, timezone) {
|
|
303
|
+
const transformOptions = { transformRelativeDate, transformWeek };
|
|
284
304
|
if (hasProp(condition, 'AND')) {
|
|
285
|
-
const childNodes = condition.AND.map(n => transformComplexCondition(n, fields,
|
|
305
|
+
const childNodes = condition.AND.map(n => transformComplexCondition(n, fields, transformOptions, currentDateTime, timezone));
|
|
286
306
|
return {
|
|
287
307
|
AND: childNodes
|
|
288
308
|
};
|
|
289
309
|
}
|
|
290
310
|
if (hasProp(condition, 'OR')) {
|
|
291
|
-
const childNodes = condition.OR.map(n => transformComplexCondition(n, fields,
|
|
311
|
+
const childNodes = condition.OR.map(n => transformComplexCondition(n, fields, transformOptions, currentDateTime, timezone));
|
|
292
312
|
return {
|
|
293
313
|
OR: childNodes
|
|
294
314
|
};
|
|
295
315
|
}
|
|
296
316
|
if (hasProp(condition, 'NOT')) {
|
|
297
317
|
return {
|
|
298
|
-
NOT: transformComplexCondition(condition.NOT, fields,
|
|
318
|
+
NOT: transformComplexCondition(condition.NOT, fields, transformOptions, currentDateTime, timezone)
|
|
299
319
|
};
|
|
300
320
|
}
|
|
301
|
-
return transformLeafCondition(condition.condition, fields,
|
|
321
|
+
return transformLeafCondition(condition.condition, fields, transformOptions, currentDateTime, timezone);
|
|
302
322
|
}
|
|
303
323
|
//# sourceMappingURL=transformer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformer.js","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/core/transformer.ts"],"names":[],"mappings":"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","sourcesContent":["// cspell:words DDTHH\nimport dayjs from 'dayjs';\nimport type { Dayjs, QUnitType } from 'dayjs';\nimport './extendDayJs';\n\nimport { hasProp } from '@pega/cosmos-react-core';\n\nimport type { Condition, LeafCondition, Field } from '../ConditionBuilder.types';\nimport { truncateISODateString } from '../RhsControls';\n\nimport { getItem, isAbsoluteDateString } from './utils';\nimport type { DatePart, FieldType } from './types';\nimport { convertTimeValueToMs } from './time-utils';\n\nconst dayjsDateParts: Record<DatePart, QUnitType> = {\n SECONDS: 'second',\n MINUTES: 'minute',\n HOURS: 'hour',\n DAYS: 'day',\n WEEKS: 'week' as QUnitType,\n QUARTERS: 'quarter',\n MONTHS: 'month',\n YEARS: 'year'\n};\n\n/** Construct Condition with two range comparators based on the given bounds */\nfunction getConditionForBetweenComparator(\n start: string | number,\n end: string | number,\n node: LeafCondition\n): Condition {\n return node.comparator === 'BTW'\n ? {\n AND: [\n {\n condition: {\n lhs: node.lhs,\n comparator: 'GTE',\n rhs: { value: start }\n }\n },\n {\n condition: {\n lhs: node.lhs,\n comparator: 'LTE',\n rhs: { value: end }\n }\n }\n ]\n }\n : {\n OR: [\n {\n condition: {\n lhs: node.lhs,\n comparator: 'LT',\n rhs: { value: start }\n }\n },\n {\n condition: {\n lhs: node.lhs,\n comparator: 'GT',\n rhs: { value: end }\n }\n }\n ]\n };\n}\n\nfunction getDateStringInTimezone(d: Dayjs, tz: string): string {\n return d.tz(tz).format('YYYY-MM-DDTHH:mm:ss.SSS');\n}\n\n/** Construct a date-range filter based on the given date bounds and the comparator */\nfunction getConditionFromRange(\n startDate: Dayjs,\n endDate: Dayjs,\n node: LeafCondition,\n lhsFieldType: FieldType,\n timezone?: string\n): Condition {\n const formatDate = (d: Dayjs, tz?: string): string => {\n let isoString: string;\n if (tz) {\n isoString = getDateStringInTimezone(d, tz);\n } else {\n const time = d.toDate().getTime();\n const timezoneOffset = new Date(time).getTimezoneOffset() * 60000;\n isoString = new Date(time - timezoneOffset).toISOString().slice(0, -1);\n }\n if (lhsFieldType === 'TIME_ONLY') return truncateISODateString(isoString, lhsFieldType);\n if (lhsFieldType === 'DATE_ONLY') return isoString.substring(0, isoString.indexOf('T'));\n return isoString;\n };\n\n switch (node.comparator) {\n case 'EQ':\n return {\n AND: [\n {\n condition: {\n lhs: node.lhs,\n comparator: 'LTE',\n rhs: { value: formatDate(endDate, timezone) }\n }\n },\n {\n condition: {\n lhs: node.lhs,\n comparator: 'GTE',\n rhs: { value: formatDate(startDate, timezone) }\n }\n }\n ]\n };\n case 'NEQ':\n return {\n OR: [\n {\n condition: {\n lhs: node.lhs,\n comparator: 'GT',\n rhs: { value: formatDate(endDate, timezone) }\n }\n },\n {\n condition: {\n lhs: node.lhs,\n comparator: 'LT',\n rhs: { value: formatDate(startDate, timezone) }\n }\n }\n ]\n };\n case 'GT':\n return {\n condition: {\n lhs: node.lhs,\n comparator: 'GT',\n rhs: { value: formatDate(endDate, timezone) }\n }\n };\n case 'GTE':\n return {\n condition: {\n lhs: node.lhs,\n comparator: 'GTE',\n rhs: { value: formatDate(startDate, timezone) }\n }\n };\n case 'LT':\n return {\n condition: {\n lhs: node.lhs,\n comparator: 'LT',\n rhs: { value: formatDate(startDate, timezone) }\n }\n };\n case 'LTE':\n return {\n condition: {\n lhs: node.lhs,\n comparator: 'LTE',\n rhs: { value: formatDate(endDate, timezone) }\n }\n };\n case 'BTW':\n case 'NOT_BTW':\n return getConditionForBetweenComparator(\n formatDate(startDate, timezone),\n formatDate(endDate, timezone),\n node\n );\n default:\n return { condition: node };\n }\n}\n\nfunction transformLeafCondition(\n node: LeafCondition,\n fields: Field[],\n transformRelativeDate = true,\n currentDateTime?: string,\n timezone?: string\n): Condition {\n const field = getItem(fields, node.lhs.field);\n\n if (!field || !hasProp(field, 'type')) {\n return { condition: node }; // Safety check\n }\n\n if (\n (node.comparator === 'EQ' || node.comparator === 'NEQ') &&\n node.rhs &&\n hasProp(node.rhs, 'value') &&\n Object.keys(node.rhs).length === 1 &&\n typeof node.rhs.value === 'string'\n ) {\n const dateTime = node.rhs.value;\n\n const timePartsCount = dateTime.split(':').length;\n if (field.type === 'DATE_TIME') {\n const date = isAbsoluteDateString(dateTime)\n ? dayjs(dateTime).tz(timezone)\n : dayjs.tz(dateTime, timezone);\n let startDate = date;\n let endDate = date;\n // For HH:MM:SS expand milliseconds to 0-999\n if (timePartsCount === 3) {\n startDate = startDate.millisecond(0);\n endDate = endDate.millisecond(999);\n\n return getConditionFromRange(startDate, endDate, node, field.type, timezone);\n }\n // HH:MM expand seconds to 0-59\n if (timePartsCount === 2) {\n startDate = startDate.second(0).millisecond(0);\n endDate = endDate.second(59).millisecond(999);\n return getConditionFromRange(startDate, endDate, node, field.type, timezone);\n }\n } else if (field.type === 'TIME_ONLY') {\n const dateTimeMs = convertTimeValueToMs(node.rhs.value);\n\n // HH:MM expand seconds to 0-59\n if (timePartsCount === 2) {\n const startDate = dayjs(dateTimeMs).tz(timezone).second(0).millisecond(0);\n const endDate = dayjs(dateTimeMs).tz(timezone).second(59).millisecond(0);\n return getConditionFromRange(startDate, endDate, node, field.type, timezone);\n }\n }\n }\n\n // Transform Relative date filters into equivalent date range filters\n if (node.rhs && transformRelativeDate && hasProp(node.rhs, 'relativeDate')) {\n const { timePeriod, interval, datePart } = node.rhs.relativeDate;\n const dayjsDatePart = dayjsDateParts[datePart];\n const now =\n !currentDateTime || isAbsoluteDateString(currentDateTime)\n ? dayjs.utc(dayjs(currentDateTime).tz(timezone))\n : dayjs.tz(currentDateTime, timezone);\n\n let startDate = now;\n let endDate = now;\n if (timePeriod === 'CURRENT') {\n startDate = now.startOf(dayjsDatePart);\n endDate = now.endOf(dayjsDatePart);\n } else if (timePeriod === 'LAST' && interval && interval >= 1) {\n startDate = now.subtract(interval, dayjsDatePart);\n } else if (timePeriod === 'PREVIOUS' && interval && interval >= 1) {\n startDate = now.startOf(dayjsDatePart).subtract(interval, dayjsDatePart);\n endDate = now.subtract(1, dayjsDatePart).endOf(dayjsDatePart);\n } else if (timePeriod === 'NEXT' && interval && interval >= 1) {\n startDate = now.add(1, dayjsDatePart).startOf(dayjsDatePart);\n endDate = now.endOf(dayjsDatePart).add(interval, dayjsDatePart);\n }\n\n return getConditionFromRange(\n startDate.tz(timezone),\n endDate.tz(timezone),\n node,\n field.type,\n timezone\n );\n }\n\n // Transform WEEKS-filters into equivalent date-range filters\n // NOTE: This is a work-around until we make startOfDay customizable for Weeks\n if (node.rhs && hasProp(node.rhs, 'dateFunction') && node.rhs.dateFunction === 'WEEKS') {\n const startDate =\n typeof node.rhs.value === 'number' || isAbsoluteDateString(node.rhs.value)\n ? dayjs.utc(dayjs(node.rhs.value).tz(timezone)).startOf('day').tz(timezone)\n : dayjs.tz(node.rhs.value, timezone).startOf('day'); // Since we store it as YYYY-MM-DD, it's already the start of day\n\n const endDate = startDate.add(7, 'day').subtract(1, 'millisecond'); // Last millisecond on the 7th day from startDate\n return getConditionFromRange(startDate, endDate, node, field.type, timezone);\n }\n\n // Transform double range comparators (BTW, NOT_BTW) into equivalent pair of single range comparators\n if (node.rhs && hasProp(node.rhs, 'start')) {\n if (field.type === 'DECIMAL' || field.type === 'INTEGER' || field.type === 'TIME_ONLY') {\n return getConditionForBetweenComparator(node.rhs.start, node.rhs.end, node);\n }\n\n const startDate =\n typeof node.rhs.start === 'number' || isAbsoluteDateString(node.rhs.start)\n ? dayjs(node.rhs.start).tz(timezone)\n : dayjs.tz(node.rhs.start, timezone);\n const endDate =\n typeof node.rhs.end === 'number' || isAbsoluteDateString(node.rhs.end)\n ? dayjs(node.rhs.end).tz(timezone)\n : dayjs.tz(node.rhs.end, timezone);\n\n return getConditionFromRange(startDate, endDate, node, field.type, timezone);\n }\n\n // apply timezone to date-time fields\n if (timezone && field.type === 'DATE_TIME' && node.rhs && !hasProp(node.rhs, 'dateFunction')) {\n const newNode: LeafCondition = { ...node };\n if (newNode.rhs && hasProp(newNode.rhs, 'value')) {\n newNode.rhs.value = getDateStringInTimezone(\n typeof newNode.rhs.value === 'number' || isAbsoluteDateString(newNode.rhs.value)\n ? dayjs(newNode.rhs.value)\n : dayjs.tz(newNode.rhs.value, timezone),\n timezone\n );\n }\n if (newNode.rhs && hasProp(newNode.rhs, 'values')) {\n const valuesWithTimezone = newNode.rhs.values.map(v =>\n getDateStringInTimezone(\n typeof v === 'number' || isAbsoluteDateString(v) ? dayjs(v) : dayjs.tz(v, timezone),\n timezone\n )\n );\n newNode.rhs.values = valuesWithTimezone;\n }\n return { condition: newNode };\n }\n\n // For all other cases\n return { condition: node };\n}\n\n/** This function transforms Conditions with Relative Dates into Conditions with Date Ranges.\n * Do not use this function unless you need to convert Relative Dates into Date Ranges.\n *\n * If `currentDateTime` is not provided, the current system time will be used.\n * If `timezone` is not provided, the system's timezone will be used for conversion.\n *\n * The `timezone` prop is applied to the date-time values within the condition when the transformation occurs.\n * If `timezone` is specified, the date-time will be converted from UTC (or the provided reference time) to the specified timezone.\n * Then, the transformed date will be used to generate a range.\n * This transformation ensures that the start and end times account for timezone differences when considering the condition's range.\n *\n * For example:\n * - A UTC date-time `2025-05-12T11:24:45.946Z` will be transformed to `2025-05-12T07:24:45.946-04:00` (in the `-04:00` timezone).\n * The date-time will then be converted into a range:\n * `[\"2025-05-12T07:24:45.000\", \"2025-05-12T07:24:45.999\"]`.\n * - A date-time without a timezone (`2025-05-12T11:24:45.946`) will be parsed in the timezone (e.g., `-04:00`).\n * The parsed time will then be transformed into a range like:\n * `[\"2025-05-12T11:24:45.000\", \"2025-05-12T11:24:45.999\"]`.\n *\n */\nexport default function transformComplexCondition(\n condition: Condition,\n fields: Field[],\n transformRelativeDate = true,\n currentDateTime?: string,\n timezone?: string\n): Condition {\n if (hasProp(condition, 'AND')) {\n const childNodes: Condition[] = condition.AND.map(n =>\n transformComplexCondition(n, fields, transformRelativeDate, currentDateTime, timezone)\n );\n return {\n AND: childNodes\n };\n }\n\n if (hasProp(condition, 'OR')) {\n const childNodes: Condition[] = condition.OR.map(n =>\n transformComplexCondition(n, fields, transformRelativeDate, currentDateTime, timezone)\n );\n return {\n OR: childNodes\n };\n }\n\n if (hasProp(condition, 'NOT')) {\n return {\n NOT: transformComplexCondition(\n condition.NOT,\n fields,\n transformRelativeDate,\n currentDateTime,\n timezone\n )\n };\n }\n\n return transformLeafCondition(\n condition.condition,\n fields,\n transformRelativeDate,\n currentDateTime,\n timezone\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"transformer.js","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/core/transformer.ts"],"names":[],"mappings":"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","sourcesContent":["// cspell:words DDTHH\nimport dayjs from 'dayjs';\nimport type { Dayjs, QUnitType } from 'dayjs';\nimport './extendDayJs';\n\nimport { hasProp } from '@pega/cosmos-react-core';\n\nimport type { Condition, LeafCondition, Field } from '../ConditionBuilder.types';\n\nimport { getItem, isAbsoluteDateString } from './utils';\nimport type { DatePart, FieldType } from './types';\nimport { convertTimeValueToMs } from './time-utils';\n\n/** Expand a date's precision to the floor (start) or ceil (end) boundary.\n * `timePartsCount` is the number of colon-separated segments in the time string\n * (2 = HH:MM, 3 = HH:MM:SS, 4+ = already has ms). */\nfunction expandPrecision(date: Dayjs, timePartsCount: number, boundary: 'start' | 'end'): Dayjs {\n if (boundary === 'start') {\n if (timePartsCount <= 2) return date.second(0).millisecond(0);\n if (timePartsCount === 3) return date.millisecond(0);\n return date;\n }\n // boundary === 'end'\n if (timePartsCount <= 2) return date.second(59).millisecond(999);\n if (timePartsCount === 3) return date.millisecond(999);\n return date;\n}\n\nfunction formatTimeOnlyComparisonValue(date: Dayjs): string {\n const utcDate = date.utc();\n const hh = utcDate.hour().toString().padStart(2, '0');\n const mm = utcDate.minute().toString().padStart(2, '0');\n const ss = utcDate.second().toString().padStart(2, '0');\n const ms = utcDate.millisecond().toString().padStart(3, '0');\n return `${hh}:${mm}:${ss}.${ms}`;\n}\n\nconst dayjsDateParts: Record<DatePart, QUnitType> = {\n SECONDS: 'second',\n MINUTES: 'minute',\n HOURS: 'hour',\n DAYS: 'day',\n WEEKS: 'week' as QUnitType,\n QUARTERS: 'quarter',\n MONTHS: 'month',\n YEARS: 'year'\n};\n\ninterface TransformOptions {\n transformRelativeDate: boolean;\n transformWeek: boolean;\n}\n\n/** Construct Condition with two range comparators based on the given bounds */\nfunction getConditionForBetweenComparator(\n start: string | number,\n end: string | number,\n node: LeafCondition\n): Condition {\n return node.comparator === 'BTW'\n ? {\n AND: [\n { condition: { lhs: node.lhs, comparator: 'GTE', rhs: { value: start } } },\n { condition: { lhs: node.lhs, comparator: 'LTE', rhs: { value: end } } }\n ]\n }\n : {\n OR: [\n { condition: { lhs: node.lhs, comparator: 'LT', rhs: { value: start } } },\n { condition: { lhs: node.lhs, comparator: 'GT', rhs: { value: end } } }\n ]\n };\n}\n\nfunction getDateStringInTimezone(d: Dayjs, tz?: string): string {\n return d.tz(tz).format('YYYY-MM-DDTHH:mm:ss.SSS');\n}\n\n/** Format an expanded Dayjs value for a given field type, applying timezone for DATE_TIME. */\nfunction formatBoundaryValue(\n d: Dayjs,\n lhsFieldType: FieldType,\n tz?: string,\n outputUTC?: boolean\n): string {\n if (lhsFieldType === 'TIME_ONLY') {\n return formatTimeOnlyComparisonValue(d);\n }\n let isoString: string;\n if (tz) {\n isoString = getDateStringInTimezone(d, tz);\n } else if (outputUTC) {\n isoString = d.toISOString();\n } else {\n const time = d.toDate().getTime();\n const timezoneOffset = new Date(time).getTimezoneOffset() * 60000;\n isoString = new Date(time - timezoneOffset).toISOString().slice(0, -1);\n }\n if (lhsFieldType === 'DATE_ONLY') return isoString.substring(0, isoString.indexOf('T'));\n return isoString;\n}\n\n/** Construct a date-range filter based on the given date bounds and the comparator */\nfunction getConditionFromRange(\n startDate: Dayjs,\n endDate: Dayjs,\n node: LeafCondition,\n lhsFieldType: FieldType,\n timezone?: string,\n outputUTC?: boolean\n): Condition {\n const formatDate = (d: Dayjs, tz?: string): string =>\n formatBoundaryValue(d, lhsFieldType, tz, outputUTC);\n\n switch (node.comparator) {\n case 'EQ':\n return {\n AND: [\n {\n condition: {\n lhs: node.lhs,\n comparator: 'LTE',\n rhs: { value: formatDate(endDate, timezone) }\n }\n },\n {\n condition: {\n lhs: node.lhs,\n comparator: 'GTE',\n rhs: { value: formatDate(startDate, timezone) }\n }\n }\n ]\n };\n case 'NEQ':\n return {\n OR: [\n {\n condition: {\n lhs: node.lhs,\n comparator: 'GT',\n rhs: { value: formatDate(endDate, timezone) }\n }\n },\n {\n condition: {\n lhs: node.lhs,\n comparator: 'LT',\n rhs: { value: formatDate(startDate, timezone) }\n }\n }\n ]\n };\n case 'GT':\n // Strict comparisons skip the whole selected precision unit.\n return {\n condition: {\n lhs: node.lhs,\n comparator: 'GT',\n rhs: { value: formatDate(endDate, timezone) }\n }\n };\n case 'GTE':\n // Inclusive comparisons include the whole selected precision unit.\n return {\n condition: {\n lhs: node.lhs,\n comparator: 'GTE',\n rhs: { value: formatDate(startDate, timezone) }\n }\n };\n case 'LT':\n // Strict comparisons skip the whole selected precision unit.\n return {\n condition: {\n lhs: node.lhs,\n comparator: 'LT',\n rhs: { value: formatDate(startDate, timezone) }\n }\n };\n case 'LTE':\n // Inclusive comparisons include the whole selected precision unit.\n return {\n condition: {\n lhs: node.lhs,\n comparator: 'LTE',\n rhs: { value: formatDate(endDate, timezone) }\n }\n };\n case 'BTW':\n case 'NOT_BTW':\n return getConditionForBetweenComparator(\n formatDate(startDate, timezone),\n formatDate(endDate, timezone),\n node\n );\n default:\n return { condition: node };\n }\n}\n\nfunction transformLeafCondition(\n node: LeafCondition,\n fields: Field[],\n transformOptions: TransformOptions,\n currentDateTime?: string,\n timezone?: string\n): Condition {\n const { transformRelativeDate, transformWeek } = transformOptions;\n const field = getItem(fields, node.lhs.field);\n\n if (!field || !hasProp(field, 'type')) {\n return { condition: node }; // Safety check\n }\n\n // Expand precision for single-value comparators on DATE_TIME and TIME_ONLY fields.\n // For values with less precision than the storage format (e.g. HH:MM without seconds),\n // expand the hidden precision to create correct boundary values for comparison.\n if (\n (node.comparator === 'EQ' ||\n node.comparator === 'NEQ' ||\n node.comparator === 'GT' ||\n node.comparator === 'GTE' ||\n node.comparator === 'LT' ||\n node.comparator === 'LTE') &&\n node.rhs &&\n hasProp(node.rhs, 'value') &&\n Object.keys(node.rhs).length === 1 &&\n typeof node.rhs.value === 'string'\n ) {\n const dateTime = node.rhs.value;\n\n const timePartsCount = dateTime.split(':').length;\n if (field.type === 'DATE_TIME') {\n const date = isAbsoluteDateString(dateTime)\n ? dayjs.utc(dateTime)\n : dayjs.tz(dateTime, timezone);\n const startDate = expandPrecision(date, timePartsCount, 'start');\n const endDate = expandPrecision(date, timePartsCount, 'end');\n\n if (timePartsCount <= 3) {\n return getConditionFromRange(\n startDate,\n endDate,\n node,\n field.type,\n timezone,\n isAbsoluteDateString(dateTime)\n );\n }\n } else if (field.type === 'TIME_ONLY') {\n const dateTimeMs = convertTimeValueToMs(node.rhs.value);\n\n if (timePartsCount <= 3) {\n const startDate = expandPrecision(dayjs.utc(dateTimeMs), timePartsCount, 'start');\n const endDate = expandPrecision(dayjs.utc(dateTimeMs), timePartsCount, 'end');\n return getConditionFromRange(startDate, endDate, node, field.type);\n }\n }\n }\n\n // Transform Relative date filters into equivalent date range filters\n if (node.rhs && transformRelativeDate && hasProp(node.rhs, 'relativeDate')) {\n const { timePeriod, interval, datePart } = node.rhs.relativeDate;\n const dayjsDatePart = dayjsDateParts[datePart];\n const now =\n !currentDateTime || isAbsoluteDateString(currentDateTime)\n ? dayjs.utc(dayjs(currentDateTime)).tz(timezone)\n : dayjs.tz(currentDateTime, timezone);\n\n let startDate = now;\n let endDate = now;\n if (timePeriod === 'CURRENT') {\n startDate = now.startOf(dayjsDatePart);\n endDate = now.endOf(dayjsDatePart);\n } else if (timePeriod === 'LAST' && interval && interval >= 1) {\n startDate = now.subtract(interval, dayjsDatePart);\n } else if (timePeriod === 'PREVIOUS' && interval && interval >= 1) {\n startDate = now.startOf(dayjsDatePart).subtract(interval, dayjsDatePart);\n endDate = now.subtract(1, dayjsDatePart).endOf(dayjsDatePart);\n } else if (timePeriod === 'NEXT' && interval && interval >= 1) {\n startDate = now.add(1, dayjsDatePart).startOf(dayjsDatePart);\n endDate = now.endOf(dayjsDatePart).add(interval, dayjsDatePart);\n }\n\n return getConditionFromRange(startDate, endDate, node, field.type, timezone);\n }\n\n // Transform WEEKS-filters into equivalent date-range filters\n if (\n transformWeek &&\n node.rhs &&\n hasProp(node.rhs, 'dateFunction') &&\n node.rhs.dateFunction === 'WEEKS'\n ) {\n const startDate =\n typeof node.rhs.value === 'number' || isAbsoluteDateString(node.rhs.value)\n ? dayjs.utc(dayjs(node.rhs.value).tz(timezone)).startOf('day').tz(timezone)\n : dayjs.tz(node.rhs.value, timezone).startOf('day'); // Since we store it as YYYY-MM-DD, it's already the start of day\n\n const endDate = startDate.add(7, 'day').subtract(1, 'millisecond'); // Last millisecond on the 7th day from startDate\n return getConditionFromRange(startDate, endDate, node, field.type, timezone);\n }\n\n // Transform double range comparators (BTW, NOT_BTW) into equivalent pair of single range comparators\n if (node.rhs && hasProp(node.rhs, 'start')) {\n if (field.type === 'DECIMAL' || field.type === 'INTEGER') {\n return getConditionForBetweenComparator(node.rhs.start, node.rhs.end, node);\n }\n\n const expandBound = (value: string | number, boundary: 'start' | 'end'): string | number => {\n if (field.type === 'TIME_ONLY') {\n const parts = typeof value === 'string' ? value.split(':').length : 3;\n const ms = typeof value === 'number' ? value : convertTimeValueToMs(value);\n return expandPrecision(dayjs.utc(ms), parts, boundary).valueOf();\n }\n\n const isAbsolute = typeof value === 'number' || isAbsoluteDateString(value);\n const date = isAbsolute ? dayjs.utc(value) : dayjs.tz(value, timezone);\n\n if (field.type !== 'DATE_TIME')\n return formatBoundaryValue(date, field.type, timezone, isAbsolute);\n\n const parts = typeof value === 'string' ? value.split(':').length : 4;\n return formatBoundaryValue(\n expandPrecision(date, parts, boundary),\n 'DATE_TIME',\n timezone,\n isAbsolute\n );\n };\n\n return getConditionForBetweenComparator(\n expandBound(node.rhs.start, 'start'),\n expandBound(node.rhs.end, 'end'),\n node\n );\n }\n\n // apply timezone to date-time fields\n if (timezone && field.type === 'DATE_TIME' && node.rhs && !hasProp(node.rhs, 'dateFunction')) {\n const newNode: LeafCondition = { ...node };\n if (newNode.rhs && hasProp(newNode.rhs, 'value')) {\n newNode.rhs.value = getDateStringInTimezone(\n typeof newNode.rhs.value === 'number' || isAbsoluteDateString(newNode.rhs.value)\n ? dayjs(newNode.rhs.value)\n : dayjs.tz(newNode.rhs.value, timezone),\n timezone\n );\n }\n if (newNode.rhs && hasProp(newNode.rhs, 'values')) {\n const valuesWithTimezone = newNode.rhs.values.map(v =>\n getDateStringInTimezone(\n typeof v === 'number' || isAbsoluteDateString(v) ? dayjs(v) : dayjs.tz(v, timezone),\n timezone\n )\n );\n newNode.rhs.values = valuesWithTimezone;\n }\n return { condition: newNode };\n }\n\n // For all other cases\n return { condition: node };\n}\n\n/** This function transforms Conditions with Relative Dates into Conditions with Date Ranges.\n * Do not use this function unless you need to convert Relative Dates into Date Ranges.\n *\n * If `currentDateTime` is not provided, the current system time will be used.\n * If `timezone` is not provided, the system's timezone will be used for conversion.\n *\n * The `timezone` prop is applied to the date-time values within the condition when the transformation occurs.\n * If `timezone` is specified, the date-time will be converted from UTC (or the provided reference time) to the specified timezone.\n * Then, the transformed date will be used to generate a range.\n * This transformation ensures that the start and end times account for timezone differences when considering the condition's range.\n *\n * For example:\n * - A UTC date-time `2025-05-12T11:24:45.946Z` will be transformed to `2025-05-12T07:24:45.946-04:00` (in the `-04:00` timezone).\n * The date-time will then be converted into a range:\n * `[\"2025-05-12T07:24:45.000\", \"2025-05-12T07:24:45.999\"]`.\n * - A date-time without a timezone (`2025-05-12T11:24:45.946`) will be parsed in the timezone (e.g., `-04:00`).\n * The parsed time will then be transformed into a range like:\n * `[\"2025-05-12T11:24:45.000\", \"2025-05-12T11:24:45.999\"]`.\n *\n */\nexport default function transformComplexCondition(\n condition: Condition,\n fields: Field[],\n { transformRelativeDate = true, transformWeek = true }: Partial<TransformOptions> = {},\n currentDateTime?: string,\n timezone?: string\n): Condition {\n const transformOptions: TransformOptions = { transformRelativeDate, transformWeek };\n if (hasProp(condition, 'AND')) {\n const childNodes: Condition[] = condition.AND.map(n =>\n transformComplexCondition(n, fields, transformOptions, currentDateTime, timezone)\n );\n return {\n AND: childNodes\n };\n }\n\n if (hasProp(condition, 'OR')) {\n const childNodes: Condition[] = condition.OR.map(n =>\n transformComplexCondition(n, fields, transformOptions, currentDateTime, timezone)\n );\n return {\n OR: childNodes\n };\n }\n\n if (hasProp(condition, 'NOT')) {\n return {\n NOT: transformComplexCondition(\n condition.NOT,\n fields,\n transformOptions,\n currentDateTime,\n timezone\n )\n };\n }\n\n return transformLeafCondition(\n condition.condition,\n fields,\n transformOptions,\n currentDateTime,\n timezone\n );\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Supported field types */
|
|
2
|
-
export type FieldType = 'BOOLEAN' | 'TEXT' | 'DECIMAL' | 'INTEGER' | 'DATE_TIME' | 'DATE_ONLY' | 'TIME_ONLY';
|
|
2
|
+
export type FieldType = 'BOOLEAN' | 'TEXT' | 'DECIMAL' | 'INTEGER' | 'DATE_TIME' | 'DATE_ONLY' | 'TIME_ONLY' | 'ATTACHMENT';
|
|
3
3
|
type NullComparator = 'IS_NULL' | 'IS_NOT_NULL';
|
|
4
4
|
type EqualityComparator = 'EQ' | 'NEQ';
|
|
5
5
|
type RangeComparator = 'GT' | 'GTE' | 'LT' | 'LTE' | 'BTW' | 'NOT_BTW';
|
|
@@ -38,6 +38,9 @@ export type ComparatorsByType = {
|
|
|
38
38
|
} | {
|
|
39
39
|
type: 'TIME_ONLY';
|
|
40
40
|
comparators: DateTimeComparator[];
|
|
41
|
+
} | {
|
|
42
|
+
type: 'ATTACHMENT';
|
|
43
|
+
comparators: NullComparator[];
|
|
41
44
|
};
|
|
42
45
|
export type RHSType = 'LITERAL' | 'FIELD' | 'DATE_FUNCTION' | 'RELATIVE_DATE' | 'PARAMETER';
|
|
43
46
|
/** Date function types supported on the RHS */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/core/types.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,MAAM,GACN,SAAS,GACT,SAAS,GACT,WAAW,GACX,WAAW,GACX,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/core/types.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,MAAM,GACN,SAAS,GACT,SAAS,GACT,WAAW,GACX,WAAW,GACX,WAAW,GACX,YAAY,CAAC;AAEjB,KAAK,cAAc,GAAG,SAAS,GAAG,aAAa,CAAC;AAChD,KAAK,kBAAkB,GAAG,IAAI,GAAG,KAAK,CAAC;AACvC,KAAK,eAAe,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AACvE,KAAK,kBAAkB,GAAG,SAAS,GAAG,UAAU,CAAC;AACjD,KAAK,cAAc,GAAG,IAAI,GAAG,QAAQ,CAAC;AACtC,KAAK,mBAAmB,GACpB,aAAa,GACb,iBAAiB,GACjB,WAAW,GACX,eAAe,GACf,UAAU,GACV,cAAc,CAAC;AAEnB,gCAAgC;AAChC,MAAM,MAAM,UAAU,GAClB,kBAAkB,GAClB,cAAc,GACd,kBAAkB,GAClB,cAAc,GACd,eAAe,GACf,mBAAmB,CAAC;AAExB,+CAA+C;AAC/C,KAAK,iBAAiB,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,cAAc,CAAC;AAElF,4CAA4C;AAC5C,KAAK,cAAc,GAAG,kBAAkB,GAAG,cAAc,GAAG,mBAAmB,GAAG,cAAc,CAAC;AAEjG,uDAAuD;AACvD,KAAK,gBAAgB,GAAG,kBAAkB,GAAG,cAAc,GAAG,eAAe,GAAG,cAAc,CAAC;AAE/F,qEAAqE;AACrE,KAAK,kBAAkB,GAAG,kBAAkB,GAAG,eAAe,GAAG,cAAc,CAAC;AAEhF,qEAAqE;AACrE,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,iBAAiB,EAAE,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,cAAc,EAAE,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,gBAAgB,EAAE,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,gBAAgB,EAAE,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,WAAW,EAAE,kBAAkB,EAAE,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,WAAW,EAAE,kBAAkB,EAAE,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,WAAW,EAAE,kBAAkB,EAAE,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,cAAc,EAAE,CAAA;CAAE,CAAC;AAE1D,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,eAAe,GAAG,eAAe,GAAG,WAAW,CAAC;AAE5F,+CAA+C;AAC/C,MAAM,MAAM,YAAY,GACpB,OAAO,GACP,UAAU,GACV,QAAQ,GACR,OAAO,GACP,MAAM,GACN,OAAO,GACP,SAAS,GACT,SAAS,GACT,cAAc,GACd,gBAAgB,GAChB,eAAe,GACf,cAAc,CAAC;AAEnB,wDAAwD;AACxD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAElE,sDAAsD;AACtD,MAAM,MAAM,QAAQ,GAChB,SAAS,GACT,SAAS,GACT,OAAO,GACP,MAAM,GACN,OAAO,GACP,QAAQ,GACR,UAAU,GACV,OAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/core/types.ts"],"names":[],"mappings":"","sourcesContent":["/** Supported field types */\nexport type FieldType =\n | 'BOOLEAN'\n | 'TEXT'\n | 'DECIMAL'\n | 'INTEGER'\n | 'DATE_TIME'\n | 'DATE_ONLY'\n | 'TIME_ONLY';\n\ntype NullComparator = 'IS_NULL' | 'IS_NOT_NULL';\ntype EqualityComparator = 'EQ' | 'NEQ';\ntype RangeComparator = 'GT' | 'GTE' | 'LT' | 'LTE' | 'BTW' | 'NOT_BTW';\ntype TruenessComparator = 'IS_TRUE' | 'IS_FALSE';\ntype ListComparator = 'IN' | 'NOT_IN';\ntype TextMatchComparator =\n | 'STARTS_WITH'\n | 'NOT_STARTS_WITH'\n | 'ENDS_WITH'\n | 'NOT_ENDS_WITH'\n | 'CONTAINS'\n | 'NOT_CONTAINS';\n\n/** All supported Comparators */\nexport type Comparator =\n | TruenessComparator\n | NullComparator\n | EqualityComparator\n | ListComparator\n | RangeComparator\n | TextMatchComparator;\n\n/** Comparators supported for BOOLEAN fields */\ntype BooleanComparator = TruenessComparator | EqualityComparator | NullComparator;\n\n/** Comparators supported for TEXT fields */\ntype TextComparator = EqualityComparator | ListComparator | TextMatchComparator | NullComparator;\n\n/** Comparators supported for DECIMAL/INTEGER fields */\ntype NumberComparator = EqualityComparator | ListComparator | RangeComparator | NullComparator;\n\n/** Comparators supported for DATE_TIME/DATE_ONLY/TIME_ONLY fields */\ntype DateTimeComparator = EqualityComparator | RangeComparator | NullComparator;\n\n/** Type definition to specify supported comparators by field-type */\nexport type ComparatorsByType =\n | { type: 'BOOLEAN'; comparators: BooleanComparator[] }\n | { type: 'TEXT'; comparators: TextComparator[] }\n | { type: 'DECIMAL'; comparators: NumberComparator[] }\n | { type: 'INTEGER'; comparators: NumberComparator[] }\n | { type: 'DATE_TIME'; comparators: DateTimeComparator[] }\n | { type: 'DATE_ONLY'; comparators: DateTimeComparator[] }\n | { type: 'TIME_ONLY'; comparators: DateTimeComparator[] };\n\nexport type RHSType = 'LITERAL' | 'FIELD' | 'DATE_FUNCTION' | 'RELATIVE_DATE' | 'PARAMETER';\n\n/** Date function types supported on the RHS */\nexport type DateFunction =\n | 'YEARS'\n | 'QUARTERS'\n | 'MONTHS'\n | 'WEEKS'\n | 'DAYS'\n | 'HOURS'\n | 'MINUTES'\n | 'SECONDS'\n | 'HOURS_OF_DAY'\n | 'MONTHS_OF_YEAR'\n | 'DAYS_OF_MONTH'\n | 'DAYS_OF_WEEK';\n\n/** \"Relative Date\" Time Periods supported on the RHS */\nexport type TimePeriod = 'LAST' | 'PREVIOUS' | 'CURRENT' | 'NEXT';\n\n/** \"Relative Date\" Date Parts supported on the RHS */\nexport type DatePart =\n | 'SECONDS'\n | 'MINUTES'\n | 'HOURS'\n | 'DAYS'\n | 'WEEKS'\n | 'MONTHS'\n | 'QUARTERS'\n | 'YEARS';\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/core/types.ts"],"names":[],"mappings":"","sourcesContent":["/** Supported field types */\nexport type FieldType =\n | 'BOOLEAN'\n | 'TEXT'\n | 'DECIMAL'\n | 'INTEGER'\n | 'DATE_TIME'\n | 'DATE_ONLY'\n | 'TIME_ONLY'\n | 'ATTACHMENT';\n\ntype NullComparator = 'IS_NULL' | 'IS_NOT_NULL';\ntype EqualityComparator = 'EQ' | 'NEQ';\ntype RangeComparator = 'GT' | 'GTE' | 'LT' | 'LTE' | 'BTW' | 'NOT_BTW';\ntype TruenessComparator = 'IS_TRUE' | 'IS_FALSE';\ntype ListComparator = 'IN' | 'NOT_IN';\ntype TextMatchComparator =\n | 'STARTS_WITH'\n | 'NOT_STARTS_WITH'\n | 'ENDS_WITH'\n | 'NOT_ENDS_WITH'\n | 'CONTAINS'\n | 'NOT_CONTAINS';\n\n/** All supported Comparators */\nexport type Comparator =\n | TruenessComparator\n | NullComparator\n | EqualityComparator\n | ListComparator\n | RangeComparator\n | TextMatchComparator;\n\n/** Comparators supported for BOOLEAN fields */\ntype BooleanComparator = TruenessComparator | EqualityComparator | NullComparator;\n\n/** Comparators supported for TEXT fields */\ntype TextComparator = EqualityComparator | ListComparator | TextMatchComparator | NullComparator;\n\n/** Comparators supported for DECIMAL/INTEGER fields */\ntype NumberComparator = EqualityComparator | ListComparator | RangeComparator | NullComparator;\n\n/** Comparators supported for DATE_TIME/DATE_ONLY/TIME_ONLY fields */\ntype DateTimeComparator = EqualityComparator | RangeComparator | NullComparator;\n\n/** Type definition to specify supported comparators by field-type */\nexport type ComparatorsByType =\n | { type: 'BOOLEAN'; comparators: BooleanComparator[] }\n | { type: 'TEXT'; comparators: TextComparator[] }\n | { type: 'DECIMAL'; comparators: NumberComparator[] }\n | { type: 'INTEGER'; comparators: NumberComparator[] }\n | { type: 'DATE_TIME'; comparators: DateTimeComparator[] }\n | { type: 'DATE_ONLY'; comparators: DateTimeComparator[] }\n | { type: 'TIME_ONLY'; comparators: DateTimeComparator[] }\n | { type: 'ATTACHMENT'; comparators: NullComparator[] };\n\nexport type RHSType = 'LITERAL' | 'FIELD' | 'DATE_FUNCTION' | 'RELATIVE_DATE' | 'PARAMETER';\n\n/** Date function types supported on the RHS */\nexport type DateFunction =\n | 'YEARS'\n | 'QUARTERS'\n | 'MONTHS'\n | 'WEEKS'\n | 'DAYS'\n | 'HOURS'\n | 'MINUTES'\n | 'SECONDS'\n | 'HOURS_OF_DAY'\n | 'MONTHS_OF_YEAR'\n | 'DAYS_OF_MONTH'\n | 'DAYS_OF_WEEK';\n\n/** \"Relative Date\" Time Periods supported on the RHS */\nexport type TimePeriod = 'LAST' | 'PREVIOUS' | 'CURRENT' | 'NEXT';\n\n/** \"Relative Date\" Date Parts supported on the RHS */\nexport type DatePart =\n | 'SECONDS'\n | 'MINUTES'\n | 'HOURS'\n | 'DAYS'\n | 'WEEKS'\n | 'MONTHS'\n | 'QUARTERS'\n | 'YEARS';\n"]}
|
|
@@ -5,7 +5,8 @@ export type { default as FieldConditionProps } from './FieldCondition.types';
|
|
|
5
5
|
export { default as evaluateCondition } from './core/evaluator';
|
|
6
6
|
export { default as formatCondition, formatRelativeDate } from './core/formatter';
|
|
7
7
|
export { default as transformComplexCondition } from './core/transformer';
|
|
8
|
-
export type { ComparatorsByType, RHSType, FieldType } from './core/types';
|
|
8
|
+
export type { ComparatorsByType, RHSType, FieldType, Comparator } from './core/types';
|
|
9
9
|
export { splitConditionTree, parseLogicString } from './core/utils';
|
|
10
10
|
export { default as AtomicCondition, getInitConditionForLhs, isValidCondition } from './AtomicCondition';
|
|
11
|
+
export type { AtomicConditionProps } from './AtomicCondition';
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,YAAY,EACV,OAAO,IAAI,qBAAqB,EAChC,SAAS,EACT,mBAAmB,EACnB,KAAK,EACL,aAAa,EACb,cAAc,EACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,YAAY,EACV,OAAO,IAAI,qBAAqB,EAChC,SAAS,EACT,mBAAmB,EACnB,KAAK,EACL,aAAa,EACb,cAAc,EACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EACL,OAAO,IAAI,eAAe,EAC1B,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAS7C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EACL,OAAO,IAAI,eAAe,EAC1B,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC","sourcesContent":["export { default } from './ConditionBuilder';\nexport type {\n default as ConditionBuilderProps,\n Condition,\n DateFunctionsByType,\n Field,\n LeafCondition,\n ValueSelection\n} from './ConditionBuilder.types';\nexport { default as FieldCondition } from './FieldCondition';\nexport type { default as FieldConditionProps } from './FieldCondition.types';\nexport { default as evaluateCondition } from './core/evaluator';\nexport { default as formatCondition, formatRelativeDate } from './core/formatter';\nexport { default as transformComplexCondition } from './core/transformer';\nexport type { ComparatorsByType, RHSType, FieldType } from './core/types';\nexport { splitConditionTree, parseLogicString } from './core/utils';\nexport {\n default as AtomicCondition,\n getInitConditionForLhs,\n isValidCondition\n} from './AtomicCondition';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAS7C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EACL,OAAO,IAAI,eAAe,EAC1B,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC","sourcesContent":["export { default } from './ConditionBuilder';\nexport type {\n default as ConditionBuilderProps,\n Condition,\n DateFunctionsByType,\n Field,\n LeafCondition,\n ValueSelection\n} from './ConditionBuilder.types';\nexport { default as FieldCondition } from './FieldCondition';\nexport type { default as FieldConditionProps } from './FieldCondition.types';\nexport { default as evaluateCondition } from './core/evaluator';\nexport { default as formatCondition, formatRelativeDate } from './core/formatter';\nexport { default as transformComplexCondition } from './core/transformer';\nexport type { ComparatorsByType, RHSType, FieldType, Comparator } from './core/types';\nexport { splitConditionTree, parseLogicString } from './core/utils';\nexport {\n default as AtomicCondition,\n getInitConditionForLhs,\n isValidCondition\n} from './AtomicCondition';\nexport type { AtomicConditionProps } from './AtomicCondition';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionInput.d.ts","sourceRoot":"","sources":["../../../src/components/ConditionInput/ConditionInput.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ConditionInput.d.ts","sourceRoot":"","sources":["../../../src/components/ConditionInput/ConditionInput.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAEV,+BAA+B,EAIhC,MAAM,yBAAyB,CAAC;AAuBjC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AA2ClE,QAAA,MAAM,cAAc,EAAE,+BAA+B,CAAC,mBAAmB,CAslBxE,CAAC;AAEF,eAAe,cAAc,CAAC"}
|