@bigbinary/neeto-filters-frontend 3.2.0-beta.0 → 3.2.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/index.js ADDED
@@ -0,0 +1,2906 @@
1
+ import React, { useState, useRef, useEffect, useTransition, useMemo } from 'react';
2
+ import classnames from 'classnames';
3
+ import i18next, { t as t$1 } from 'i18next';
4
+ import { findBy, isNotEmpty, capitalize, removeBy, humanize, hyphenate, noop, toLabelAndValue, replaceBy, isPresent, existsBy, isNotPresent, filterBy } from '@bigbinary/neeto-cist';
5
+ import { useMutationWithInvalidation, useQueryParams, useDebounce, withT } from '@bigbinary/neeto-commons-frontend/react-utils';
6
+ import { getQueryParams, dateFormat, buildUrl } from '@bigbinary/neeto-commons-frontend/utils';
7
+ import { Tooltip, Typography, Dropdown as Dropdown$2, Button, Pane as Pane$1, Alert, Select, DatePicker, TimePicker, Input as Input$1, Accordion, Spinner } from '@bigbinary/neetoui';
8
+ import { groupBy, anyPass, isNil, isEmpty, any, concat, omit, toLower, mergeLeft, identity, mergeRight, toPairs, not, pluck, either, has, equals, pick, modify, prop, isNotNil, append, last, mergeDeepRight } from 'ramda';
9
+ import { useTranslation, Trans } from 'react-i18next';
10
+ import { useHistory, useLocation } from 'react-router-dom';
11
+ import useHotkeys from '@bigbinary/neeto-hotkeys';
12
+ import { Help, Close, MenuHorizontal, Down, Settings } from '@bigbinary/neeto-icons';
13
+ import { Form, Input, ActionBlock } from '@bigbinary/neetoui/formik';
14
+ import { useQuery } from 'react-query';
15
+ import axios from 'axios';
16
+ import * as yup from 'yup';
17
+ import Search from '@bigbinary/neeto-molecules/Search';
18
+ import MenuBar from '@bigbinary/neeto-molecules/MenuBar';
19
+ import { FormikInlineInput } from '@bigbinary/neeto-molecules/InlineInput';
20
+
21
+ function _arrayLikeToArray(arr, len) {
22
+ if (len == null || len > arr.length) len = arr.length;
23
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
24
+ return arr2;
25
+ }
26
+
27
+ function _arrayWithoutHoles(arr) {
28
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
29
+ }
30
+
31
+ function _iterableToArray(iter) {
32
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
33
+ }
34
+
35
+ function _unsupportedIterableToArray(o, minLen) {
36
+ if (!o) return;
37
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
38
+ var n = Object.prototype.toString.call(o).slice(8, -1);
39
+ if (n === "Object" && o.constructor) n = o.constructor.name;
40
+ if (n === "Map" || n === "Set") return Array.from(o);
41
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
42
+ }
43
+
44
+ function _nonIterableSpread() {
45
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
46
+ }
47
+
48
+ function _toConsumableArray(arr) {
49
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
50
+ }
51
+
52
+ function _typeof(o) {
53
+ "@babel/helpers - typeof";
54
+
55
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
56
+ return typeof o;
57
+ } : function (o) {
58
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
59
+ }, _typeof(o);
60
+ }
61
+
62
+ function _toPrimitive(input, hint) {
63
+ if (_typeof(input) !== "object" || input === null) return input;
64
+ var prim = input[Symbol.toPrimitive];
65
+ if (prim !== undefined) {
66
+ var res = prim.call(input, hint || "default");
67
+ if (_typeof(res) !== "object") return res;
68
+ throw new TypeError("@@toPrimitive must return a primitive value.");
69
+ }
70
+ return (hint === "string" ? String : Number)(input);
71
+ }
72
+
73
+ function _toPropertyKey(arg) {
74
+ var key = _toPrimitive(arg, "string");
75
+ return _typeof(key) === "symbol" ? key : String(key);
76
+ }
77
+
78
+ function _defineProperty(obj, key, value) {
79
+ key = _toPropertyKey(key);
80
+ if (key in obj) {
81
+ Object.defineProperty(obj, key, {
82
+ value: value,
83
+ enumerable: true,
84
+ configurable: true,
85
+ writable: true
86
+ });
87
+ } else {
88
+ obj[key] = value;
89
+ }
90
+ return obj;
91
+ }
92
+
93
+ var SEGMENTS_BASE_URL = "/neeto_filters/segments";
94
+ var DATE_OPTIONS = [{
95
+ label: "Today",
96
+ value: "today"
97
+ }, {
98
+ label: "Yesterday",
99
+ value: "yesterday"
100
+ }, {
101
+ label: "This week",
102
+ value: "this-week"
103
+ }, {
104
+ label: "Last week",
105
+ value: "last-week"
106
+ }, {
107
+ label: "This month",
108
+ value: "this-month"
109
+ }, {
110
+ label: "Last month",
111
+ value: "last-month"
112
+ }, {
113
+ label: "This year",
114
+ value: "this-year"
115
+ }, {
116
+ label: "Last year",
117
+ value: "last-year"
118
+ }, {
119
+ label: "All time",
120
+ value: "all-time"
121
+ }, {
122
+ label: "After",
123
+ value: "after"
124
+ }, {
125
+ label: "Before",
126
+ value: "before"
127
+ }, {
128
+ label: "Custom date range",
129
+ value: "custom-date-range"
130
+ }];
131
+ var SINGLE_DATE_OPTIONS = [{
132
+ label: "On",
133
+ value: "on"
134
+ }, {
135
+ label: "After",
136
+ value: "after"
137
+ }, {
138
+ label: "Before",
139
+ value: "before"
140
+ }, {
141
+ label: "Between",
142
+ value: "between"
143
+ }];
144
+ var SINGLE_TIME_OPTIONS = [{
145
+ label: "At",
146
+ value: "at"
147
+ }, {
148
+ label: "After",
149
+ value: "after"
150
+ }, {
151
+ label: "Before",
152
+ value: "before"
153
+ }, {
154
+ label: "Between",
155
+ value: "between"
156
+ }];
157
+ var TIME_OPTIONS = [{
158
+ label: "This hour",
159
+ value: "this-hour"
160
+ }, {
161
+ label: "Last hour",
162
+ value: "last-hour"
163
+ }, {
164
+ label: "Custom time range",
165
+ value: "custom-time-range"
166
+ }];
167
+ var DATE_RULES = {
168
+ today: "on",
169
+ yesterday: "on",
170
+ "all-time": "before"
171
+ };
172
+ var SEARCH_TERM_KEY = "search_term";
173
+ var SEGMENT_ID_KEY = "segment_id";
174
+
175
+ var SHORTCUTS = {
176
+ closePane: {
177
+ sequence: "escape",
178
+ description: t$1("neetoFilters.shortcuts.closePane")
179
+ },
180
+ deleteBlock: {
181
+ sequence: "backspace",
182
+ description: t$1("neetoFilters.shortcuts.deleteBlock")
183
+ },
184
+ openFilterPane: {
185
+ sequence: "enter",
186
+ description: t$1("neetoFilters.shortcuts.openFilterPane")
187
+ }
188
+ };
189
+
190
+ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
191
+
192
+ function getDefaultExportFromCjs (x) {
193
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
194
+ }
195
+
196
+ var dayjs_min = {exports: {}};
197
+
198
+ dayjs_min.exports;
199
+
200
+ (function (module, exports) {
201
+ !function(t,e){module.exports=e();}(commonjsGlobal,(function(){var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",f="month",h="quarter",c="year",d="date",$="Invalid Date",l=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},m=function(t,e,n){var r=String(t);return !r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},g={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return (e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()<n.date())return -t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,f),s=n-i<0,u=e.clone().add(r+(s?-1:1),f);return +(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return {M:f,y:c,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:h}[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},v="en",D={};D[v]=M;var p=function(t){return t instanceof _},S=function t(e,n,r){var i;if(!e)return v;if("string"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split("-");if(!i&&u.length>1)return t(u[0])}else {var a=e.name;D[a]=e,i=a;}return !r&&i&&(v=i),i||!r&&v},w=function(t,e){if(p(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=g;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t);}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match(l);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init();},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds();},m.$utils=function(){return O},m.isValid=function(){return !(this.$d.toString()===$)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<w(t)},m.$g=function(t,e,n){return O.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!O.u(e)||e,h=O.p(t),$=function(t,e){var i=O.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},l=function(t,e){return O.w(n.toDate()[t].apply(n.toDate("s"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,g="set"+(this.$u?"UTC":"");switch(h){case c:return r?$(1,0):$(31,11);case f:return r?$(1,M):$(0,M+1);case o:var v=this.$locale().weekStart||0,D=(y<v?y+7:y)-v;return $(r?m-D:m+(6-D),M);case a:case d:return l(g+"Hours",0);case u:return l(g+"Minutes",1);case s:return l(g+"Seconds",2);case i:return l(g+"Milliseconds",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=O.p(t),h="set"+(this.$u?"UTC":""),$=(n={},n[a]=h+"Date",n[d]=h+"Date",n[f]=h+"Month",n[c]=h+"FullYear",n[u]=h+"Hours",n[s]=h+"Minutes",n[i]=h+"Seconds",n[r]=h+"Milliseconds",n)[o],l=o===a?this.$D+(e-this.$W):e;if(o===f||o===c){var y=this.clone().set(d,1);y.$d[$](l),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d;}else $&&this.$d[$](l);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[O.p(t)]()},m.add=function(r,h){var d,$=this;r=Number(r);var l=O.p(h),y=function(t){var e=w($);return O.w(e.date(e.date()+Math.round(t*r)),$)};if(l===f)return this.set(f,this.$M+r);if(l===c)return this.set(c,this.$y+r);if(l===a)return y(1);if(l===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[l]||1,m=this.$d.getTime()+r*M;return O.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||$;var r=t||"YYYY-MM-DDTHH:mm:ssZ",i=O.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,f=n.months,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},c=function(t){return O.s(s%12||12,t,"0")},d=n.meridiem||function(t,e,n){var r=t<12?"AM":"PM";return n?r.toLowerCase():r},l={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:O.s(a+1,2,"0"),MMM:h(n.monthsShort,a,f,3),MMMM:h(f,a),D:this.$D,DD:O.s(this.$D,2,"0"),d:String(this.$W),dd:h(n.weekdaysMin,this.$W,o,2),ddd:h(n.weekdaysShort,this.$W,o,3),dddd:o[this.$W],H:String(s),HH:O.s(s,2,"0"),h:c(1),hh:c(2),a:d(s,u,!0),A:d(s,u,!1),m:String(u),mm:O.s(u,2,"0"),s:String(this.$s),ss:O.s(this.$s,2,"0"),SSS:O.s(this.$ms,3,"0"),Z:i};return r.replace(y,(function(t,e){return e||l[t]||i.replace(":","")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,$){var l,y=O.p(d),M=w(r),m=(M.utcOffset()-this.utcOffset())*e,g=this-M,v=O.m(this,M);return v=(l={},l[c]=v/12,l[f]=v,l[h]=v/3,l[o]=(g-m)/6048e5,l[a]=(g-m)/864e5,l[u]=g/n,l[s]=g/e,l[i]=g/t,l)[y]||g,$?v:O.a(v)},m.daysInMonth=function(){return this.endOf(f).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=S(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return O.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),T=_.prototype;return w.prototype=T,[["$ms",r],["$s",i],["$m",s],["$H",u],["$W",a],["$M",f],["$y",c],["$D",d]].forEach((function(t){T[t[1]]=function(e){return this.$g(e,t[0],t[1])};})),w.extend=function(t,e){return t.$i||(t(e,_,w),t.$i=!0),w},w.locale=S,w.isDayjs=p,w.unix=function(t){return w(1e3*t)},w.en=D[v],w.Ls=D,w.p={},w}));
202
+ } (dayjs_min, dayjs_min.exports));
203
+
204
+ var dayjs_minExports = dayjs_min.exports;
205
+ var dayjs = /*@__PURE__*/getDefaultExportFromCjs(dayjs_minExports);
206
+
207
+ var NUMBER_RULES = [{
208
+ label: t$1("neetoFilters.rules.is"),
209
+ value: "is"
210
+ }, {
211
+ label: t$1("neetoFilters.rules.isNot"),
212
+ value: "is_not"
213
+ }, {
214
+ label: t$1("neetoFilters.rules.greaterThan"),
215
+ value: "greater_than"
216
+ }, {
217
+ label: t$1("neetoFilters.rules.lessThan"),
218
+ value: "less_than"
219
+ }];
220
+ var TEXT_RULES = [{
221
+ label: t$1("neetoFilters.rules.contains"),
222
+ value: "contains"
223
+ }, {
224
+ label: t$1("neetoFilters.rules.doesNotContain"),
225
+ value: "does_not_contain"
226
+ }, {
227
+ label: t$1("neetoFilters.rules.is"),
228
+ value: "is"
229
+ }, {
230
+ label: t$1("neetoFilters.rules.isNot"),
231
+ value: "is_not"
232
+ }, {
233
+ label: t$1("neetoFilters.rules.startsWith"),
234
+ value: "starts_with"
235
+ }, {
236
+ label: t$1("neetoFilters.rules.doesNotStartWith"),
237
+ value: "does_not_start_with"
238
+ }, {
239
+ label: t$1("neetoFilters.rules.endsWith"),
240
+ value: "ends_with"
241
+ }, {
242
+ label: t$1("neetoFilters.rules.doesNotEndWith"),
243
+ value: "does_not_end_with"
244
+ }];
245
+ var DEFAULT_BOOLEAN_OPTIONS = [{
246
+ label: t$1("neetoFilters.common.yes"),
247
+ value: "true"
248
+ }, {
249
+ label: t$1("neetoFilters.common.no"),
250
+ value: "false"
251
+ }];
252
+ var DEFAULT_HELP_ICON_PROPS = {
253
+ icon: Help,
254
+ tooltipProps: {
255
+ position: "right"
256
+ }
257
+ };
258
+
259
+ function _arrayWithHoles(arr) {
260
+ if (Array.isArray(arr)) return arr;
261
+ }
262
+
263
+ function _iterableToArrayLimit(r, l) {
264
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
265
+ if (null != t) {
266
+ var e,
267
+ n,
268
+ i,
269
+ u,
270
+ a = [],
271
+ f = !0,
272
+ o = !1;
273
+ try {
274
+ if (i = (t = t.call(r)).next, 0 === l) {
275
+ if (Object(t) !== t) return;
276
+ f = !1;
277
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
278
+ } catch (r) {
279
+ o = !0, n = r;
280
+ } finally {
281
+ try {
282
+ if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
283
+ } finally {
284
+ if (o) throw n;
285
+ }
286
+ }
287
+ return a;
288
+ }
289
+ }
290
+
291
+ function _nonIterableRest() {
292
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
293
+ }
294
+
295
+ function _slicedToArray(arr, i) {
296
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
297
+ }
298
+
299
+ var timezone$1 = {exports: {}};
300
+
301
+ timezone$1.exports;
302
+
303
+ (function (module, exports) {
304
+ !function(t,e){module.exports=e();}(commonjsGlobal,(function(){var t={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(n,i,o){var r,a=function(t,n,i){void 0===i&&(i={});var o=new Date(t),r=function(t,n){void 0===n&&(n={});var i=n.timeZoneName||"short",o=t+"|"+i,r=e[o];return r||(r=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:i}),e[o]=r),r}(n,i);return r.formatToParts(o)},u=function(e,n){for(var i=a(e,n),r=[],u=0;u<i.length;u+=1){var f=i[u],s=f.type,m=f.value,c=t[s];c>=0&&(r[c]=parseInt(m,10));}var d=r[3],l=24===d?0:d,v=r[0]+"-"+r[1]+"-"+r[2]+" "+l+":"+r[4]+":"+r[5]+":000",h=+e;return (o.utc(v).valueOf()-(h-=h%1e3))/6e4},f=i.prototype;f.tz=function(t,e){void 0===t&&(t=r);var n=this.utcOffset(),i=this.toDate(),a=i.toLocaleString("en-US",{timeZone:t}),u=Math.round((i-new Date(a))/1e3/60),f=o(a).$set("millisecond",this.$ms).utcOffset(15*-Math.round(i.getTimezoneOffset()/15)-u,!0);if(e){var s=f.utcOffset();f=f.add(n-s,"minute");}return f.$x.$timezone=t,f},f.offsetName=function(t){var e=this.$x.$timezone||o.tz.guess(),n=a(this.valueOf(),e,{timeZoneName:t}).find((function(t){return "timezonename"===t.type.toLowerCase()}));return n&&n.value};var s=f.startOf;f.startOf=function(t,e){if(!this.$x||!this.$x.$timezone)return s.call(this,t,e);var n=o(this.format("YYYY-MM-DD HH:mm:ss:SSS"));return s.call(n,t,e).tz(this.$x.$timezone,!0)},o.tz=function(t,e,n){var i=n&&e,a=n||e||r,f=u(+o(),a);if("string"!=typeof t)return o(t).tz(a);var s=function(t,e,n){var i=t-60*e*1e3,o=u(i,n);if(e===o)return [i,e];var r=u(i-=60*(o-e)*1e3,n);return o===r?[i,o]:[t-60*Math.min(o,r)*1e3,Math.max(o,r)]}(o.utc(t,i).valueOf(),f,a),m=s[0],c=s[1],d=o(m).utcOffset(c);return d.$x.$timezone=a,d},o.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},o.tz.setDefault=function(t){r=t;};}}));
305
+ } (timezone$1, timezone$1.exports));
306
+
307
+ var timezoneExports = timezone$1.exports;
308
+ var timezone = /*@__PURE__*/getDefaultExportFromCjs(timezoneExports);
309
+
310
+ var utc$1 = {exports: {}};
311
+
312
+ utc$1.exports;
313
+
314
+ (function (module, exports) {
315
+ !function(t,i){module.exports=i();}(commonjsGlobal,(function(){var t="minute",i=/[+-]\d\d(?::?\d\d)?/g,e=/([+-]|\d\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var o=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),o.call(this,t);};var r=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds();}else r.call(this);};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if("string"==typeof s&&(s=function(t){void 0===t&&(t="");var s=t.match(i);if(!s)return null;var f=(""+s[0]).match(e)||["-",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:"+"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s,o=this;if(f)return o.$offset=u,o.$u=0===s,o;if(0!==s){var r=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(o=this.local().add(u+r,t)).$offset=u,o.$x.$localOffset=r;}else o=this.utc();return o};var h=u.format;u.format=function(t){var i=t||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||(new Date).getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return !!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return "s"===t&&this.$offset?n(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)};}}));
316
+ } (utc$1, utc$1.exports));
317
+
318
+ var utcExports = utc$1.exports;
319
+ var utc = /*@__PURE__*/getDefaultExportFromCjs(utcExports);
320
+
321
+ var weekday$1 = {exports: {}};
322
+
323
+ weekday$1.exports;
324
+
325
+ (function (module, exports) {
326
+ !function(e,t){module.exports=t();}(commonjsGlobal,(function(){return function(e,t){t.prototype.weekday=function(e){var t=this.$locale().weekStart||0,i=this.$W,n=(i<t?i+7:i)-t;return this.$utils().u(e)?n:this.subtract(n,"day").add(e,"day")};}}));
327
+ } (weekday$1, weekday$1.exports));
328
+
329
+ var weekdayExports = weekday$1.exports;
330
+ var weekday = /*@__PURE__*/getDefaultExportFromCjs(weekdayExports);
331
+
332
+ dayjs.extend(utc);
333
+ dayjs.extend(timezone);
334
+ dayjs.extend(weekday);
335
+ dayjs.Ls.en.weekStart = 1;
336
+
337
+ function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
338
+ function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
339
+ var groupByGroup = groupBy(function (_ref) {
340
+ var group = _ref.group;
341
+ return group || "individual";
342
+ });
343
+ var standardizeColumnType = function standardizeColumnType(kind) {
344
+ // neeto-fields-nano supports `monetary` and `number` as type of fields, which will be acting as `decimal` in action.
345
+ if (["custom.monetary", "custom.number"].includes(kind)) {
346
+ return "custom.decimal";
347
+ }
348
+ return kind;
349
+ };
350
+ var getSnakeCasedQueryParams = function getSnakeCasedQueryParams() {
351
+ return getQueryParams({
352
+ toCamelCase: false
353
+ });
354
+ };
355
+ var isBoolean = function isBoolean(type) {
356
+ return type === "boolean" || type === "custom.boolean";
357
+ };
358
+ var isCheckbox = function isCheckbox(type) {
359
+ return type === "checkbox" || type === "custom.checkbox";
360
+ };
361
+ var isDate = function isDate(type) {
362
+ return type === "date" || type === "custom.date" || type === "custom.datetime";
363
+ };
364
+ var isSingleDate = function isSingleDate(type) {
365
+ return type === "single_date" || type === "custom.single_date";
366
+ };
367
+ var isSingleTime = function isSingleTime(type) {
368
+ return type === "single_time" || type === "custom.single_time";
369
+ };
370
+ var isTime = function isTime(type) {
371
+ return type === "time" || type === "custom.time";
372
+ };
373
+ var isMulti = function isMulti(type) {
374
+ return type === "multi_option" || type === "custom.multi_option";
375
+ };
376
+ var isText = function isText(type) {
377
+ return type === "text" || type === "custom.text";
378
+ };
379
+ var isDigit = function isDigit(type) {
380
+ return ["number", "decimal", "custom.decimal", "custom.number"].includes(type);
381
+ };
382
+ var isCustomDateRange = function isCustomDateRange(value) {
383
+ return !pluck("value", DATE_OPTIONS).includes(value);
384
+ };
385
+ var isCustomTimeRange = function isCustomTimeRange(value) {
386
+ return !pluck("value", TIME_OPTIONS).includes(value);
387
+ };
388
+ var isMultiModelFilter = function isMultiModelFilter(_ref2) {
389
+ var _ref2$model = _ref2.model,
390
+ model = _ref2$model === void 0 ? "" : _ref2$model;
391
+ return model.split(",").length > 1;
392
+ };
393
+ var getTimezone = function getTimezone() {
394
+ return dayjs.tz.guess();
395
+ };
396
+ var getLabelFromBool = function getLabelFromBool(_ref3) {
397
+ var value = _ref3.value,
398
+ values = _ref3.values;
399
+ return findBy({
400
+ value: value
401
+ }, either(isEmpty, isNil)(values) ? DEFAULT_BOOLEAN_OPTIONS : values).label;
402
+ };
403
+ var getBoolFromLabel = function getBoolFromLabel(_ref4) {
404
+ var label = _ref4.label,
405
+ values = _ref4.values;
406
+ return findBy({
407
+ label: label
408
+ }, either(isEmpty, isNil)(values) ? DEFAULT_BOOLEAN_OPTIONS : values).value;
409
+ };
410
+ var buildRuleOptions = function buildRuleOptions(_ref5) {
411
+ var defaultType = _ref5.defaultType;
412
+ if (isText(defaultType)) return TEXT_RULES;else if (isDigit(defaultType)) return NUMBER_RULES;
413
+ return [];
414
+ };
415
+ var getDefaultRuleValue = function getDefaultRuleValue(defaultType) {
416
+ var _buildRuleOptions;
417
+ return ((_buildRuleOptions = buildRuleOptions({
418
+ defaultType: defaultType
419
+ })) === null || _buildRuleOptions === void 0 || (_buildRuleOptions = _buildRuleOptions[0]) === null || _buildRuleOptions === void 0 ? void 0 : _buildRuleOptions.value) || "";
420
+ };
421
+ var isUndefinedOrEmpty = anyPass([isNil, isEmpty, any(isNil)]);
422
+
423
+ // Following function split node on comma followed by non-comma characters and a dot
424
+ var splitNode = function splitNode(joinedNodes) {
425
+ return joinedNodes.split(/,(?=[^,]*\.)/);
426
+ };
427
+ var splitFilter = function splitFilter(multiColumnFilter) {
428
+ var splittedNodes = splitNode(multiColumnFilter.node);
429
+ var splittedModels = multiColumnFilter.model.split(",");
430
+ return splittedNodes.map(function (node, index) {
431
+ return mergeLeft({
432
+ node: node,
433
+ model: splittedModels[index],
434
+ conditions_join_type: index < splittedNodes.length - 1 ? "or" : "and"
435
+ }, omit(["key", "label", "values", "setValue"], multiColumnFilter));
436
+ });
437
+ };
438
+ var buildDateValue = function buildDateValue(_ref6) {
439
+ var value = _ref6.value;
440
+ var rule = DATE_RULES[value] || "between";
441
+ var dateValue = ["before", "after", "custom-date-range"].includes(value) ? "" : value;
442
+ return {
443
+ value: dateValue,
444
+ rule: rule,
445
+ timezone: getTimezone()
446
+ };
447
+ };
448
+ var buildTimeValue = function buildTimeValue(_ref7) {
449
+ var value = _ref7.value;
450
+ var dateValue = value === "custom-time-range" ? "" : value;
451
+ return {
452
+ value: dateValue,
453
+ rule: "between"
454
+ };
455
+ };
456
+ var buildUpdatedFilter = function buildUpdatedFilter(_ref8) {
457
+ var column = _ref8.column,
458
+ defaultType = _ref8.defaultType,
459
+ option = _ref8.option,
460
+ _ref8$rule = _ref8.rule,
461
+ rule = _ref8$rule === void 0 ? "" : _ref8$rule,
462
+ _ref8$value = _ref8.value,
463
+ value = _ref8$value === void 0 ? "" : _ref8$value;
464
+ var filter = omit(["values", "preprocessor"], column);
465
+ if (isMulti(defaultType)) {
466
+ return mergeLeft(filter, {
467
+ value: pluck("value", option),
468
+ rule: "in"
469
+ });
470
+ } else if (isDate(defaultType)) {
471
+ return mergeLeft(filter, buildDateValue(option));
472
+ } else if (isSingleDate(defaultType)) {
473
+ return mergeLeft(filter, {
474
+ value: value,
475
+ rule: rule,
476
+ timezone: getTimezone()
477
+ });
478
+ } else if (isText(defaultType) || isDigit(defaultType)) {
479
+ var _column$preprocessor;
480
+ return mergeLeft(filter, {
481
+ rule: rule,
482
+ value: (column === null || column === void 0 || (_column$preprocessor = column.preprocessor) === null || _column$preprocessor === void 0 ? void 0 : _column$preprocessor.call(column, value)) || value
483
+ });
484
+ } else if (isSingleTime(defaultType)) {
485
+ return mergeLeft(filter, {
486
+ value: value,
487
+ rule: rule
488
+ });
489
+ } else if (isTime(defaultType)) {
490
+ return mergeLeft(filter, buildTimeValue(option));
491
+ }
492
+ return mergeLeft(filter, {
493
+ value: option.value,
494
+ rule: "is"
495
+ });
496
+ };
497
+ var buildFiltersFromSearchParams = function buildFiltersFromSearchParams(columns) {
498
+ var skipEmpty = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
499
+ var searchParams = getSnakeCasedQueryParams();
500
+ return columns.map(function (column) {
501
+ var value = searchParams[column.key];
502
+ var defaultType = column.defaultType || column.type;
503
+ if (!skipEmpty && value === "") {
504
+ return mergeLeft({
505
+ value: ""
506
+ }, column);
507
+ } else if (isNil(value) || value === "" || column.key === "keyword") {
508
+ return null;
509
+ } else if (column.key === SEARCH_TERM_KEY) {
510
+ if (isNil(column.node)) return null;
511
+ return mergeLeft({
512
+ value: value,
513
+ type: "text",
514
+ rule: "contains"
515
+ }, column);
516
+ } else if (isDate(defaultType) && isCustomDateRange(value)) {
517
+ return mergeLeft({
518
+ value: value.split(",")
519
+ }, column);
520
+ } else if (isMulti(defaultType)) {
521
+ return mergeLeft({
522
+ rule: "in",
523
+ value: value.split("|")
524
+ }, column);
525
+ } else if (isDigit(defaultType) || isText(defaultType)) {
526
+ var _value$split = value.split("+rule-"),
527
+ _value$split2 = _slicedToArray(_value$split, 2),
528
+ filterValue = _value$split2[0],
529
+ rule = _value$split2[1];
530
+ return mergeLeft({
531
+ rule: rule,
532
+ value: filterValue
533
+ }, column);
534
+ } else if (isTime(defaultType) && isCustomTimeRange(value)) {
535
+ return mergeLeft({
536
+ value: value.split(",")
537
+ }, column);
538
+ } else if (isSingleDate(defaultType)) {
539
+ var _value$split3 = value.split("+rule-"),
540
+ _value$split4 = _slicedToArray(_value$split3, 2),
541
+ _filterValue = _value$split4[0],
542
+ _rule = _value$split4[1];
543
+ return mergeLeft({
544
+ rule: _rule,
545
+ value: _rule === "between" ? _filterValue.split(",") : _filterValue
546
+ }, column);
547
+ } else if (isSingleTime(defaultType)) {
548
+ var _value$split5 = value.split("+rule-"),
549
+ _value$split6 = _slicedToArray(_value$split5, 2),
550
+ _filterValue2 = _value$split6[0],
551
+ _rule2 = _value$split6[1];
552
+ return mergeLeft({
553
+ rule: _rule2,
554
+ value: _rule2 === "between" ? _filterValue2.split(",") : _filterValue2
555
+ }, column);
556
+ } else if (isBoolean(defaultType)) {
557
+ return mergeLeft({
558
+ rule: "is",
559
+ value: getBoolFromLabel({
560
+ label: value,
561
+ values: column.values
562
+ })
563
+ }, column);
564
+ }
565
+ return mergeLeft({
566
+ rule: "is",
567
+ value: value
568
+ }, column);
569
+ }).filter(identity);
570
+ };
571
+ var buildTimePayload = function buildTimePayload(value) {
572
+ var timeValue = {
573
+ "this-hour": [dayjs().startOf("hour"), dayjs().endOf("hour")],
574
+ "last-hour": [dayjs().add(-1, "hour").startOf("hour"), dayjs().add(-1, "hour").endOf("hour")],
575
+ "next-hour": [dayjs().add(1, "hour").startOf("hour"), dayjs().add(1, "hour").endOf("hour")]
576
+ };
577
+ if (isCustomTimeRange(value)) {
578
+ return {
579
+ value: value ? value.join(",") : "",
580
+ rule: "between"
581
+ };
582
+ }
583
+ return {
584
+ value: timeValue[value].map(function (time) {
585
+ return time.toISOString();
586
+ }).join(","),
587
+ rule: "between"
588
+ };
589
+ };
590
+ var buildDatePayload = function buildDatePayload(value) {
591
+ var dateValue = {
592
+ "this-week": [dayjs().startOf("week"), dayjs().endOf("week")],
593
+ "last-week": [dayjs().add(-1, "week").startOf("week"), dayjs().add(-1, "week").endOf("week")],
594
+ "this-month": [dayjs().startOf("month"), dayjs().endOf("month")],
595
+ "last-month": [dayjs().add(-1, "month").startOf("month"), dayjs().add(-1, "month").endOf("month")],
596
+ "this-year": [dayjs().startOf("year"), dayjs().endOf("year")],
597
+ "last-year": [dayjs().add(-1, "year").startOf("year"), dayjs().add(-1, "year").endOf("year")]
598
+ };
599
+ if (value === "today") {
600
+ return {
601
+ value: dayjs().toISOString(),
602
+ rule: "on",
603
+ timezone: getTimezone()
604
+ };
605
+ } else if (value === "yesterday") {
606
+ return {
607
+ value: dayjs().add(-1, "day").toISOString(),
608
+ rule: "on",
609
+ timezone: getTimezone()
610
+ };
611
+ } else if (value === "all-time") {
612
+ return {
613
+ value: dayjs().toISOString(),
614
+ rule: "before",
615
+ timezone: getTimezone(),
616
+ type: "datetime"
617
+ };
618
+ } else if (isCustomDateRange(value)) {
619
+ //custom-date-range
620
+ return {
621
+ value: value ? value.join(",") : "",
622
+ rule: "between",
623
+ timezone: getTimezone()
624
+ };
625
+ }
626
+ return {
627
+ value: dateValue[value].map(function (date) {
628
+ return date.toISOString();
629
+ }).join(","),
630
+ rule: "between",
631
+ timezone: getTimezone()
632
+ };
633
+ };
634
+ var buildSingleDatePayload = function buildSingleDatePayload(filter) {
635
+ var value = filter.value;
636
+ var filterValue = Array.isArray(value) ? value.join(",") : value;
637
+ return _objectSpread$4(_objectSpread$4({}, filter), {}, {
638
+ value: filterValue,
639
+ type: "date"
640
+ });
641
+ };
642
+ var buildSingleTimePayload = function buildSingleTimePayload(filter) {
643
+ var value = filter.value;
644
+ var filterValue = Array.isArray(value) ? value.join(",") : value;
645
+ return _objectSpread$4(_objectSpread$4({}, filter), {}, {
646
+ value: filterValue,
647
+ type: "time"
648
+ });
649
+ };
650
+ var flattenPayload = function flattenPayload(payload) {
651
+ var flattenedPayload = [];
652
+ payload.forEach(function (item) {
653
+ return Array.isArray(item) ? flattenedPayload.unshift.apply(flattenedPayload, _toConsumableArray(item)) : flattenedPayload.push(item);
654
+ }, []);
655
+ return flattenedPayload;
656
+ };
657
+ var buildMultiOptionPayload = function buildMultiOptionPayload(values) {
658
+ return values.map(function (value) {
659
+ return value.toString();
660
+ }).join("|");
661
+ };
662
+ var buildFiltersPayload = function buildFiltersPayload(filters) {
663
+ var payload = removeBy({
664
+ value: ""
665
+ }, filters).map(function (filter) {
666
+ if (filter.key === SEARCH_TERM_KEY && isMultiModelFilter(filter)) {
667
+ return splitFilter(filter);
668
+ }
669
+ var filterPayload = omit(["key", "label", "values", "setValue"], filter);
670
+ var _filterPayload$defaul = filterPayload.defaultType,
671
+ defaultType = _filterPayload$defaul === void 0 ? filterPayload.type : _filterPayload$defaul,
672
+ value = filterPayload.value;
673
+ if (isMultiModelFilter(filterPayload)) {
674
+ throw i18next.t("neetoFilters.errors.cannotPassMultipleModels");
675
+ }
676
+ if (isDate(defaultType)) {
677
+ return mergeRight(filterPayload, buildDatePayload(value));
678
+ } else if (isMulti(defaultType)) {
679
+ return mergeRight(filterPayload, {
680
+ value: buildMultiOptionPayload(value)
681
+ });
682
+ } else if (isSingleDate(defaultType)) {
683
+ return mergeRight(filterPayload, buildSingleDatePayload(filterPayload));
684
+ } else if (isSingleTime(defaultType)) {
685
+ return mergeRight(filterPayload, buildSingleTimePayload(filterPayload));
686
+ } else if (isTime(defaultType)) {
687
+ return mergeRight(filterPayload, buildTimePayload(value));
688
+ }
689
+ return filterPayload;
690
+ });
691
+ return isEmpty(payload) ? [] : [{
692
+ conditions: flattenPayload(payload)
693
+ }];
694
+ };
695
+ var buildSegmentsPayload = function buildSegmentsPayload(filters) {
696
+ var childrenKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
697
+ var payload = removeBy({
698
+ value: ""
699
+ }, filters).map(function (filter) {
700
+ if (filter.key === SEARCH_TERM_KEY) {
701
+ return false;
702
+ }
703
+ var filterPayload = omit(["label", "values", "setValue", "defaultValue"], filter);
704
+ var _filterPayload$defaul2 = filterPayload.defaultType,
705
+ defaultType = _filterPayload$defaul2 === void 0 ? filterPayload.type : _filterPayload$defaul2,
706
+ value = filterPayload.value;
707
+ if (filter.key !== SEARCH_TERM_KEY && isMultiModelFilter(filterPayload)) {
708
+ throw i18next.t("neetoFilters.errors.cannotPassMultipleModels");
709
+ }
710
+ if (isMulti(defaultType)) {
711
+ return mergeRight(filterPayload, {
712
+ value: buildMultiOptionPayload(value)
713
+ });
714
+ }
715
+ return filterPayload;
716
+ });
717
+ var searchParams = getSnakeCasedQueryParams();
718
+ var modifiedPayload = childrenKeys.reduce(function (acc, key) {
719
+ if (has(key, searchParams)) {
720
+ var filterPayload = {
721
+ key: key,
722
+ node: "children",
723
+ value: searchParams[key]
724
+ };
725
+ return acc.concat(filterPayload);
726
+ }
727
+ return acc;
728
+ }, payload);
729
+ return isEmpty(modifiedPayload) ? [] : [{
730
+ conditions: flattenPayload(modifiedPayload)
731
+ }];
732
+ };
733
+ var buildFiltersFromURL = function buildFiltersFromURL(columns) {
734
+ return buildFiltersPayload(buildFiltersFromSearchParams(columns.filter(function (column) {
735
+ return !isNil(column.node);
736
+ })));
737
+ };
738
+ var buildSelectorsFromURL = function buildSelectorsFromURL(columns) {
739
+ var searchParams = getSnakeCasedQueryParams();
740
+ var selectors = {};
741
+ columns.filter(function (_ref9) {
742
+ var node = _ref9.node;
743
+ return !node;
744
+ }).forEach(function (_ref10) {
745
+ var key = _ref10.key,
746
+ defaultType = _ref10.defaultType,
747
+ type = _ref10.type;
748
+ var value = searchParams[key];
749
+ if (value) {
750
+ selectors[key] = isMulti(defaultType || type) ? value.split("|") : value;
751
+ }
752
+ });
753
+ return selectors;
754
+ };
755
+ var compareFilters = function compareFilters(oldFilters, newFilters) {
756
+ var formatFilters = function formatFilters(filters) {
757
+ return removeBy({
758
+ value: ""
759
+ }, filters).map(pick(["key", "rule", "value"]));
760
+ };
761
+ return equals(formatFilters(oldFilters), formatFilters(newFilters));
762
+ };
763
+ var buildFilteredColumns = function buildFilteredColumns(_ref11) {
764
+ var _ref11$searchTerm = _ref11.searchTerm,
765
+ searchTerm = _ref11$searchTerm === void 0 ? "" : _ref11$searchTerm,
766
+ columns = _ref11.columns;
767
+ var groupedColumsObject = groupByGroup(columns.filter(function (_ref12) {
768
+ var label = _ref12.label,
769
+ _ref12$hidden = _ref12.hidden,
770
+ hidden = _ref12$hidden === void 0 ? false : _ref12$hidden;
771
+ return label.toLocaleLowerCase().includes(searchTerm.trim().toLocaleLowerCase()) && !hidden;
772
+ }));
773
+ return {
774
+ groupedColumns: toPairs(omit(["individual"], groupedColumsObject)).map(function (_ref13) {
775
+ var _ref14 = _slicedToArray(_ref13, 2),
776
+ group = _ref14[0],
777
+ columns = _ref14[1];
778
+ return {
779
+ group: group,
780
+ columns: columns
781
+ };
782
+ }),
783
+ ungroupedColumns: groupedColumsObject.individual
784
+ };
785
+ };
786
+ var buildDefaultFilters = function buildDefaultFilters(columns, filters) {
787
+ return columns.filter(function (column) {
788
+ return !isUndefinedOrEmpty(column.defaultValue) && !findBy({
789
+ key: column.key
790
+ }, filters);
791
+ }).map(function (column) {
792
+ var defaultType = column.defaultType || column.type;
793
+ return buildUpdatedFilter({
794
+ column: column,
795
+ defaultType: defaultType,
796
+ rule: getDefaultRuleValue(defaultType),
797
+ option: column.defaultValue,
798
+ value: column.defaultValue
799
+ });
800
+ });
801
+ };
802
+ var createUrlParamString = function createUrlParamString(_ref15) {
803
+ var filter = _ref15.filter,
804
+ columns = _ref15.columns;
805
+ var key = filter.key,
806
+ value = filter.value,
807
+ _filter$defaultType = filter.defaultType,
808
+ defaultType = _filter$defaultType === void 0 ? filter.type : _filter$defaultType,
809
+ rule = filter.rule;
810
+ if (key === SEARCH_TERM_KEY) {
811
+ return value;
812
+ } else if (isDigit(defaultType) || isText(defaultType)) {
813
+ return "".concat(value, "+rule-").concat(rule);
814
+ } else if (isSingleDate(defaultType) || isSingleTime(defaultType)) {
815
+ return value && "".concat(value, "+rule-").concat(rule) || value;
816
+ } else if (isMulti(defaultType)) {
817
+ return value.join("|");
818
+ } else if (isBoolean(defaultType)) {
819
+ return getLabelFromBool({
820
+ value: value,
821
+ values: findBy({
822
+ key: key
823
+ }, columns).values
824
+ });
825
+ }
826
+ return value;
827
+ };
828
+ var buildUrlFromFilters = function buildUrlFromFilters(_ref16) {
829
+ var columns = _ref16.columns,
830
+ filters = _ref16.filters,
831
+ _ref16$isClearAll = _ref16.isClearAll,
832
+ isClearAll = _ref16$isClearAll === void 0 ? false : _ref16$isClearAll,
833
+ _ref16$childrenKeys = _ref16.childrenKeys,
834
+ childrenKeys = _ref16$childrenKeys === void 0 ? [] : _ref16$childrenKeys;
835
+ var searchParams = getSnakeCasedQueryParams();
836
+ var isKeywordFilterPresent = findBy({
837
+ key: SEARCH_TERM_KEY
838
+ }, filters);
839
+ columns.forEach(function (_ref17) {
840
+ var key = _ref17.key,
841
+ defaultValue = _ref17.defaultValue;
842
+ return !defaultValue && delete searchParams[key];
843
+ });
844
+ if (isClearAll) {
845
+ childrenKeys.forEach(function (key) {
846
+ return delete searchParams[key];
847
+ });
848
+ delete searchParams[SEGMENT_ID_KEY];
849
+ }
850
+ var defaultFilters = buildDefaultFilters(columns, filters);
851
+ isKeywordFilterPresent && delete searchParams[SEARCH_TERM_KEY];
852
+ concat(filters, defaultFilters).forEach(function (filter) {
853
+ searchParams[filter.key] = createUrlParamString({
854
+ filter: filter,
855
+ columns: columns
856
+ });
857
+ });
858
+ if (isEmpty(omit([SEGMENT_ID_KEY], searchParams))) {
859
+ delete searchParams[SEGMENT_ID_KEY];
860
+ }
861
+ return new URLSearchParams(searchParams).toString();
862
+ };
863
+ var createUrlParamStringForSegments = function createUrlParamStringForSegments(_ref18) {
864
+ var filter = _ref18.filter,
865
+ columns = _ref18.columns;
866
+ var value = filter.value,
867
+ _filter$defaultType2 = filter.defaultType,
868
+ defaultType = _filter$defaultType2 === void 0 ? filter.type : _filter$defaultType2;
869
+ if (isMulti(defaultType)) {
870
+ return value;
871
+ }
872
+ return createUrlParamString({
873
+ filter: filter,
874
+ columns: columns
875
+ });
876
+ };
877
+ var buildUrlFromSegment = function buildUrlFromSegment(_ref19) {
878
+ var columns = _ref19.columns,
879
+ filters = _ref19.filters,
880
+ id = _ref19.id;
881
+ var searchParams = getSnakeCasedQueryParams();
882
+ columns.forEach(function (_ref20) {
883
+ var key = _ref20.key,
884
+ defaultValue = _ref20.defaultValue;
885
+ return !defaultValue && delete searchParams[key];
886
+ });
887
+ delete searchParams[SEARCH_TERM_KEY];
888
+ var defaultFilters = buildDefaultFilters(columns, filters);
889
+ var newSearchParams = concat(filters, defaultFilters).reduce(function (acc, filter) {
890
+ acc[filter.key] = createUrlParamStringForSegments({
891
+ filter: filter,
892
+ columns: columns
893
+ });
894
+ return acc;
895
+ }, isNotEmpty(id) ? _defineProperty({}, SEGMENT_ID_KEY, id) : {});
896
+ return new URLSearchParams(_objectSpread$4(_objectSpread$4({}, searchParams), newSearchParams)).toString();
897
+ };
898
+ var getSearchTermFromUrl = function getSearchTermFromUrl() {
899
+ return getQueryParams().searchTerm || "";
900
+ };
901
+ var buildFilterColumnsFromFields = function buildFilterColumnsFromFields(_ref22) {
902
+ var fields = _ref22.fields,
903
+ _ref22$selectedFields = _ref22.selectedFields,
904
+ selectedFields = _ref22$selectedFields === void 0 ? [] : _ref22$selectedFields,
905
+ _ref22$showRuleSelect = _ref22.showRuleSelector,
906
+ showRuleSelector = _ref22$showRuleSelect === void 0 ? false : _ref22$showRuleSelect,
907
+ groupName = _ref22.groupName;
908
+ return fields.reduce(function (columns, field) {
909
+ if (isEmpty(selectedFields) || selectedFields.includes(field.name)) {
910
+ var id = field.id,
911
+ name = field.name,
912
+ kind = field.kind;
913
+ var column = _objectSpread$4({
914
+ key: toLower(name),
915
+ node: "".concat(name, ":").concat(id),
916
+ label: capitalize(name),
917
+ type: "custom.".concat(kind),
918
+ showRuleSelector: showRuleSelector
919
+ }, groupName && {
920
+ group: groupName
921
+ });
922
+ if (kind === "single_option" || kind === "multi_option") {
923
+ column.values = field.data.map(function (item) {
924
+ return {
925
+ label: capitalize(item.label),
926
+ value: item.id
927
+ };
928
+ });
929
+ }
930
+ columns.push(column);
931
+ }
932
+ return columns;
933
+ }, []);
934
+ };
935
+ var getColumnsWithStandardizedType = function getColumnsWithStandardizedType(columns) {
936
+ return columns.map(function (column) {
937
+ return _objectSpread$4(_objectSpread$4({}, column), {}, {
938
+ type: standardizeColumnType(column.type)
939
+ });
940
+ });
941
+ };
942
+ var isKeywordFilterPresent = function isKeywordFilterPresent(keyworFilter) {
943
+ return not(isEmpty(keyworFilter.node));
944
+ };
945
+
946
+ var buildCustomDateValue = function buildCustomDateValue(value) {
947
+ var isBeforeOrAfter = Math.abs(dayjs(value[1]).diff(dayjs(value[0]), "year")) >= 90;
948
+ if (isBeforeOrAfter) {
949
+ var currentMoment = dayjs();
950
+ var diffWithStart = Math.abs(currentMoment.diff(dayjs(value[0]), "year"));
951
+ var diffWithEnd = Math.abs(currentMoment.diff(dayjs(value[1]), "year"));
952
+ return diffWithStart < diffWithEnd ? "after-".concat(dateFormat.date(dayjs(value[0]).subtract(1, "day"))) : "before-".concat(dateFormat.date(dayjs(value[1]).add(1, "day")));
953
+ }
954
+ return value.map(dateFormat.date).join(" - ");
955
+ };
956
+ var buildFilterValue = function buildFilterValue(filter) {
957
+ var _findBy2;
958
+ var _filter$defaultType = filter.defaultType,
959
+ defaultType = _filter$defaultType === void 0 ? filter.type : _filter$defaultType,
960
+ value = filter.value,
961
+ rule = filter.rule,
962
+ _filter$values = filter.values,
963
+ initialValues = _filter$values === void 0 ? [] : _filter$values;
964
+ var values = initialValues.map(modify("value", function (value) {
965
+ return value.toString();
966
+ }));
967
+ if (isDate(defaultType) && isCustomDateRange(value)) {
968
+ return buildCustomDateValue(value);
969
+ } else if (isTime(defaultType) && isCustomTimeRange(value)) {
970
+ return value.map(dateFormat.time).join(" - ");
971
+ } else if (isDate(defaultType) || isTime(defaultType)) {
972
+ return humanize(value);
973
+ } else if (isMulti(defaultType)) {
974
+ return value.map(function (value) {
975
+ var _findBy;
976
+ return ((_findBy = findBy({
977
+ value: value
978
+ }, values)) === null || _findBy === void 0 ? void 0 : _findBy.label) || value;
979
+ }).join(", ");
980
+ } else if (isSingleDate(defaultType)) {
981
+ return rule === "between" ? value.map(dateFormat.date).join(" - ") : dateFormat.date(value);
982
+ } else if (isSingleTime(defaultType)) {
983
+ return rule === "between" ? value.map(dateFormat.time).join(" - ") : dateFormat.time(value);
984
+ } else if (isBoolean(defaultType)) {
985
+ return getLabelFromBool({
986
+ value: value,
987
+ values: values
988
+ });
989
+ }
990
+ return ((_findBy2 = findBy({
991
+ value: value
992
+ }, values)) === null || _findBy2 === void 0 ? void 0 : _findBy2.label) || value;
993
+ };
994
+ var buildRuleValue = function buildRuleValue(_ref) {
995
+ var rule = _ref.rule,
996
+ defaultType = _ref.defaultType;
997
+ if (isText(defaultType)) {
998
+ return findBy({
999
+ value: rule
1000
+ }, TEXT_RULES).label;
1001
+ } else if (isDigit(defaultType)) {
1002
+ return findBy({
1003
+ value: rule
1004
+ }, NUMBER_RULES).label;
1005
+ } else if (isSingleDate(defaultType)) {
1006
+ return findBy({
1007
+ value: rule
1008
+ }, SINGLE_DATE_OPTIONS).label;
1009
+ } else if (isSingleTime(defaultType)) {
1010
+ return findBy({
1011
+ value: rule
1012
+ }, SINGLE_TIME_OPTIONS).label;
1013
+ }
1014
+ return "";
1015
+ };
1016
+ var hasOnlyKeywordFilter = function hasOnlyKeywordFilter(filters) {
1017
+ return filters.length === 1 && filters[0].key === SEARCH_TERM_KEY;
1018
+ };
1019
+
1020
+ var Block = function Block(_ref) {
1021
+ var filter = _ref.filter,
1022
+ handleDelete = _ref.handleDelete,
1023
+ setIsPaneOpen = _ref.setIsPaneOpen;
1024
+ var key = filter.key,
1025
+ _filter$defaultType = filter.defaultType,
1026
+ defaultType = _filter$defaultType === void 0 ? filter.type : _filter$defaultType,
1027
+ label = filter.label,
1028
+ rule = filter.rule,
1029
+ defaultValue = filter.defaultValue;
1030
+ var filterValue = buildFilterValue(filter);
1031
+ var ruleContent = buildRuleValue({
1032
+ rule: rule,
1033
+ defaultType: defaultType
1034
+ });
1035
+ var blockLength = label.length + ruleContent.length + filterValue.length;
1036
+ var toolTipDisabled = blockLength <= 50;
1037
+ var blockContent = !toolTipDisabled ? "".concat(filterValue.slice(0, 50 - blockLength), "...") : filterValue;
1038
+ var deleteBlockHotKeyRef = useHotkeys(SHORTCUTS.deleteBlock.sequence, function () {
1039
+ return handleDelete(key);
1040
+ }, {
1041
+ mode: "scoped"
1042
+ });
1043
+ var openFilterPaneHotKeyRef = useHotkeys(SHORTCUTS.openFilterPane.sequence, function () {
1044
+ return setIsPaneOpen(key);
1045
+ }, {
1046
+ mode: "scoped"
1047
+ });
1048
+ return /*#__PURE__*/React.createElement(Tooltip, {
1049
+ content: filterValue,
1050
+ disabled: toolTipDisabled,
1051
+ position: "bottom",
1052
+ theme: "light"
1053
+ }, /*#__PURE__*/React.createElement("div", {
1054
+ className: "neeto-filters-bar__block",
1055
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-block"),
1056
+ tabIndex: 0,
1057
+ ref: function ref(node) {
1058
+ deleteBlockHotKeyRef.current = node;
1059
+ openFilterPaneHotKeyRef.current = node;
1060
+ },
1061
+ onClick: function onClick() {
1062
+ return setIsPaneOpen(key);
1063
+ }
1064
+ }, /*#__PURE__*/React.createElement(Typography, {
1065
+ style: "body2"
1066
+ }, label, ":"), /*#__PURE__*/React.createElement(Typography, {
1067
+ className: "neeto-ui-text-gray-500",
1068
+ style: "body2"
1069
+ }, ruleContent), /*#__PURE__*/React.createElement(Typography, {
1070
+ style: "body2"
1071
+ }, blockContent), !defaultValue && /*#__PURE__*/React.createElement("div", {
1072
+ className: "neeto-filters-bar__block-close"
1073
+ }, /*#__PURE__*/React.createElement(Close, {
1074
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-block-close-btn"),
1075
+ size: 16,
1076
+ strokeWidth: 2,
1077
+ onClick: function onClick(event) {
1078
+ event.stopPropagation();
1079
+ handleDelete(key);
1080
+ }
1081
+ }))));
1082
+ };
1083
+
1084
+ var ChildBlock = function ChildBlock(_ref) {
1085
+ var childKey = _ref.childKey,
1086
+ setIsPaneOpen = _ref.setIsPaneOpen,
1087
+ handleDelete = _ref.handleDelete;
1088
+ var deleteBlockHotKeyRef = useHotkeys(SHORTCUTS.deleteBlock.sequence, function () {
1089
+ return handleDelete(childKey);
1090
+ }, {
1091
+ mode: "scoped"
1092
+ });
1093
+ var openFilterPaneHotKeyRef = useHotkeys(SHORTCUTS.openFilterPane.sequence, function () {
1094
+ return setIsPaneOpen(childKey);
1095
+ }, {
1096
+ mode: "scoped"
1097
+ });
1098
+ return /*#__PURE__*/React.createElement("div", {
1099
+ className: "neeto-filters-bar__block",
1100
+ "data-cy": "neeto-filters-".concat(hyphenate(childKey), "-block"),
1101
+ tabIndex: 0,
1102
+ ref: function ref(node) {
1103
+ deleteBlockHotKeyRef.current = node;
1104
+ openFilterPaneHotKeyRef.current = node;
1105
+ },
1106
+ onClick: function onClick() {
1107
+ return setIsPaneOpen(childKey);
1108
+ }
1109
+ }, /*#__PURE__*/React.createElement(Typography, {
1110
+ style: "body2",
1111
+ weight: "medium"
1112
+ }, childKey), /*#__PURE__*/React.createElement("div", {
1113
+ className: "neeto-filters-bar__block-close"
1114
+ }, /*#__PURE__*/React.createElement(Close, {
1115
+ "data-cy": "neeto-filters-".concat(hyphenate(childKey), "-block-close-btn"),
1116
+ size: 16,
1117
+ strokeWidth: 2,
1118
+ onClick: function onClick(event) {
1119
+ event.stopPropagation();
1120
+ handleDelete(childKey);
1121
+ }
1122
+ })));
1123
+ };
1124
+
1125
+ var fetch = function fetch(params) {
1126
+ return axios.get(SEGMENTS_BASE_URL, {
1127
+ params: params
1128
+ });
1129
+ };
1130
+ var show = function show(id) {
1131
+ return axios.get("".concat(SEGMENTS_BASE_URL, "/").concat(id), {
1132
+ transformResponseCase: false
1133
+ });
1134
+ };
1135
+ var create = function create(payload) {
1136
+ return axios.post(SEGMENTS_BASE_URL, {
1137
+ segment: payload
1138
+ });
1139
+ };
1140
+ var update = function update(_ref) {
1141
+ var id = _ref.id,
1142
+ payload = _ref.payload,
1143
+ _ref$showToastr = _ref.showToastr,
1144
+ showToastr = _ref$showToastr === void 0 ? true : _ref$showToastr;
1145
+ return axios.put("".concat(SEGMENTS_BASE_URL, "/").concat(id), payload, {
1146
+ showToastr: showToastr
1147
+ });
1148
+ };
1149
+ var destroy = function destroy(id) {
1150
+ return axios["delete"]("".concat(SEGMENTS_BASE_URL, "/").concat(id));
1151
+ };
1152
+ var segmentsApi = {
1153
+ fetch: fetch,
1154
+ show: show,
1155
+ create: create,
1156
+ update: update,
1157
+ destroy: destroy
1158
+ };
1159
+
1160
+ var QUERY_KEYS = {
1161
+ SEGMENTS_LIST: "segments-list"
1162
+ };
1163
+ var SEGMENTS_STALE_TIME = 900000; // 15 mins
1164
+
1165
+ function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1166
+ function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1167
+ var SEGMENTS_LIST = QUERY_KEYS.SEGMENTS_LIST;
1168
+ var useFetchSegments = function useFetchSegments(_ref) {
1169
+ var entity = _ref.entity,
1170
+ _ref$searchTerm = _ref.searchTerm,
1171
+ searchTerm = _ref$searchTerm === void 0 ? "" : _ref$searchTerm;
1172
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1173
+ return useQuery([SEGMENTS_LIST, entity, searchTerm], function () {
1174
+ return segmentsApi.fetch({
1175
+ entity: entity,
1176
+ searchTerm: searchTerm
1177
+ });
1178
+ }, mergeRight({
1179
+ staleTime: SEGMENTS_STALE_TIME,
1180
+ select: prop("segments")
1181
+ }, options));
1182
+ };
1183
+ var useShowSegment = function useShowSegment(id) {
1184
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1185
+ return useQuery([SEGMENTS_LIST, id], function () {
1186
+ return segmentsApi.show(id);
1187
+ }, mergeRight({
1188
+ staleTime: SEGMENTS_STALE_TIME,
1189
+ select: prop("segment")
1190
+ }, options));
1191
+ };
1192
+ var useCreateSegment = function useCreateSegment(options) {
1193
+ return useMutationWithInvalidation(segmentsApi.create, _objectSpread$3({
1194
+ keysToInvalidate: [SEGMENTS_LIST]
1195
+ }, options));
1196
+ };
1197
+ var useUpdateSegment = function useUpdateSegment(options) {
1198
+ return useMutationWithInvalidation(segmentsApi.update, _objectSpread$3({
1199
+ keysToInvalidate: [SEGMENTS_LIST]
1200
+ }, options));
1201
+ };
1202
+ var useDestroySegment = function useDestroySegment(options) {
1203
+ return useMutationWithInvalidation(segmentsApi.destroy, _objectSpread$3({
1204
+ keysToInvalidate: [SEGMENTS_LIST]
1205
+ }, options));
1206
+ };
1207
+
1208
+ var buildSegmentsValidationSchema = function buildSegmentsValidationSchema(defaultSegmentName) {
1209
+ return yup.object({
1210
+ name: yup.string().trim().required().test({
1211
+ name: "not-default-segment-name",
1212
+ test: function test(value) {
1213
+ return (value === null || value === void 0 ? void 0 : value.toLocaleLowerCase()) !== defaultSegmentName.toLocaleLowerCase();
1214
+ },
1215
+ message: t$1("neetoFilters.segments.reservedNameErrorMessage")
1216
+ })
1217
+ });
1218
+ };
1219
+
1220
+ var Menu = Dropdown$2.Menu,
1221
+ MenuItem = Dropdown$2.MenuItem;
1222
+ var Segment = function Segment(_ref) {
1223
+ var entity = _ref.entity,
1224
+ filters = _ref.filters,
1225
+ columns = _ref.columns,
1226
+ childrenKeys = _ref.childrenKeys,
1227
+ setIsFilterPaneOpen = _ref.setIsFilterPaneOpen,
1228
+ defaultSegmentName = _ref.defaultSegmentName;
1229
+ var _useState = useState(false),
1230
+ _useState2 = _slicedToArray(_useState, 2),
1231
+ isSavePaneOpen = _useState2[0],
1232
+ setIsSavePaneOpen = _useState2[1];
1233
+ var _useState3 = useState(false),
1234
+ _useState4 = _slicedToArray(_useState3, 2),
1235
+ isUpdateAlertOpen = _useState4[0],
1236
+ setIsUpdateAlertOpen = _useState4[1];
1237
+ var inputRef = useRef(null);
1238
+ var _useTranslation = useTranslation(),
1239
+ t = _useTranslation.t;
1240
+ var history = useHistory();
1241
+ var filtersPayload = buildSegmentsPayload(filters, childrenKeys);
1242
+ var _getQueryParams = getQueryParams(),
1243
+ segmentId = _getQueryParams.segmentId;
1244
+ var _useShowSegment = useShowSegment(segmentId, {
1245
+ enabled: isNotNil(segmentId)
1246
+ }),
1247
+ _useShowSegment$data = _useShowSegment.data,
1248
+ selectedSegment = _useShowSegment$data === void 0 ? {} : _useShowSegment$data;
1249
+ var _useCreateSegment = useCreateSegment(),
1250
+ createSegment = _useCreateSegment.mutate,
1251
+ isCreating = _useCreateSegment.isLoading;
1252
+ var _useUpdateSegment = useUpdateSegment(),
1253
+ updateSegment = _useUpdateSegment.mutate,
1254
+ isUpdating = _useUpdateSegment.isLoading;
1255
+ var isSubmitting = isCreating || isUpdating;
1256
+ var handleUpdate = function handleUpdate() {
1257
+ return updateSegment({
1258
+ id: segmentId,
1259
+ payload: {
1260
+ filters: filtersPayload
1261
+ }
1262
+ }, {
1263
+ onSuccess: function onSuccess() {
1264
+ return setIsUpdateAlertOpen(false);
1265
+ }
1266
+ });
1267
+ };
1268
+ var handleCreateSuccess = function handleCreateSuccess(_ref2) {
1269
+ var _filters$;
1270
+ var _ref2$segment = _ref2.segment,
1271
+ id = _ref2$segment.id,
1272
+ filters = _ref2$segment.filters;
1273
+ history.push({
1274
+ search: buildUrlFromSegment({
1275
+ columns: columns,
1276
+ filters: (_filters$ = filters[0]) === null || _filters$ === void 0 ? void 0 : _filters$.conditions,
1277
+ id: id
1278
+ })
1279
+ });
1280
+ setIsSavePaneOpen(false);
1281
+ };
1282
+ var handleSubmit = function handleSubmit(_ref3) {
1283
+ var name = _ref3.name;
1284
+ return createSegment({
1285
+ name: name,
1286
+ entity: entity,
1287
+ filters: filtersPayload
1288
+ }, {
1289
+ onSuccess: handleCreateSuccess
1290
+ });
1291
+ };
1292
+ return /*#__PURE__*/React.createElement(React.Fragment, null, isNil(segmentId) ? /*#__PURE__*/React.createElement(Button, {
1293
+ disabled: hasOnlyKeywordFilter(filters),
1294
+ label: t("neetoFilters.segments.saveAsSegment"),
1295
+ style: "secondary",
1296
+ onClick: function onClick() {
1297
+ setIsFilterPaneOpen(false);
1298
+ setIsSavePaneOpen(true);
1299
+ }
1300
+ }) : /*#__PURE__*/React.createElement(Dropdown$2, {
1301
+ buttonStyle: "secondary",
1302
+ label: t("neetoFilters.segments.saveSegment")
1303
+ }, /*#__PURE__*/React.createElement(Menu, null, /*#__PURE__*/React.createElement(MenuItem.Button, {
1304
+ isDisabled: equals(filtersPayload, selectedSegment === null || selectedSegment === void 0 ? void 0 : selectedSegment.filters),
1305
+ onClick: setIsUpdateAlertOpen
1306
+ }, t("neetoFilters.segments.saveSegment")), /*#__PURE__*/React.createElement(MenuItem.Button, {
1307
+ onClick: function onClick() {
1308
+ setIsFilterPaneOpen(false);
1309
+ setIsSavePaneOpen(true);
1310
+ }
1311
+ }, t("neetoFilters.segments.saveAsNewSegment")))), /*#__PURE__*/React.createElement(Pane$1, {
1312
+ initialFocusRef: inputRef,
1313
+ isOpen: isSavePaneOpen,
1314
+ onClose: function onClose() {
1315
+ return setIsSavePaneOpen(false);
1316
+ }
1317
+ }, /*#__PURE__*/React.createElement(Pane$1.Header, null, /*#__PURE__*/React.createElement(Typography, {
1318
+ style: "h2",
1319
+ weight: "semibold"
1320
+ }, t("neetoFilters.segments.addNewSegment"))), /*#__PURE__*/React.createElement(Form, {
1321
+ className: "w-full",
1322
+ formProps: {
1323
+ noValidate: true
1324
+ },
1325
+ formikProps: {
1326
+ initialValues: {
1327
+ name: ""
1328
+ },
1329
+ validateOnChange: true,
1330
+ validateOnBlur: true,
1331
+ validationSchema: buildSegmentsValidationSchema(defaultSegmentName),
1332
+ onSubmit: handleSubmit
1333
+ }
1334
+ }, /*#__PURE__*/React.createElement(Pane$1.Body, null, /*#__PURE__*/React.createElement(Input, {
1335
+ className: "w-full",
1336
+ label: t("neetoFilters.segments.name"),
1337
+ name: "name",
1338
+ placeholder: t("neetoFilters.segments.segmentName"),
1339
+ ref: inputRef
1340
+ })), /*#__PURE__*/React.createElement(Pane$1.Footer, {
1341
+ className: "flex items-center space-x-2"
1342
+ }, /*#__PURE__*/React.createElement(ActionBlock, {
1343
+ cancelButtonProps: {
1344
+ onClick: function onClick() {
1345
+ return setIsSavePaneOpen(false);
1346
+ },
1347
+ disabled: false
1348
+ },
1349
+ submitButtonProps: {
1350
+ disabled: isSubmitting,
1351
+ loading: isSubmitting
1352
+ }
1353
+ })))), /*#__PURE__*/React.createElement(Alert, {
1354
+ isOpen: isUpdateAlertOpen,
1355
+ isSubmitting: isUpdating,
1356
+ submitButtonLabel: t("neetoFilters.common.update"),
1357
+ title: t("neetoFilters.segments.updateSegment"),
1358
+ message: /*#__PURE__*/React.createElement(Trans, {
1359
+ i18nKey: "neetoFilters.segments.updateSegmentMessage",
1360
+ values: {
1361
+ entity: selectedSegment === null || selectedSegment === void 0 ? void 0 : selectedSegment.name
1362
+ }
1363
+ }),
1364
+ onClose: function onClose() {
1365
+ return setIsUpdateAlertOpen(false);
1366
+ },
1367
+ onSubmit: handleUpdate
1368
+ }));
1369
+ };
1370
+
1371
+ function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1372
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1373
+ var Bar = function Bar(_ref) {
1374
+ var entity = _ref.entity,
1375
+ className = _ref.className,
1376
+ _ref$columns = _ref.columns,
1377
+ columns = _ref$columns === void 0 ? [] : _ref$columns,
1378
+ _ref$keyword = _ref.keyword,
1379
+ keyword = _ref$keyword === void 0 ? {
1380
+ node: "",
1381
+ value: "",
1382
+ setValue: noop
1383
+ } : _ref$keyword,
1384
+ _ref$setIsPaneOpen = _ref.setIsPaneOpen,
1385
+ setIsPaneOpen = _ref$setIsPaneOpen === void 0 ? identity : _ref$setIsPaneOpen,
1386
+ _ref$childrenKeys = _ref.childrenKeys,
1387
+ childrenKeys = _ref$childrenKeys === void 0 ? [] : _ref$childrenKeys,
1388
+ _ref$defaultSegmentNa = _ref.defaultSegmentName,
1389
+ defaultSegmentName = _ref$defaultSegmentNa === void 0 ? t$1("neetoFilters.common.allResults") : _ref$defaultSegmentNa;
1390
+ return function () {
1391
+ var _useTranslation = useTranslation(),
1392
+ t = _useTranslation.t;
1393
+ var initialRenderRef = useRef(true);
1394
+ var searchParams = useQueryParams({
1395
+ toCamelCase: false
1396
+ });
1397
+ var keywordValue = searchParams[SEARCH_TERM_KEY] || "";
1398
+ var keywordFilter = _objectSpread$2(_objectSpread$2({
1399
+ type: "text",
1400
+ rule: "contains",
1401
+ label: t("neetoFilters.common.searchTerm")
1402
+ }, keyword), {}, {
1403
+ key: SEARCH_TERM_KEY,
1404
+ value: keywordValue
1405
+ });
1406
+ var filters = buildFiltersFromSearchParams(isKeywordFilterPresent(keywordFilter) && isNotEmpty(keywordValue) ? [keywordFilter].concat(_toConsumableArray(columns)) : columns);
1407
+ var nonHiddenFilters = removeBy({
1408
+ hidden: true
1409
+ }, filters);
1410
+ var history = useHistory();
1411
+ var handleSubmit = function handleSubmit(newFilters, isClearAll) {
1412
+ var params = buildUrlFromFilters(_objectSpread$2({
1413
+ columns: columns,
1414
+ filters: isKeywordFilterPresent(keywordFilter) && isNotEmpty(getSearchTermFromUrl()) ? [].concat(_toConsumableArray(newFilters), [keywordFilter]) : newFilters
1415
+ }, isClearAll && {
1416
+ isClearAll: true,
1417
+ childrenKeys: childrenKeys
1418
+ }));
1419
+ history.push({
1420
+ search: params
1421
+ });
1422
+ };
1423
+ var handleDelete = function handleDelete(key) {
1424
+ if (key === SEARCH_TERM_KEY) {
1425
+ var params = omit([SEARCH_TERM_KEY], getSnakeCasedQueryParams());
1426
+ var pathname = window.location.pathname;
1427
+ history.push(buildUrl(pathname, params));
1428
+ return;
1429
+ }
1430
+ if (childrenKeys.includes(key)) {
1431
+ var _params = omit([key], getSnakeCasedQueryParams());
1432
+ var _pathname = window.location.pathname;
1433
+ history.push(buildUrl(_pathname, _params));
1434
+ }
1435
+ var newFilters = removeBy({
1436
+ key: key
1437
+ }, filters);
1438
+ handleSubmit(newFilters);
1439
+ };
1440
+ var handleClearAll = function handleClearAll() {
1441
+ var params = isKeywordFilterPresent(keywordFilter) ? omit([SEARCH_TERM_KEY], getSnakeCasedQueryParams()) : getSnakeCasedQueryParams();
1442
+ var pathname = window.location.pathname;
1443
+ history.push(buildUrl(pathname, params));
1444
+ handleSubmit([], true);
1445
+ };
1446
+ var childrenFiltersApplied = childrenKeys.some(function (key) {
1447
+ return has(key, searchParams);
1448
+ });
1449
+ var hideClearButton = nonHiddenFilters.every(function (_ref2) {
1450
+ var defaultValue = _ref2.defaultValue,
1451
+ isClearable = _ref2.isClearable;
1452
+ return defaultValue && !isClearable;
1453
+ }) && !childrenFiltersApplied;
1454
+ useEffect(function () {
1455
+ if (initialRenderRef.current) {
1456
+ initialRenderRef.current = false;
1457
+ return noop;
1458
+ }
1459
+ var handler = setTimeout(function () {
1460
+ handleSubmit(filters);
1461
+ }, 500);
1462
+ return function () {
1463
+ return clearTimeout(handler);
1464
+ };
1465
+ }, [keywordValue]);
1466
+ if (isEmpty(nonHiddenFilters) && !childrenFiltersApplied) return null;
1467
+ return /*#__PURE__*/React.createElement("div", {
1468
+ className: classnames("neeto-filters-bar", _defineProperty({}, className, className))
1469
+ }, nonHiddenFilters.map(function (filter) {
1470
+ var _filter$suffixCompone;
1471
+ return /*#__PURE__*/React.createElement(React.Fragment, {
1472
+ key: filter.key
1473
+ }, /*#__PURE__*/React.createElement(Block, {
1474
+ filter: filter,
1475
+ handleDelete: handleDelete,
1476
+ setIsPaneOpen: setIsPaneOpen
1477
+ }), (_filter$suffixCompone = filter.suffixComponent) === null || _filter$suffixCompone === void 0 ? void 0 : _filter$suffixCompone.call(filter), /*#__PURE__*/React.createElement("div", {
1478
+ className: "neeto-filters-bar--separator"
1479
+ }));
1480
+ }), childrenKeys.filter(function (childKey) {
1481
+ return has(childKey, searchParams);
1482
+ }).map(function (childKey) {
1483
+ return /*#__PURE__*/React.createElement(React.Fragment, {
1484
+ key: childKey
1485
+ }, /*#__PURE__*/React.createElement(ChildBlock, {
1486
+ childKey: childKey,
1487
+ handleDelete: handleDelete,
1488
+ setIsPaneOpen: setIsPaneOpen
1489
+ }), /*#__PURE__*/React.createElement("div", {
1490
+ className: "neeto-filters-bar--separator"
1491
+ }));
1492
+ }), isNotNil(entity) && /*#__PURE__*/React.createElement(Segment, {
1493
+ childrenKeys: childrenKeys,
1494
+ columns: columns,
1495
+ defaultSegmentName: defaultSegmentName,
1496
+ entity: entity,
1497
+ filters: filters,
1498
+ setIsFilterPaneOpen: setIsPaneOpen
1499
+ }), !hideClearButton && /*#__PURE__*/React.createElement(Button, {
1500
+ "data-cy": "neeto-filters-bar-clear-btn",
1501
+ label: t("neetoFilters.common.clearFilters"),
1502
+ style: "text",
1503
+ onClick: handleClearAll
1504
+ }));
1505
+ }();
1506
+ };
1507
+
1508
+ function _extends() {
1509
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
1510
+ for (var i = 1; i < arguments.length; i++) {
1511
+ var source = arguments[i];
1512
+ for (var key in source) {
1513
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
1514
+ target[key] = source[key];
1515
+ }
1516
+ }
1517
+ }
1518
+ return target;
1519
+ };
1520
+ return _extends.apply(this, arguments);
1521
+ }
1522
+
1523
+ function _objectWithoutPropertiesLoose(source, excluded) {
1524
+ if (source == null) return {};
1525
+ var target = {};
1526
+ var sourceKeys = Object.keys(source);
1527
+ var key, i;
1528
+ for (i = 0; i < sourceKeys.length; i++) {
1529
+ key = sourceKeys[i];
1530
+ if (excluded.indexOf(key) >= 0) continue;
1531
+ target[key] = source[key];
1532
+ }
1533
+ return target;
1534
+ }
1535
+
1536
+ function _objectWithoutProperties(source, excluded) {
1537
+ if (source == null) return {};
1538
+ var target = _objectWithoutPropertiesLoose(source, excluded);
1539
+ var key, i;
1540
+ if (Object.getOwnPropertySymbols) {
1541
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
1542
+ for (i = 0; i < sourceSymbolKeys.length; i++) {
1543
+ key = sourceSymbolKeys[i];
1544
+ if (excluded.indexOf(key) >= 0) continue;
1545
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
1546
+ target[key] = source[key];
1547
+ }
1548
+ }
1549
+ return target;
1550
+ }
1551
+
1552
+ var useFilters = function useFilters(_ref) {
1553
+ var onFiltersChange = _ref.onFiltersChange,
1554
+ columns = _ref.columns,
1555
+ keywordFilter = _ref.keywordFilter,
1556
+ onSelectorsChange = _ref.onSelectorsChange;
1557
+ var _useTransition = useTransition(),
1558
+ _useTransition2 = _slicedToArray(_useTransition, 2);
1559
+ _useTransition2[0];
1560
+ var startTransition = _useTransition2[1];
1561
+ var initialRender = useRef(true);
1562
+ var prevFilters = useRef([]);
1563
+ var location = useLocation();
1564
+ var filters = buildFiltersFromSearchParams(columns, false);
1565
+ var history = useHistory();
1566
+ var defaultValuesOfColumns = JSON.stringify(pluck("defaultValue", columns));
1567
+ var handlePrecenseOfDefaultFilters = function handlePrecenseOfDefaultFilters(defaultFilters) {
1568
+ var params = buildUrlFromFilters({
1569
+ columns: columns,
1570
+ filters: isKeywordFilterPresent(keywordFilter) && isNotEmpty(getSearchTermFromUrl()) ? [].concat(_toConsumableArray(defaultFilters), [keywordFilter]) : defaultFilters
1571
+ });
1572
+ history.replace({
1573
+ search: params
1574
+ });
1575
+ };
1576
+ var handleFiltersChange = function handleFiltersChange(filtersPayload) {
1577
+ startTransition(function () {
1578
+ onFiltersChange(buildFiltersPayload(filtersPayload.filter(function (filter) {
1579
+ return !isNil(filter.node);
1580
+ })));
1581
+ });
1582
+ };
1583
+
1584
+ //This function sends the updated filters to host via callbacks.
1585
+ var sendUpdatedFilters = function sendUpdatedFilters() {
1586
+ if (compareFilters(append(keywordFilter, filters), prevFilters.current)) {
1587
+ return;
1588
+ }
1589
+ var newFilters = buildFiltersFromSearchParams(columns);
1590
+ var filtersPayload = isKeywordFilterPresent(keywordFilter) && isNotEmpty(getSearchTermFromUrl()) ? append(keywordFilter, newFilters) : newFilters;
1591
+ handleFiltersChange(filtersPayload);
1592
+ onSelectorsChange(buildSelectorsFromURL(columns));
1593
+ };
1594
+ var handleChangesInURL = function handleChangesInURL() {
1595
+ var defaultFilters = buildDefaultFilters(columns, filters);
1596
+ var searchParams = getSnakeCasedQueryParams();
1597
+ var keys = pluck("key", append(keywordFilter, columns));
1598
+ if (keys.every(function (key) {
1599
+ return isNil(searchParams[key]);
1600
+ }) && !isEmpty(defaultFilters)) {
1601
+ history.replace({
1602
+ search: buildUrlFromFilters({
1603
+ columns: columns,
1604
+ filters: concat(defaultFilters, filters)
1605
+ })
1606
+ });
1607
+ filters = buildFiltersFromSearchParams(columns, false);
1608
+ }
1609
+ };
1610
+ useEffect(function () {
1611
+ if (initialRender.current) {
1612
+ initialRender.current = false;
1613
+ var keywordValue = getSearchTermFromUrl();
1614
+ var defaultFilters = buildDefaultFilters(columns, filters);
1615
+ isNotEmpty(defaultFilters) && handlePrecenseOfDefaultFilters(defaultFilters);
1616
+ prevFilters.current = append(mergeRight(keywordFilter, {
1617
+ value: keywordValue
1618
+ }), filters);
1619
+ } else {
1620
+ handleChangesInURL();
1621
+ sendUpdatedFilters();
1622
+ prevFilters.current = append(keywordFilter, filters);
1623
+ }
1624
+ }, [location.search, defaultValuesOfColumns]);
1625
+ return filters;
1626
+ };
1627
+
1628
+ var buildDropdownValue = function buildDropdownValue(_ref) {
1629
+ var defaultType = _ref.defaultType,
1630
+ filter = _ref.filter,
1631
+ options = _ref.options;
1632
+ if (!filter) return null;
1633
+ if (isMulti(defaultType)) {
1634
+ return options.filter(function (_ref2) {
1635
+ var value = _ref2.value;
1636
+ return filter.value.includes(value);
1637
+ });
1638
+ }
1639
+ return findBy({
1640
+ value: filter.value
1641
+ }, options);
1642
+ };
1643
+ var buildSingleTimeValue = function buildSingleTimeValue(filter) {
1644
+ var _findBy2;
1645
+ if (!filter) return null;
1646
+ return (_findBy2 = findBy({
1647
+ value: filter.value
1648
+ }, TIME_OPTIONS)) !== null && _findBy2 !== void 0 ? _findBy2 : last(TIME_OPTIONS);
1649
+ };
1650
+ var getOtherProps = function getOtherProps(props) {
1651
+ return omit(["key", "node", "label", "type", "values", "model", "showRuleSelector"], props);
1652
+ };
1653
+ var buildDropdownOptions = function buildDropdownOptions(_ref3) {
1654
+ var defaultType = _ref3.defaultType,
1655
+ filter = _ref3.filter,
1656
+ options = _ref3.options;
1657
+ options = options.map(modify("value", function (value) {
1658
+ return value === null || value === void 0 ? void 0 : value.toString();
1659
+ }));
1660
+ if (!filter) return options;
1661
+ if (isMulti(defaultType)) {
1662
+ var selectedOptions = filter.value.map(function (value) {
1663
+ return findBy({
1664
+ value: value
1665
+ }, options) || toLabelAndValue(value);
1666
+ });
1667
+ var nonSelectedOptions = options.filter(function (option) {
1668
+ return !filter.value.includes(option.value);
1669
+ });
1670
+ return concat(selectedOptions, nonSelectedOptions);
1671
+ }
1672
+ if (!findBy({
1673
+ value: filter.value
1674
+ }, options)) {
1675
+ return append(toLabelAndValue(filter.value), options);
1676
+ }
1677
+ return options;
1678
+ };
1679
+ var initializeDateRule = function initializeDateRule(filter) {
1680
+ return filter ? findBy({
1681
+ value: filter === null || filter === void 0 ? void 0 : filter.value
1682
+ }, DATE_OPTIONS) || findDateOption(filter, DATE_OPTIONS) : {};
1683
+ };
1684
+ var getDateValue = function getDateValue(value, rule) {
1685
+ if (isEmpty(value) || isNil(value)) {
1686
+ return null;
1687
+ }
1688
+ if (rule.value === "custom-date-range") {
1689
+ return value;
1690
+ }
1691
+ return rule.value === "before" ? dayjs(value[1]).add(1, "day") : dayjs(value[0]).subtract(1, "day");
1692
+ };
1693
+ var findDateOption = function findDateOption(filter, options) {
1694
+ var value = filter.value;
1695
+ var isBeforeOrAfter = dayjs(value[1]).diff(dayjs(value[0]), "year") >= 90;
1696
+ if (not(isBeforeOrAfter)) {
1697
+ return last(options);
1698
+ }
1699
+ var currentMoment = dayjs();
1700
+ var diffWithStart = Math.abs(currentMoment.diff(dayjs(value[0]), "year"));
1701
+ var diffWithEnd = Math.abs(currentMoment.diff(dayjs(value[1]), "year"));
1702
+ return diffWithStart < diffWithEnd ? findBy({
1703
+ value: "after"
1704
+ }, options) : findBy({
1705
+ value: "before"
1706
+ }, options);
1707
+ };
1708
+ var buildDateValues = function buildDateValues(dates, selectedRule) {
1709
+ if (selectedRule.value === "after") {
1710
+ return [dates.add(1, "day"), dates.add(100, "year")];
1711
+ } else if (selectedRule.value === "before") {
1712
+ return [dates.subtract(100, "year"), dates.subtract(1, "day")];
1713
+ }
1714
+ return dates;
1715
+ };
1716
+ var buildHelpIconProps = function buildHelpIconProps(helpIconProps) {
1717
+ return mergeDeepRight(DEFAULT_HELP_ICON_PROPS, helpIconProps);
1718
+ };
1719
+
1720
+ var Boolean = function Boolean(_ref) {
1721
+ var column = _ref.column,
1722
+ filter = _ref.filter,
1723
+ handleApplyFilter = _ref.handleApplyFilter,
1724
+ autoFocus = _ref.autoFocus;
1725
+ var key = column.key,
1726
+ _column$defaultType = column.defaultType,
1727
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1728
+ label = column.label,
1729
+ values = column.values,
1730
+ _column$helpIconProps = column.helpIconProps,
1731
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1732
+ var options = isNil(values) || isEmpty(values) ? DEFAULT_BOOLEAN_OPTIONS : values;
1733
+ var otherProps = getOtherProps(column);
1734
+ var value = buildDropdownValue({
1735
+ defaultType: defaultType,
1736
+ filter: filter,
1737
+ options: options
1738
+ });
1739
+ var _useTranslation = useTranslation(),
1740
+ t = _useTranslation.t;
1741
+ var handleChange = function handleChange(option) {
1742
+ if (isEmpty(option) || isNil(option)) {
1743
+ handleApplyFilter({
1744
+ _delete: true
1745
+ });
1746
+ return;
1747
+ }
1748
+ var updatedFilter = buildUpdatedFilter({
1749
+ column: column,
1750
+ defaultType: defaultType,
1751
+ option: option
1752
+ });
1753
+ handleApplyFilter(updatedFilter);
1754
+ };
1755
+ return /*#__PURE__*/React.createElement("div", {
1756
+ className: "neeto-filters-pane-filter__item-wrapper"
1757
+ }, /*#__PURE__*/React.createElement(Select, _extends({
1758
+ autoFocus: autoFocus,
1759
+ label: label,
1760
+ options: options,
1761
+ value: value,
1762
+ isClearable: true
1763
+ }, isNotEmpty(helpIconProps) && {
1764
+ labelProps: {
1765
+ helpIconProps: buildHelpIconProps(helpIconProps)
1766
+ }
1767
+ }, {
1768
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
1769
+ strategy: "fixed",
1770
+ placeholder: t("neetoFilters.messages.selectOption", {
1771
+ resource: label
1772
+ }),
1773
+ onChange: handleChange
1774
+ }, otherProps)));
1775
+ };
1776
+ var Boolean$1 = /*#__PURE__*/React.memo(Boolean);
1777
+
1778
+ var Datetime = function Datetime(_ref) {
1779
+ var column = _ref.column,
1780
+ filter = _ref.filter,
1781
+ handleApplyFilter = _ref.handleApplyFilter,
1782
+ autoFocus = _ref.autoFocus;
1783
+ var _useState = useState(initializeDateRule(filter)),
1784
+ _useState2 = _slicedToArray(_useState, 2),
1785
+ selectedRule = _useState2[0],
1786
+ setSelectedRule = _useState2[1];
1787
+ var _useTranslation = useTranslation(),
1788
+ t = _useTranslation.t;
1789
+ var key = column.key,
1790
+ _column$defaultType = column.defaultType,
1791
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1792
+ label = column.label,
1793
+ _column$helpIconProps = column.helpIconProps,
1794
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1795
+ var isDatePickerShown = filter && isCustomDateRange(filter.value);
1796
+ var otherProps = getOtherProps(column);
1797
+ var handleChange = function handleChange(option) {
1798
+ if (isEmpty(option) || isNil(option)) {
1799
+ handleApplyFilter({
1800
+ _delete: true
1801
+ });
1802
+ setSelectedRule({});
1803
+ return;
1804
+ }
1805
+ setSelectedRule(option);
1806
+ var updatedFilter = buildUpdatedFilter({
1807
+ column: column,
1808
+ defaultType: defaultType,
1809
+ option: option
1810
+ });
1811
+ handleApplyFilter(updatedFilter);
1812
+ };
1813
+ var handleDateRangeChange = function handleDateRangeChange(dates) {
1814
+ if (isEmpty(dates) || isNil(dates)) {
1815
+ handleApplyFilter({
1816
+ _delete: true
1817
+ });
1818
+ setSelectedRule({});
1819
+ return;
1820
+ }
1821
+ var updatedFilter = buildUpdatedFilter({
1822
+ column: column,
1823
+ defaultType: defaultType,
1824
+ option: {
1825
+ value: pluck("$d", buildDateValues(dates, selectedRule)).map(function (date) {
1826
+ return date.toISOString();
1827
+ })
1828
+ }
1829
+ });
1830
+ handleApplyFilter(updatedFilter);
1831
+ };
1832
+ useEffect(function () {
1833
+ isNil(filter) && setSelectedRule({});
1834
+ }, [filter]);
1835
+ return /*#__PURE__*/React.createElement("div", {
1836
+ className: "neeto-filters-pane-filter__item-wrapper"
1837
+ }, /*#__PURE__*/React.createElement(Select, _extends({
1838
+ autoFocus: autoFocus,
1839
+ label: label,
1840
+ isClearable: true,
1841
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
1842
+ options: DATE_OPTIONS,
1843
+ strategy: "fixed",
1844
+ value: selectedRule,
1845
+ placeholder: t("neetoFilters.messages.selectResource", {
1846
+ resource: label
1847
+ })
1848
+ }, isNotEmpty(helpIconProps) && {
1849
+ labelProps: {
1850
+ helpIconProps: buildHelpIconProps(helpIconProps)
1851
+ }
1852
+ }, {
1853
+ onChange: handleChange
1854
+ })), isDatePickerShown && /*#__PURE__*/React.createElement(DatePicker, _extends({
1855
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-date-range"),
1856
+ getPopupContainer: prop("parentNode"),
1857
+ type: (selectedRule === null || selectedRule === void 0 ? void 0 : selectedRule.value) === "custom-date-range" ? "range" : "date",
1858
+ value: getDateValue(filter === null || filter === void 0 ? void 0 : filter.value, selectedRule),
1859
+ onChange: handleDateRangeChange
1860
+ }, otherProps)));
1861
+ };
1862
+ var Datetime$1 = /*#__PURE__*/React.memo(Datetime);
1863
+
1864
+ var Dropdown = function Dropdown(_ref) {
1865
+ var column = _ref.column,
1866
+ filter = _ref.filter,
1867
+ handleApplyFilter = _ref.handleApplyFilter,
1868
+ autoFocus = _ref.autoFocus;
1869
+ var key = column.key,
1870
+ label = column.label,
1871
+ values = column.values,
1872
+ defaultValue = column.defaultValue,
1873
+ _column$defaultType = column.defaultType,
1874
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1875
+ _column$isClearable = column.isClearable,
1876
+ isClearable = _column$isClearable === void 0 ? true : _column$isClearable,
1877
+ _column$helpIconProps = column.helpIconProps,
1878
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1879
+ var otherProps = getOtherProps(column);
1880
+ var options = buildDropdownOptions({
1881
+ defaultType: defaultType,
1882
+ filter: filter,
1883
+ options: values
1884
+ });
1885
+ var value = buildDropdownValue({
1886
+ defaultType: defaultType,
1887
+ filter: filter,
1888
+ options: options
1889
+ });
1890
+ var _useTranslation = useTranslation(),
1891
+ t = _useTranslation.t;
1892
+ var handleChange = function handleChange(option) {
1893
+ if (isEmpty(option) || isNil(option)) {
1894
+ handleApplyFilter({
1895
+ _delete: true
1896
+ });
1897
+ return;
1898
+ }
1899
+ var updatedFilter = buildUpdatedFilter({
1900
+ column: column,
1901
+ defaultType: defaultType,
1902
+ option: option
1903
+ });
1904
+ handleApplyFilter(updatedFilter);
1905
+ };
1906
+ return /*#__PURE__*/React.createElement("div", {
1907
+ className: "neeto-filters-pane-filter__item-wrapper"
1908
+ }, /*#__PURE__*/React.createElement(Select, _extends({
1909
+ autoFocus: autoFocus,
1910
+ label: label,
1911
+ options: options,
1912
+ value: value,
1913
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
1914
+ isClearable: !defaultValue && isClearable,
1915
+ isMulti: isMulti(defaultType),
1916
+ strategy: "fixed",
1917
+ placeholder: t("neetoFilters.messages.selectResource", {
1918
+ resource: label
1919
+ })
1920
+ }, isNotEmpty(helpIconProps) && {
1921
+ labelProps: {
1922
+ helpIconProps: buildHelpIconProps(helpIconProps)
1923
+ }
1924
+ }, {
1925
+ onChange: handleChange
1926
+ }, otherProps)));
1927
+ };
1928
+ var Dropdown$1 = /*#__PURE__*/React.memo(Dropdown);
1929
+
1930
+ var SingleDatetime = function SingleDatetime(_ref) {
1931
+ var column = _ref.column,
1932
+ filter = _ref.filter,
1933
+ filters = _ref.filters,
1934
+ handleApplyFilter = _ref.handleApplyFilter,
1935
+ autoFocus = _ref.autoFocus;
1936
+ var _useState = useState(function () {
1937
+ return findBy({
1938
+ value: filter === null || filter === void 0 ? void 0 : filter.rule
1939
+ }, SINGLE_DATE_OPTIONS) || SINGLE_DATE_OPTIONS[0];
1940
+ }),
1941
+ _useState2 = _slicedToArray(_useState, 2),
1942
+ selectedRule = _useState2[0],
1943
+ setSelectedRule = _useState2[1];
1944
+ var key = column.key,
1945
+ _column$defaultType = column.defaultType,
1946
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1947
+ label = column.label,
1948
+ _column$helpIconProps = column.helpIconProps,
1949
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1950
+ var otherProps = getOtherProps(column);
1951
+ var datePickerType = selectedRule.value === "between" ? "range" : "date";
1952
+ var value = filter === null || filter === void 0 ? void 0 : filter.value;
1953
+
1954
+ // Reset states when "Clear filters" button is clicked.
1955
+ useEffect(function () {
1956
+ if (!isEmpty(filters)) return;
1957
+ setSelectedRule(SINGLE_DATE_OPTIONS[0]);
1958
+ }, [filters]);
1959
+ var handleRuleChange = function handleRuleChange(ruleOption) {
1960
+ setSelectedRule(ruleOption);
1961
+
1962
+ // Clear value if switched between incompatable types
1963
+ var updateValue = value;
1964
+ if (datePickerType === "range" && ruleOption.value !== "between" || datePickerType === "date" && ruleOption.value === "between") {
1965
+ updateValue = "";
1966
+ }
1967
+ var updatedFilter = buildUpdatedFilter({
1968
+ column: column,
1969
+ defaultType: defaultType,
1970
+ option: {},
1971
+ rule: ruleOption.value,
1972
+ value: updateValue
1973
+ });
1974
+ handleApplyFilter(updatedFilter);
1975
+ };
1976
+ var handleChange = function handleChange(dates) {
1977
+ if (isEmpty(dates) || isNil(dates)) {
1978
+ handleApplyFilter({
1979
+ _delete: true
1980
+ });
1981
+ return;
1982
+ }
1983
+ var value = datePickerType === "range" ? pluck("$d", dates).map(function (date) {
1984
+ return date.toISOString();
1985
+ }) : dates["$d"];
1986
+ var updatedFilter = buildUpdatedFilter({
1987
+ column: column,
1988
+ defaultType: defaultType,
1989
+ option: {},
1990
+ rule: selectedRule.value,
1991
+ value: value
1992
+ });
1993
+ handleApplyFilter(updatedFilter);
1994
+ };
1995
+ return /*#__PURE__*/React.createElement("div", {
1996
+ className: "neeto-filters-pane-filter__item-wrapper"
1997
+ }, /*#__PURE__*/React.createElement(Select, _extends({
1998
+ label: label,
1999
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter-rule"),
2000
+ defaultValue: SINGLE_DATE_OPTIONS[0],
2001
+ options: SINGLE_DATE_OPTIONS,
2002
+ strategy: "fixed",
2003
+ value: selectedRule
2004
+ }, isNotEmpty(helpIconProps) && {
2005
+ labelProps: {
2006
+ helpIconProps: buildHelpIconProps(helpIconProps)
2007
+ }
2008
+ }, {
2009
+ onChange: handleRuleChange
2010
+ })), /*#__PURE__*/React.createElement(DatePicker, _extends({
2011
+ autoFocus: autoFocus,
2012
+ value: value,
2013
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
2014
+ getPopupContainer: prop("parentNode"),
2015
+ type: datePickerType,
2016
+ onChange: handleChange
2017
+ }, otherProps)));
2018
+ };
2019
+
2020
+ var SingleTime = function SingleTime(_ref) {
2021
+ var column = _ref.column,
2022
+ filter = _ref.filter,
2023
+ filters = _ref.filters,
2024
+ handleApplyFilter = _ref.handleApplyFilter,
2025
+ autoFocus = _ref.autoFocus;
2026
+ var _useState = useState(function () {
2027
+ return findBy({
2028
+ value: filter === null || filter === void 0 ? void 0 : filter.rule
2029
+ }, SINGLE_TIME_OPTIONS) || SINGLE_TIME_OPTIONS[0];
2030
+ }),
2031
+ _useState2 = _slicedToArray(_useState, 2),
2032
+ selectedRule = _useState2[0],
2033
+ setSelectedRule = _useState2[1];
2034
+ var key = column.key,
2035
+ _column$defaultType = column.defaultType,
2036
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
2037
+ label = column.label,
2038
+ _column$helpIconProps = column.helpIconProps,
2039
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
2040
+ var otherProps = getOtherProps(column);
2041
+ var timePickerType = selectedRule.value === "between" ? "range" : "time";
2042
+ var value = filter === null || filter === void 0 ? void 0 : filter.value;
2043
+ useEffect(function () {
2044
+ if (!isEmpty(filters)) return;
2045
+ setSelectedRule(SINGLE_TIME_OPTIONS[0]);
2046
+ }, [filters]);
2047
+ var handleRuleChange = function handleRuleChange(ruleOption) {
2048
+ setSelectedRule(ruleOption);
2049
+
2050
+ // Clear value if switched between incompatible types
2051
+ var updateValue = value;
2052
+ if (timePickerType === "range" && ruleOption.value !== "between" || timePickerType === "time" && ruleOption.value === "between") {
2053
+ updateValue = "";
2054
+ }
2055
+ var updatedFilter = buildUpdatedFilter({
2056
+ column: column,
2057
+ defaultType: defaultType,
2058
+ option: {},
2059
+ rule: ruleOption.value,
2060
+ value: updateValue
2061
+ });
2062
+ handleApplyFilter(updatedFilter);
2063
+ };
2064
+ var handleChange = function handleChange(times) {
2065
+ var value = timePickerType === "range" ? pluck("$d", times).map(function (time) {
2066
+ return time.toISOString();
2067
+ }) : times["$d"].toISOString();
2068
+ var updatedFilter = buildUpdatedFilter({
2069
+ column: column,
2070
+ defaultType: defaultType,
2071
+ option: {},
2072
+ rule: selectedRule.value,
2073
+ value: value
2074
+ });
2075
+ handleApplyFilter(updatedFilter);
2076
+ };
2077
+ return /*#__PURE__*/React.createElement("div", {
2078
+ className: "neeto-filters-pane-filter__item-wrapper"
2079
+ }, /*#__PURE__*/React.createElement(Select, _extends({
2080
+ label: label,
2081
+ defaultValue: SINGLE_TIME_OPTIONS[0],
2082
+ options: SINGLE_TIME_OPTIONS,
2083
+ strategy: "fixed",
2084
+ value: selectedRule
2085
+ }, isNotEmpty(helpIconProps) && {
2086
+ labelProps: {
2087
+ helpIconProps: buildHelpIconProps(helpIconProps)
2088
+ }
2089
+ }, {
2090
+ onChange: handleRuleChange
2091
+ })), /*#__PURE__*/React.createElement(TimePicker, _extends({
2092
+ autoFocus: autoFocus,
2093
+ value: value,
2094
+ use12Hours: true,
2095
+ className: "w-full",
2096
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
2097
+ format: "h:mm A",
2098
+ getPopupContainer: prop("parentNode"),
2099
+ type: timePickerType,
2100
+ onChange: handleChange
2101
+ }, otherProps)));
2102
+ };
2103
+
2104
+ var Text = function Text(_ref) {
2105
+ var column = _ref.column,
2106
+ filter = _ref.filter,
2107
+ filters = _ref.filters,
2108
+ handleApplyFilter = _ref.handleApplyFilter,
2109
+ autoFocus = _ref.autoFocus,
2110
+ onClose = _ref.onClose;
2111
+ var key = column.key,
2112
+ _column$defaultType = column.defaultType,
2113
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
2114
+ label = column.label,
2115
+ _column$showRuleSelec = column.showRuleSelector,
2116
+ showRuleSelector = _column$showRuleSelec === void 0 ? false : _column$showRuleSelec,
2117
+ _column$helpIconProps = column.helpIconProps,
2118
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
2119
+ var otherProps = getOtherProps(column);
2120
+ var ruleOptions = buildRuleOptions({
2121
+ defaultType: defaultType
2122
+ });
2123
+ var inputType = defaultType === "text" || defaultType === "custom.text" ? "text" : "number";
2124
+ var _useState = useState(filter === null || filter === void 0 ? void 0 : filter.value),
2125
+ _useState2 = _slicedToArray(_useState, 2),
2126
+ inputValue = _useState2[0],
2127
+ setInputValue = _useState2[1];
2128
+ var _useState3 = useState(function () {
2129
+ return findBy({
2130
+ value: filter === null || filter === void 0 ? void 0 : filter.rule
2131
+ }, ruleOptions) || ruleOptions[0];
2132
+ }),
2133
+ _useState4 = _slicedToArray(_useState3, 2),
2134
+ selectedRule = _useState4[0],
2135
+ setSelectedRule = _useState4[1];
2136
+ var debouncedInputValue = useDebounce(inputValue);
2137
+ var _useTranslation = useTranslation(),
2138
+ t = _useTranslation.t;
2139
+ var handleUpdateAndApplyFilter = function handleUpdateAndApplyFilter() {
2140
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : debouncedInputValue;
2141
+ var rule = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : selectedRule;
2142
+ if (equals(filter === null || filter === void 0 ? void 0 : filter.value, value) && equals(selectedRule, rule)) return;
2143
+ var updatedFilter = buildUpdatedFilter({
2144
+ column: column,
2145
+ defaultType: defaultType,
2146
+ option: {},
2147
+ rule: rule.value,
2148
+ value: value.trim()
2149
+ });
2150
+ handleApplyFilter(updatedFilter);
2151
+ };
2152
+ var handleKeydown = function handleKeydown(e) {
2153
+ if (!(e.key === "Enter")) return;
2154
+ handleUpdateAndApplyFilter(inputValue);
2155
+ onClose();
2156
+ };
2157
+ var handleRuleChange = function handleRuleChange(ruleOption) {
2158
+ setSelectedRule(ruleOption);
2159
+ if (!debouncedInputValue) return;
2160
+ handleUpdateAndApplyFilter(debouncedInputValue, ruleOption);
2161
+ };
2162
+
2163
+ // Reset states when "Clear filters" button is clicked.
2164
+ useEffect(function () {
2165
+ (isEmpty(filters) || isNil(filter)) && setInputValue("");
2166
+ }, [filter]);
2167
+ useEffect(function () {
2168
+ if (!debouncedInputValue) {
2169
+ !isUndefinedOrEmpty(filter) && handleApplyFilter({
2170
+ _delete: true
2171
+ });
2172
+ return;
2173
+ }
2174
+ handleUpdateAndApplyFilter();
2175
+ }, [debouncedInputValue]);
2176
+ return /*#__PURE__*/React.createElement("div", {
2177
+ className: "neeto-filters-pane-filter__item-wrapper"
2178
+ }, showRuleSelector && /*#__PURE__*/React.createElement(Select, _extends({
2179
+ label: label,
2180
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter-rule"),
2181
+ defaultValue: ruleOptions[0],
2182
+ options: ruleOptions,
2183
+ strategy: "fixed",
2184
+ value: selectedRule,
2185
+ onChange: handleRuleChange
2186
+ }, isNotEmpty(helpIconProps) && {
2187
+ labelProps: {
2188
+ helpIconProps: buildHelpIconProps(helpIconProps)
2189
+ }
2190
+ })), /*#__PURE__*/React.createElement(Input$1, _extends({
2191
+ autoFocus: autoFocus,
2192
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
2193
+ label: !showRuleSelector && label,
2194
+ type: inputType,
2195
+ value: inputValue
2196
+ }, isNotEmpty(helpIconProps) && {
2197
+ labelProps: {
2198
+ helpIconProps: buildHelpIconProps(helpIconProps)
2199
+ }
2200
+ }, {
2201
+ placeholder: t("neetoFilters.messages.enterResource", {
2202
+ resource: label
2203
+ }),
2204
+ onChange: function onChange(event) {
2205
+ return setInputValue(event.target.value);
2206
+ },
2207
+ onKeyDown: handleKeydown
2208
+ }, otherProps)));
2209
+ };
2210
+
2211
+ var Time = function Time(_ref) {
2212
+ var column = _ref.column,
2213
+ filter = _ref.filter,
2214
+ handleApplyFilter = _ref.handleApplyFilter,
2215
+ autoFocus = _ref.autoFocus;
2216
+ var key = column.key,
2217
+ _column$defaultType = column.defaultType,
2218
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
2219
+ label = column.label,
2220
+ _column$helpIconProps = column.helpIconProps,
2221
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
2222
+ var otherProps = getOtherProps(column);
2223
+ var value = buildSingleTimeValue(filter);
2224
+ var isCustomTimeRangeShown = filter && isCustomTimeRange(filter.value);
2225
+ var _useTranslation = useTranslation(),
2226
+ t = _useTranslation.t;
2227
+ var handleChange = function handleChange(option) {
2228
+ if (isEmpty(option) || isNil(option)) {
2229
+ handleApplyFilter({
2230
+ _delete: true
2231
+ });
2232
+ return;
2233
+ }
2234
+ var updatedFilter = buildUpdatedFilter({
2235
+ column: column,
2236
+ defaultType: defaultType,
2237
+ option: option
2238
+ });
2239
+ handleApplyFilter(updatedFilter);
2240
+ };
2241
+ var handleTimeRangeChange = function handleTimeRangeChange(times) {
2242
+ var updatedFilter = buildUpdatedFilter({
2243
+ column: column,
2244
+ defaultType: defaultType,
2245
+ option: {
2246
+ value: pluck("$d", times).map(function (time) {
2247
+ return time.toISOString();
2248
+ })
2249
+ }
2250
+ });
2251
+ handleApplyFilter(updatedFilter);
2252
+ };
2253
+ return /*#__PURE__*/React.createElement("div", {
2254
+ className: "neeto-filters-pane-filter__item-wrapper"
2255
+ }, /*#__PURE__*/React.createElement(Select, _extends({
2256
+ autoFocus: autoFocus,
2257
+ label: label,
2258
+ value: value,
2259
+ isClearable: true,
2260
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
2261
+ options: TIME_OPTIONS,
2262
+ strategy: "fixed",
2263
+ placeholder: t("neetoFilters.messages.selectResource", {
2264
+ resource: label
2265
+ })
2266
+ }, isNotEmpty(helpIconProps) && {
2267
+ labelProps: {
2268
+ helpIconProps: buildHelpIconProps(helpIconProps)
2269
+ }
2270
+ }, {
2271
+ onChange: handleChange
2272
+ })), isCustomTimeRangeShown && /*#__PURE__*/React.createElement(TimePicker, _extends({
2273
+ use12Hours: true,
2274
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-date-range"),
2275
+ format: "h:mm A",
2276
+ getPopupContainer: prop("parentNode"),
2277
+ type: "range",
2278
+ value: filter.value,
2279
+ onChange: handleTimeRangeChange
2280
+ }, otherProps)));
2281
+ };
2282
+ var Time$1 = /*#__PURE__*/React.memo(Time);
2283
+
2284
+ var Item = function Item(_ref) {
2285
+ var column = _ref.column,
2286
+ filters = _ref.filters,
2287
+ onChange = _ref.onChange,
2288
+ autoFocus = _ref.autoFocus,
2289
+ onClose = _ref.onClose;
2290
+ var key = column.key,
2291
+ _column$defaultType = column.defaultType,
2292
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType;
2293
+ var filter = useMemo(function () {
2294
+ return findBy({
2295
+ key: key
2296
+ }, filters);
2297
+ }, [filters, key]);
2298
+ var handleApplyFilter = function handleApplyFilter(updatedFilter) {
2299
+ if (updatedFilter._delete) onChange(removeBy({
2300
+ key: key
2301
+ }, filters));else if (!filter) onChange(append(updatedFilter, filters));else onChange(replaceBy({
2302
+ key: key
2303
+ }, updatedFilter, filters));
2304
+ };
2305
+ if (isText(defaultType) || isDigit(defaultType)) {
2306
+ return /*#__PURE__*/React.createElement(Text, {
2307
+ autoFocus: autoFocus,
2308
+ column: column,
2309
+ filter: filter,
2310
+ filters: filters,
2311
+ handleApplyFilter: handleApplyFilter,
2312
+ onClose: onClose
2313
+ });
2314
+ }
2315
+ if (isDate(defaultType)) {
2316
+ return /*#__PURE__*/React.createElement(Datetime$1, {
2317
+ autoFocus: autoFocus,
2318
+ column: column,
2319
+ filter: filter,
2320
+ handleApplyFilter: handleApplyFilter
2321
+ });
2322
+ }
2323
+ if (isTime(defaultType)) {
2324
+ return /*#__PURE__*/React.createElement(Time$1, {
2325
+ autoFocus: autoFocus,
2326
+ column: column,
2327
+ filter: filter,
2328
+ handleApplyFilter: handleApplyFilter
2329
+ });
2330
+ }
2331
+ if (isSingleDate(defaultType)) {
2332
+ return /*#__PURE__*/React.createElement(SingleDatetime, {
2333
+ autoFocus: autoFocus,
2334
+ column: column,
2335
+ filter: filter,
2336
+ filters: filters,
2337
+ handleApplyFilter: handleApplyFilter
2338
+ });
2339
+ }
2340
+ if (isSingleTime(defaultType)) {
2341
+ return /*#__PURE__*/React.createElement(SingleTime, {
2342
+ autoFocus: autoFocus,
2343
+ column: column,
2344
+ filter: filter,
2345
+ filters: filters,
2346
+ handleApplyFilter: handleApplyFilter
2347
+ });
2348
+ }
2349
+ if (isBoolean(defaultType) || isCheckbox(defaultType)) {
2350
+ return /*#__PURE__*/React.createElement(Boolean$1, {
2351
+ autoFocus: autoFocus,
2352
+ column: column,
2353
+ filter: filter,
2354
+ handleApplyFilter: handleApplyFilter
2355
+ });
2356
+ }
2357
+ return /*#__PURE__*/React.createElement(Dropdown$1, {
2358
+ autoFocus: autoFocus,
2359
+ column: column,
2360
+ filter: filter,
2361
+ handleApplyFilter: handleApplyFilter
2362
+ });
2363
+ };
2364
+
2365
+ var _excluded = ["isOpen", "onClose", "columns", "onChange", "isSearchable", "keyword", "onSelectorsChange", "childrenKeys", "children", "className"];
2366
+ function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2367
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2368
+ var Pane = function Pane(_ref) {
2369
+ var isOpen = _ref.isOpen,
2370
+ onClose = _ref.onClose,
2371
+ columns = _ref.columns,
2372
+ onChange = _ref.onChange,
2373
+ isSearchable = _ref.isSearchable,
2374
+ keyword = _ref.keyword,
2375
+ onSelectorsChange = _ref.onSelectorsChange,
2376
+ _ref$childrenKeys = _ref.childrenKeys,
2377
+ childrenKeys = _ref$childrenKeys === void 0 ? [] : _ref$childrenKeys,
2378
+ children = _ref.children,
2379
+ className = _ref.className,
2380
+ otherProps = _objectWithoutProperties(_ref, _excluded);
2381
+ var searchParams = useQueryParams({
2382
+ toCamelCase: false
2383
+ });
2384
+ var _useState = useState(""),
2385
+ _useState2 = _slicedToArray(_useState, 2),
2386
+ searchTerm = _useState2[0],
2387
+ setSearchTerm = _useState2[1];
2388
+ var history = useHistory();
2389
+ var _useTranslation = useTranslation(),
2390
+ t = _useTranslation.t;
2391
+ columns = useMemo(function () {
2392
+ return getColumnsWithStandardizedType(columns);
2393
+ }, [columns]);
2394
+ var _buildFilteredColumns = buildFilteredColumns({
2395
+ searchTerm: searchTerm,
2396
+ columns: columns
2397
+ }),
2398
+ _buildFilteredColumns2 = _buildFilteredColumns.groupedColumns,
2399
+ groupedColumns = _buildFilteredColumns2 === void 0 ? [] : _buildFilteredColumns2,
2400
+ _buildFilteredColumns3 = _buildFilteredColumns.ungroupedColumns,
2401
+ ungroupedColumns = _buildFilteredColumns3 === void 0 ? [] : _buildFilteredColumns3;
2402
+ var keywordFilter = _objectSpread$1(_objectSpread$1({
2403
+ type: "text",
2404
+ rule: "contains",
2405
+ label: t("neetoFilters.common.searchTerm")
2406
+ }, keyword), {}, {
2407
+ key: SEARCH_TERM_KEY,
2408
+ value: searchParams[SEARCH_TERM_KEY] || ""
2409
+ });
2410
+ var filters = useFilters({
2411
+ onFiltersChange: onChange,
2412
+ columns: columns,
2413
+ keywordFilter: keywordFilter,
2414
+ onSelectorsChange: onSelectorsChange
2415
+ });
2416
+ var handleChange = function handleChange(newFilters) {
2417
+ var isClearAll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
2418
+ var params = buildUrlFromFilters(_objectSpread$1({
2419
+ columns: columns,
2420
+ filters: isKeywordFilterPresent(keywordFilter) && isNotEmpty(getSearchTermFromUrl()) ? [].concat(_toConsumableArray(newFilters), [keywordFilter]) : newFilters
2421
+ }, isClearAll && {
2422
+ isClearAll: true,
2423
+ childrenKeys: childrenKeys
2424
+ }));
2425
+ history.push({
2426
+ search: params
2427
+ });
2428
+ };
2429
+ var handleClearAll = function handleClearAll() {
2430
+ var params = isKeywordFilterPresent(keywordFilter) ? omit([SEARCH_TERM_KEY], getSnakeCasedQueryParams()) : getSnakeCasedQueryParams();
2431
+ var pathname = window.location.pathname;
2432
+ history.push(buildUrl(pathname, params));
2433
+ handleChange([], true);
2434
+ };
2435
+ var handleClearTermAndClose = function handleClearTermAndClose() {
2436
+ setSearchTerm("");
2437
+ onClose();
2438
+ };
2439
+ var handleClose = function handleClose() {
2440
+ columns.forEach(function (_ref2) {
2441
+ var key = _ref2.key;
2442
+ var filter = findBy({
2443
+ key: key
2444
+ }, filters);
2445
+ if ((filter === null || filter === void 0 ? void 0 : filter.value) === "") delete searchParams[key];
2446
+ });
2447
+ handleClearTermAndClose();
2448
+ };
2449
+ var isClearFiltersDisabled = !filters.some(function (_ref3) {
2450
+ var value = _ref3.value,
2451
+ defaultValue = _ref3.defaultValue;
2452
+ return isPresent(value) && value !== defaultValue;
2453
+ }) && !childrenKeys.some(function (key) {
2454
+ return searchParams[key];
2455
+ });
2456
+ return /*#__PURE__*/React.createElement(Pane$1, _extends({
2457
+ isOpen: isOpen,
2458
+ backdropClassName: "neeto-filters-pane-backdrop",
2459
+ className: classnames("neeto-filters-pane-filter", _defineProperty({}, className, className)),
2460
+ onClose: handleClose
2461
+ }, otherProps), /*#__PURE__*/React.createElement(Pane$1.Header, {
2462
+ "data-cy": "neeto-filters-pane-header"
2463
+ }, /*#__PURE__*/React.createElement(Typography, {
2464
+ style: "h2",
2465
+ weight: "semibold"
2466
+ }, t("neetoFilters.common.filters"))), /*#__PURE__*/React.createElement(Pane$1.Body, {
2467
+ className: "neeto-filters-pane-filter__body neeto-ui-pt-2"
2468
+ }, isSearchable && /*#__PURE__*/React.createElement(Search, {
2469
+ "data-cy": "neeto-filters-column-search",
2470
+ placeholder: t("neetoFilters.messages.searchResources", {
2471
+ resources: t("neetoFilters.common.filters")
2472
+ }),
2473
+ onSearch: function onSearch(value) {
2474
+ return setSearchTerm(value);
2475
+ }
2476
+ }), ungroupedColumns.map(function (column) {
2477
+ return /*#__PURE__*/React.createElement(Item, {
2478
+ column: column,
2479
+ filters: filters,
2480
+ autoFocus: column.key === isOpen,
2481
+ key: column.key,
2482
+ onChange: handleChange,
2483
+ onClose: handleClearTermAndClose
2484
+ });
2485
+ }), isPresent(groupedColumns) && /*#__PURE__*/React.createElement(Accordion, {
2486
+ defaultActiveKey: groupedColumns.findIndex(function (_ref4) {
2487
+ var columns = _ref4.columns;
2488
+ return existsBy({
2489
+ key: isOpen
2490
+ }, columns);
2491
+ })
2492
+ }, groupedColumns.map(function (_ref5) {
2493
+ var group = _ref5.group,
2494
+ columns = _ref5.columns;
2495
+ return /*#__PURE__*/React.createElement(Accordion.Item, {
2496
+ className: "accordion_item",
2497
+ key: group,
2498
+ title: group
2499
+ }, columns.map(function (column) {
2500
+ return /*#__PURE__*/React.createElement(Item, {
2501
+ column: column,
2502
+ filters: filters,
2503
+ autoFocus: column.key === isOpen,
2504
+ key: column.key,
2505
+ onChange: handleChange,
2506
+ onClose: handleClearTermAndClose
2507
+ });
2508
+ }));
2509
+ })), isEmpty(ungroupedColumns) && isEmpty(groupedColumns) && /*#__PURE__*/React.createElement(Typography, {
2510
+ style: "body2"
2511
+ }, t("neetoFilters.messages.noResourcesFound", {
2512
+ resources: t("neetoFilters.common.columns")
2513
+ })), children), /*#__PURE__*/React.createElement(Pane$1.Footer, null, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Button, {
2514
+ "data-cy": "neeto-filters-done-btn",
2515
+ label: t("neetoFilters.common.done"),
2516
+ onClick: handleClearTermAndClose
2517
+ }), /*#__PURE__*/React.createElement(Button, {
2518
+ "data-cy": "neeto-filters-clear-btn",
2519
+ disabled: isClearFiltersDisabled,
2520
+ label: t("neetoFilters.common.clearFilters"),
2521
+ style: "text",
2522
+ onClick: handleClearAll
2523
+ }))));
2524
+ };
2525
+
2526
+ var e=[],t=[];function n(n,r){if(n&&"undefined"!=typeof document){var a,s=!0===r.prepend?"prepend":"append",d=!0===r.singleTag,i="string"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName("head")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a="prepend"===s?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}
2527
+
2528
+ var css = ".neeto-filters-bar{align-items:center;display:flex;flex-wrap:wrap}.neeto-filters-bar__block{border-radius:var(--neeto-ui-rounded);display:flex;gap:4px;margin:4px 0;max-width:384px;overflow:hidden;padding:4px 8px;position:relative;transition:var(--neeto-ui-transition);white-space:nowrap}.neeto-filters-bar__block p:first-child{color:rgb(var(--neeto-ui-gray-700))}.neeto-filters-bar__block-close{background-image:linear-gradient(90deg,rgba(var(--neeto-ui-gray-200),.5) 0,rgba(var(--neeto-ui-gray-200),1) 25%);color:rgb(var(--neeto-ui-gray-800));opacity:0;padding:8px;position:absolute;right:0;top:0;transition:var(--neeto-ui-transition)}.neeto-filters-bar__block:active,.neeto-filters-bar__block:hover{background-color:rgb(var(--neeto-ui-gray-200));cursor:pointer}.neeto-filters-bar__block:active .neeto-filters-bar__block-close,.neeto-filters-bar__block:hover .neeto-filters-bar__block-close{border-radius:var(--neeto-ui-rounded);color:rgb(var(--neeto-ui-black));opacity:1}.neeto-filters-bar__block:focus{box-shadow:0 0 0 3px rgba(var(--neeto-ui-gray-800),15%);outline:none}.neeto-filters-bar--separator{align-self:stretch;border-left:1px solid rgb(var(--neeto-ui-gray-400));margin:12px 8px}.neeto-filters-pane-filter{width:360px}.neeto-filters-pane-filter__body{align-items:stretch!important;gap:20px}.neeto-filters-pane-filter__body>*{flex-grow:0!important}.neeto-filters-pane-filter__body p{text-align:center}.neeto-filters-pane-filter__body .neeto-filters-pane-filter__item-wrapper{display:flex;flex-direction:column;gap:8px}.neeto-filters-pane-filter__body .accordion_item .neeto-filters-pane-filter__item-wrapper{margin-top:16px}.neeto-filters-pane-filter__body .accordion_item .neeto-filters-pane-filter__item-wrapper:first-of-type{margin-top:0}.neeto-filters-pane-filter__body .accordion_item:first-of-type .neeto-ui-accordion__item{padding-top:0}.neeto-filters-pane-filter__body .neeto-ui-accordion__wrapper--last-item{border-bottom:thin solid rgb(var(--neeto-ui-gray-300))}@media screen and (max-width:767px){.neeto-filters-pane-filter{width:100vw}}.neeto-filters-pane-backdrop{-webkit-backdrop-filter:blur(0)!important;backdrop-filter:blur(0)!important;background-color:rgba(var(--neeto-ui-gray-700),.2)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9jb21wb25lbnRzL19iYXIuc2NzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9pbmRleC5zY3NzIiwiYXBwL2phdmFzY3JpcHQvc3JjL3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2ZpbHRlcnMuc2NzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9hYnN0cmFjdHMvX21peGlucy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUdFLGtCQUFBLENBRkEsWUFBQSxDQUNBLGNDRUYsQ0RDRSwwQkFLRSxxQ0FBQSxDQUhBLFlBQUEsQ0FFQSxPQUFBLENBR0EsWUFBQSxDQUNBLGVBQUEsQ0FFQSxlQUFBLENBVEEsZUFBQSxDQUVBLGlCQUFBLENBR0EscUNBQUEsQ0FHQSxrQkNFSixDRENJLHdDQUNFLG1DQ0NOLENERUksZ0NBUUUsZ0hBQUEsQ0FGQSxtQ0FBQSxDQURBLFNBQUEsQ0FEQSxXQUFBLENBSEEsaUJBQUEsQ0FFQSxPQUFBLENBREEsS0FBQSxDQUtBLHFDQ0NOLENET0ksaUVBRUUsOENBQUEsQ0FDQSxjQ05OLENEUU0saUlBR0UscUNBQUEsQ0FEQSxnQ0FBQSxDQURBLFNDSlIsQ0RVSSxnQ0FFRSx1REFBQSxDQURBLFlDUE4sQ0RZRSw4QkFHRSxrQkFBQSxDQUZBLG1EQUFBLENBQ0EsZUNUSixDQy9DQSwyQkFDRSxXRGtERixDQ2hERSxpQ0FDRSw2QkFBQSxDQUNBLFFEa0RKLENDaERJLG1DQUNFLHFCRGtETixDQy9DSSxtQ0FDRSxpQkRpRE4sQ0M5Q0ksMEVBQ0UsWUFBQSxDQUNBLHFCQUFBLENBQ0EsT0RnRE4sQ0M1Q00sMEZBQ0UsZUQ4Q1IsQ0M1Q1Esd0dBQ0UsWUQ4Q1YsQ0MxQ1EseUZBQ0UsYUQ0Q1YsQ0N4Q0kseUVBQ0Usc0REMENOLENFaEVJLG9DRGRKLDJCQXlDSSxXRHlDRixDQUNGLENDdENBLDZCQUNFLHlDQUFBLENBQUEsaUNBQUEsQ0FDQSxrRER5Q0YiLCJzb3VyY2VzQ29udGVudCI6WyIubmVldG8tZmlsdGVycy1iYXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgJl9fYmxvY2sge1xuICAgIHBhZGRpbmc6IDRweCA4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZ2FwOiA0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tbmVldG8tdWktcm91bmRlZCk7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tbmVldG8tdWktdHJhbnNpdGlvbik7XG4gICAgbWFyZ2luOiA0cHggMDtcbiAgICBtYXgtd2lkdGg6IDM4NHB4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIHA6Zmlyc3QtY2hpbGQge1xuICAgICAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTcwMCkpO1xuICAgIH1cblxuICAgICYtY2xvc2Uge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBwYWRkaW5nOiA4cHg7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTgwMCkpO1xuICAgICAgdHJhbnNpdGlvbjogdmFyKC0tbmVldG8tdWktdHJhbnNpdGlvbik7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgIDkwZGVnLFxuICAgICAgICByZ2JhKHZhcigtLW5lZXRvLXVpLWdyYXktMjAwKSwgMC41KSAwJSxcbiAgICAgICAgcmdiYSh2YXIoLS1uZWV0by11aS1ncmF5LTIwMCksIDEpIDI1JVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAmOmhvdmVyLFxuICAgICY6YWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTIwMCkpO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAubmVldG8tZmlsdGVycy1iYXJfX2Jsb2NrLWNsb3NlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ibGFjaykpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1uZWV0by11aS1yb3VuZGVkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1uZWV0by11aS1ncmF5LTgwMCksIDE1JSk7XG4gICAgfVxuICB9XG5cbiAgJi0tc2VwYXJhdG9yIHtcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTQwMCkpO1xuICAgIG1hcmdpbjogMTJweCA4cHg7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgfVxufVxuIiwiLm5lZXRvLWZpbHRlcnMtYmFyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLm5lZXRvLWZpbHRlcnMtYmFyX19ibG9jayB7XG4gIHBhZGRpbmc6IDRweCA4cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZ2FwOiA0cHg7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLW5lZXRvLXVpLXJvdW5kZWQpO1xuICB0cmFuc2l0aW9uOiB2YXIoLS1uZWV0by11aS10cmFuc2l0aW9uKTtcbiAgbWFyZ2luOiA0cHggMDtcbiAgbWF4LXdpZHRoOiAzODRweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2sgcDpmaXJzdC1jaGlsZCB7XG4gIGNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktZ3JheS03MDApKTtcbn1cbi5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2stY2xvc2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIHBhZGRpbmc6IDhweDtcbiAgb3BhY2l0eTogMDtcbiAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTgwMCkpO1xuICB0cmFuc2l0aW9uOiB2YXIoLS1uZWV0by11aS10cmFuc2l0aW9uKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2JhKHZhcigtLW5lZXRvLXVpLWdyYXktMjAwKSwgMC41KSAwJSwgcmdiYSh2YXIoLS1uZWV0by11aS1ncmF5LTIwMCksIDEpIDI1JSk7XG59XG4ubmVldG8tZmlsdGVycy1iYXJfX2Jsb2NrOmhvdmVyLCAubmVldG8tZmlsdGVycy1iYXJfX2Jsb2NrOmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTIwMCkpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubmVldG8tZmlsdGVycy1iYXJfX2Jsb2NrOmhvdmVyIC5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2stY2xvc2UsIC5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2s6YWN0aXZlIC5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2stY2xvc2Uge1xuICBvcGFjaXR5OiAxO1xuICBjb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLWJsYWNrKSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLW5lZXRvLXVpLXJvdW5kZWQpO1xufVxuLm5lZXRvLWZpbHRlcnMtYmFyX19ibG9jazpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLW5lZXRvLXVpLWdyYXktODAwKSwgMTUlKTtcbn1cbi5uZWV0by1maWx0ZXJzLWJhci0tc2VwYXJhdG9yIHtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCByZ2IodmFyKC0tbmVldG8tdWktZ3JheS00MDApKTtcbiAgbWFyZ2luOiAxMnB4IDhweDtcbiAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbn1cblxuLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXIge1xuICB3aWR0aDogMzYwcHg7XG59XG4ubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9fYm9keSB7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7XG4gIGdhcDogMjBweDtcbn1cbi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19ib2R5ID4gKiB7XG4gIGZsZXgtZ3JvdzogMCAhaW1wb3J0YW50O1xufVxuLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXJfX2JvZHkgcCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19ib2R5IC5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19pdGVtLXdyYXBwZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDhweDtcbn1cbi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19ib2R5IC5hY2NvcmRpb25faXRlbSAubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9faXRlbS13cmFwcGVyIHtcbiAgbWFyZ2luLXRvcDogMTZweDtcbn1cbi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19ib2R5IC5hY2NvcmRpb25faXRlbSAubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9faXRlbS13cmFwcGVyOmZpcnN0LW9mLXR5cGUge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXJfX2JvZHkgLmFjY29yZGlvbl9pdGVtOmZpcnN0LW9mLXR5cGUgLm5lZXRvLXVpLWFjY29yZGlvbl9faXRlbSB7XG4gIHBhZGRpbmctdG9wOiAwO1xufVxuLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXJfX2JvZHkgLm5lZXRvLXVpLWFjY29yZGlvbl9fd3JhcHBlci0tbGFzdC1pdGVtIHtcbiAgYm9yZGVyLWJvdHRvbTogdGhpbiBzb2xpZCByZ2IodmFyKC0tbmVldG8tdWktZ3JheS0zMDApKTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyIHtcbiAgICB3aWR0aDogMTAwdnc7XG4gIH1cbn1cblxuLm5lZXRvLWZpbHRlcnMtcGFuZS1iYWNrZHJvcCB7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tbmVldG8tdWktZ3JheS03MDApLCAwLjIpO1xufSIsIi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyIHtcbiAgd2lkdGg6IDM2MHB4O1xuXG4gICZfX2JvZHkge1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7XG4gICAgZ2FwOiAyMHB4O1xuXG4gICAgPiAqIHtcbiAgICAgIGZsZXgtZ3JvdzogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIHAge1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIC5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19pdGVtLXdyYXBwZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBnYXA6IDhweDtcbiAgICB9XG5cbiAgICAuYWNjb3JkaW9uX2l0ZW0ge1xuICAgICAgLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXJfX2l0ZW0td3JhcHBlciB7XG4gICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG5cbiAgICAgICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICAubmVldG8tdWktYWNjb3JkaW9uX19pdGVtIHtcbiAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAubmVldG8tdWktYWNjb3JkaW9uX193cmFwcGVyLS1sYXN0LWl0ZW0ge1xuICAgICAgYm9yZGVyLWJvdHRvbTogdGhpbiBzb2xpZCByZ2IodmFyKC0tbmVldG8tdWktZ3JheS0zMDApKTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSB2aWV3cG9ydChtb2IpIHtcbiAgICB3aWR0aDogMTAwdnc7XG4gIH1cbn1cblxuLm5lZXRvLWZpbHRlcnMtcGFuZS1iYWNrZHJvcCB7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tbmVldG8tdWktZ3JheS03MDApLCAwLjIpO1xufVxuIiwiQG1peGluIHZpZXdwb3J0KCRtZWRpYSkge1xuICBAaWYgJG1lZGlhPT1kZXNrIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWVkaWE9PXRhYi1taW4ge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtZWRpYT09dGFiLW9ubHkge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1lZGlhPT1tb2Ige1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1lZGlhPT14cy1tb2Ige1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ3OXB4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiJdfQ== */";
2529
+ n(css,{});
2530
+
2531
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2532
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2533
+ var Filters = withT(function (_ref) {
2534
+ var t = _ref.t,
2535
+ _ref$isOpen = _ref.isOpen,
2536
+ isOpen = _ref$isOpen === void 0 ? false : _ref$isOpen,
2537
+ _ref$setIsOpen = _ref.setIsOpen,
2538
+ setIsOpen = _ref$setIsOpen === void 0 ? identity : _ref$setIsOpen,
2539
+ _ref$columns = _ref.columns,
2540
+ columns = _ref$columns === void 0 ? [] : _ref$columns,
2541
+ _ref$onChange = _ref.onChange,
2542
+ onChange = _ref$onChange === void 0 ? identity : _ref$onChange,
2543
+ _ref$buttonProps = _ref.buttonProps,
2544
+ buttonProps = _ref$buttonProps === void 0 ? {} : _ref$buttonProps,
2545
+ _ref$paneProps = _ref.paneProps,
2546
+ paneProps = _ref$paneProps === void 0 ? {} : _ref$paneProps,
2547
+ _ref$isSearchable = _ref.isSearchable,
2548
+ isSearchable = _ref$isSearchable === void 0 ? false : _ref$isSearchable,
2549
+ className = _ref.className,
2550
+ _ref$onSelectorsChang = _ref.onSelectorsChange,
2551
+ onSelectorsChange = _ref$onSelectorsChang === void 0 ? noop : _ref$onSelectorsChang,
2552
+ _ref$keyword = _ref.keyword,
2553
+ keyword = _ref$keyword === void 0 ? {
2554
+ node: "",
2555
+ value: "",
2556
+ setValue: noop
2557
+ } : _ref$keyword,
2558
+ childrenKeys = _ref.childrenKeys,
2559
+ children = _ref.children;
2560
+ return /*#__PURE__*/React.createElement("span", {
2561
+ className: classnames(_defineProperty({}, className, className))
2562
+ }, /*#__PURE__*/React.createElement(Button, _extends({
2563
+ "data-cy": "neeto-filters-toggle-btn",
2564
+ label: t("neetoFilters.common.filter"),
2565
+ style: "secondary",
2566
+ onClick: function onClick() {
2567
+ return setIsOpen(true);
2568
+ }
2569
+ }, buttonProps)), /*#__PURE__*/React.createElement(Pane, _extends({
2570
+ onClose: function onClose() {
2571
+ return setIsOpen(false);
2572
+ }
2573
+ }, _objectSpread({
2574
+ childrenKeys: childrenKeys,
2575
+ columns: columns,
2576
+ isOpen: isOpen,
2577
+ isSearchable: isSearchable,
2578
+ keyword: keyword,
2579
+ onChange: onChange,
2580
+ onSelectorsChange: onSelectorsChange
2581
+ }, paneProps)), children));
2582
+ });
2583
+
2584
+ var DeleteAlert = function DeleteAlert(_ref) {
2585
+ var isOpen = _ref.isOpen,
2586
+ onClose = _ref.onClose,
2587
+ segment = _ref.segment,
2588
+ columns = _ref.columns;
2589
+ var _useTranslation = useTranslation(),
2590
+ t = _useTranslation.t;
2591
+ var history = useHistory();
2592
+ var _getQueryParams = getQueryParams(),
2593
+ segmentId = _getQueryParams.segmentId;
2594
+ var _useDestroySegment = useDestroySegment(),
2595
+ deleteSegment = _useDestroySegment.mutate,
2596
+ isDeleting = _useDestroySegment.isLoading;
2597
+ var handleClearAll = function handleClearAll() {
2598
+ var params = buildUrlFromFilters({
2599
+ columns: columns,
2600
+ filters: [],
2601
+ isClearAll: true
2602
+ });
2603
+ history.push({
2604
+ search: params
2605
+ });
2606
+ };
2607
+ var handleDelete = function handleDelete() {
2608
+ equals(segment.id, segmentId) && handleClearAll();
2609
+ deleteSegment(segment.id, {
2610
+ onSuccess: onClose
2611
+ });
2612
+ };
2613
+ return /*#__PURE__*/React.createElement(Alert, {
2614
+ isOpen: isOpen,
2615
+ onClose: onClose,
2616
+ isSubmitting: isDeleting,
2617
+ submitButtonLabel: t("neetoFilters.common.delete"),
2618
+ title: t("neetoFilters.segments.deleteAlertTitle"),
2619
+ message: /*#__PURE__*/React.createElement(Trans, {
2620
+ i18nKey: "neetoFilters.segments.deleteAlertMessage",
2621
+ values: {
2622
+ entity: segment.name
2623
+ }
2624
+ }),
2625
+ onSubmit: handleDelete
2626
+ });
2627
+ };
2628
+
2629
+ var Card = function Card(_ref) {
2630
+ var segment = _ref.segment,
2631
+ columns = _ref.columns,
2632
+ defaultSegmentName = _ref.defaultSegmentName;
2633
+ var _useState = useState(false),
2634
+ _useState2 = _slicedToArray(_useState, 2),
2635
+ isEditing = _useState2[0],
2636
+ setIsEditing = _useState2[1];
2637
+ var _useState3 = useState(false),
2638
+ _useState4 = _slicedToArray(_useState3, 2),
2639
+ isDeleteAlertOpen = _useState4[0],
2640
+ setIsDeleteAlertOpen = _useState4[1];
2641
+ var _useTranslation = useTranslation(),
2642
+ t = _useTranslation.t;
2643
+ var Menu = Dropdown$2.Menu,
2644
+ MenuItem = Dropdown$2.MenuItem;
2645
+ var _useUpdateSegment = useUpdateSegment(),
2646
+ updateSegment = _useUpdateSegment.mutate;
2647
+ var handleRename = function handleRename(values) {
2648
+ return updateSegment({
2649
+ id: segment.id,
2650
+ payload: values
2651
+ }, {
2652
+ onSuccess: function onSuccess() {
2653
+ return setIsEditing(false);
2654
+ }
2655
+ });
2656
+ };
2657
+ return /*#__PURE__*/React.createElement(Form, {
2658
+ className: "neeto-ui-rounded-md flex w-full items-center justify-between border p-2",
2659
+ formProps: {
2660
+ noValidate: true
2661
+ },
2662
+ formikProps: {
2663
+ initialValues: segment,
2664
+ validateOnChange: true,
2665
+ validateOnBlur: true,
2666
+ validationSchema: buildSegmentsValidationSchema(defaultSegmentName),
2667
+ onSubmit: handleRename,
2668
+ enableReinitialize: true
2669
+ }
2670
+ }, function (_ref2) {
2671
+ var resetForm = _ref2.resetForm;
2672
+ return /*#__PURE__*/React.createElement(React.Fragment, null, isEditing ? /*#__PURE__*/React.createElement(FormikInlineInput, {
2673
+ autoFocus: true,
2674
+ nakedInput: true,
2675
+ handleCancel: function handleCancel() {
2676
+ return setIsEditing(false);
2677
+ },
2678
+ name: "name",
2679
+ placeholder: t("neetoFilters.segments.name")
2680
+ }) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Typography, {
2681
+ style: "body2"
2682
+ }, segment.name), /*#__PURE__*/React.createElement(Dropdown$2, {
2683
+ buttonStyle: "text",
2684
+ disabled: isNotPresent(segment.id),
2685
+ icon: MenuHorizontal,
2686
+ size: "small"
2687
+ }, /*#__PURE__*/React.createElement(Menu, null, /*#__PURE__*/React.createElement(MenuItem.Button, {
2688
+ onClick: function onClick() {
2689
+ setIsEditing(true);
2690
+ resetForm();
2691
+ }
2692
+ }, t("neetoFilters.common.rename")), /*#__PURE__*/React.createElement(MenuItem.Button, {
2693
+ onClick: function onClick() {
2694
+ return setIsDeleteAlertOpen(true);
2695
+ }
2696
+ }, t("neetoFilters.common.delete"))))), /*#__PURE__*/React.createElement(DeleteAlert, {
2697
+ columns: columns,
2698
+ segment: segment,
2699
+ isOpen: isDeleteAlertOpen,
2700
+ onClose: function onClose() {
2701
+ return setIsDeleteAlertOpen(false);
2702
+ }
2703
+ }));
2704
+ });
2705
+ };
2706
+ var Card$1 = /*#__PURE__*/React.memo(Card);
2707
+
2708
+ var ManagePane = function ManagePane(_ref) {
2709
+ var isOpen = _ref.isOpen,
2710
+ onClose = _ref.onClose,
2711
+ entity = _ref.entity,
2712
+ columns = _ref.columns,
2713
+ defaultSegmentName = _ref.defaultSegmentName;
2714
+ var _useState = useState(""),
2715
+ _useState2 = _slicedToArray(_useState, 2),
2716
+ searchTerm = _useState2[0],
2717
+ setSearchTerm = _useState2[1];
2718
+ var inputRef = useRef(null);
2719
+ var _useTranslation = useTranslation(),
2720
+ t = _useTranslation.t;
2721
+ var debouncedSearchTerm = useDebounce(searchTerm);
2722
+ var _useFetchSegments = useFetchSegments({
2723
+ entity: entity,
2724
+ searchTerm: debouncedSearchTerm
2725
+ }),
2726
+ _useFetchSegments$dat = _useFetchSegments.data,
2727
+ segments = _useFetchSegments$dat === void 0 ? [] : _useFetchSegments$dat,
2728
+ isLoading = _useFetchSegments.isLoading;
2729
+ return /*#__PURE__*/React.createElement(Pane$1, {
2730
+ isOpen: isOpen,
2731
+ onClose: onClose,
2732
+ initialFocusRef: inputRef
2733
+ }, /*#__PURE__*/React.createElement(Pane$1.Header, null, /*#__PURE__*/React.createElement(Typography, {
2734
+ style: "h2"
2735
+ }, t("neetoFilters.segments.manageSegments"))), /*#__PURE__*/React.createElement(Pane$1.Body, {
2736
+ className: "max-h-full gap-4 overflow-scroll"
2737
+ }, /*#__PURE__*/React.createElement(Search, {
2738
+ className: "w-full flex-grow-0",
2739
+ placeholder: t("neetoFilters.segments.searchSegments"),
2740
+ ref: inputRef,
2741
+ onSearch: function onSearch(value) {
2742
+ return setSearchTerm(value);
2743
+ }
2744
+ }), isLoading ? /*#__PURE__*/React.createElement(Spinner, {
2745
+ className: "mx-auto mt-4"
2746
+ }) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Card$1, {
2747
+ segment: {
2748
+ name: defaultSegmentName
2749
+ }
2750
+ }), isEmpty(segments) ? /*#__PURE__*/React.createElement(Typography, {
2751
+ className: "mx-auto",
2752
+ style: "body2"
2753
+ }, t("neetoFilters.segments.noSegmentsFound")) : segments.map(function (segment) {
2754
+ return /*#__PURE__*/React.createElement(Card$1, {
2755
+ columns: columns,
2756
+ defaultSegmentName: defaultSegmentName,
2757
+ segment: segment,
2758
+ key: segment.id
2759
+ });
2760
+ }))));
2761
+ };
2762
+
2763
+ var ITEMS_MAX_COUNT = 20;
2764
+
2765
+ var MenuBlocks = function MenuBlocks(_ref) {
2766
+ var entity = _ref.entity,
2767
+ columns = _ref.columns,
2768
+ defaultSegmentName = _ref.defaultSegmentName;
2769
+ var _useState = useState(false),
2770
+ _useState2 = _slicedToArray(_useState, 2),
2771
+ showAll = _useState2[0],
2772
+ setShowAll = _useState2[1];
2773
+ var history = useHistory();
2774
+ var _useTranslation = useTranslation(),
2775
+ t = _useTranslation.t;
2776
+ var _getQueryParams = getQueryParams(),
2777
+ segmentId = _getQueryParams.segmentId;
2778
+ var appliedFilters = buildFiltersFromURL(columns);
2779
+ var _useFetchSegments = useFetchSegments({
2780
+ entity: entity
2781
+ }),
2782
+ _useFetchSegments$dat = _useFetchSegments.data,
2783
+ segments = _useFetchSegments$dat === void 0 ? [] : _useFetchSegments$dat,
2784
+ isLoading = _useFetchSegments.isLoading;
2785
+ var clearAppliedFilters = function clearAppliedFilters() {
2786
+ var _filters$, _filters$2;
2787
+ var filters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : appliedFilters;
2788
+ history.push({
2789
+ search: buildUrlFromFilters({
2790
+ columns: columns,
2791
+ filters: [],
2792
+ isClearAll: true,
2793
+ childrenKeys: ((_filters$ = filters[0]) === null || _filters$ === void 0 ? void 0 : _filters$.conditions) && pluck("key", filterBy({
2794
+ node: "children"
2795
+ }, (_filters$2 = filters[0]) === null || _filters$2 === void 0 ? void 0 : _filters$2.conditions))
2796
+ })
2797
+ });
2798
+ };
2799
+ var applySelectedSegment = function applySelectedSegment(_ref2) {
2800
+ var _filters$3;
2801
+ var id = _ref2.id,
2802
+ filters = _ref2.filters;
2803
+ history.push({
2804
+ search: buildUrlFromSegment({
2805
+ columns: columns,
2806
+ filters: (_filters$3 = filters[0]) === null || _filters$3 === void 0 ? void 0 : _filters$3.conditions,
2807
+ id: id
2808
+ })
2809
+ });
2810
+ };
2811
+ var handleSelectSegment = function handleSelectSegment(_ref3) {
2812
+ var id = _ref3.id,
2813
+ filters = _ref3.filters;
2814
+ return equals(id, segmentId) ? clearAppliedFilters(filters) : applySelectedSegment({
2815
+ id: id,
2816
+ filters: filters
2817
+ });
2818
+ };
2819
+ if (isLoading) {
2820
+ return /*#__PURE__*/React.createElement(Spinner, null);
2821
+ }
2822
+ if (isEmpty(segments)) {
2823
+ return /*#__PURE__*/React.createElement(Typography, {
2824
+ style: "body2"
2825
+ }, t("neetoFilters.segments.noSegmentsFound"));
2826
+ }
2827
+ return /*#__PURE__*/React.createElement(React.Fragment, null, segments.length > ITEMS_MAX_COUNT && /*#__PURE__*/React.createElement(Button, {
2828
+ icon: Down,
2829
+ style: "link",
2830
+ label: showAll ? t("neetoFilters.segments.showLess") : t("neetoFilters.segments.showMoreNumbers", {
2831
+ entity: segments.length - ITEMS_MAX_COUNT
2832
+ }),
2833
+ onClick: function onClick() {
2834
+ return setShowAll(function (open) {
2835
+ return !open;
2836
+ });
2837
+ }
2838
+ }), /*#__PURE__*/React.createElement(MenuBar.Block, {
2839
+ active: isEmpty(appliedFilters),
2840
+ label: defaultSegmentName,
2841
+ onClick: clearAppliedFilters
2842
+ }), segments.slice(0, showAll ? segments.length : ITEMS_MAX_COUNT).map(function (segment) {
2843
+ return /*#__PURE__*/React.createElement(MenuBar.Block, {
2844
+ active: segment.id === segmentId,
2845
+ count: segment.count,
2846
+ key: segment.id,
2847
+ label: segment.name,
2848
+ onClick: function onClick() {
2849
+ return handleSelectSegment(segment);
2850
+ }
2851
+ });
2852
+ }));
2853
+ };
2854
+ var MenuBlocks$1 = /*#__PURE__*/React.memo(MenuBlocks);
2855
+
2856
+ var Segments = function Segments(_ref) {
2857
+ var entity = _ref.entity,
2858
+ columns = _ref.columns,
2859
+ _ref$setIsFilterPaneO = _ref.setIsFilterPaneOpen,
2860
+ setIsFilterPaneOpen = _ref$setIsFilterPaneO === void 0 ? noop : _ref$setIsFilterPaneO,
2861
+ _ref$defaultSegmentNa = _ref.defaultSegmentName,
2862
+ defaultSegmentName = _ref$defaultSegmentNa === void 0 ? t$1("neetoFilters.common.allResults") : _ref$defaultSegmentNa;
2863
+ return function () {
2864
+ var _useState = useState(false),
2865
+ _useState2 = _slicedToArray(_useState, 2),
2866
+ isSegmentsPaneOpen = _useState2[0],
2867
+ setIsSegmentsPaneOpen = _useState2[1];
2868
+ var _useTranslation = useTranslation(),
2869
+ t = _useTranslation.t;
2870
+ var iconProps = [{
2871
+ icon: Settings,
2872
+ onClick: function onClick() {
2873
+ setIsFilterPaneOpen(false);
2874
+ setIsSegmentsPaneOpen(true);
2875
+ },
2876
+ tooltipProps: {
2877
+ content: t("neetoFilters.segments.manageSegments"),
2878
+ position: "top"
2879
+ }
2880
+ }];
2881
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(MenuBar.SubTitle, {
2882
+ iconProps: iconProps
2883
+ }, /*#__PURE__*/React.createElement(Typography, {
2884
+ component: "h4",
2885
+ style: "h5",
2886
+ textTransform: "uppercase",
2887
+ weight: "bold"
2888
+ }, t("neetoFilters.common.segments"))), /*#__PURE__*/React.createElement(MenuBlocks$1, {
2889
+ columns: columns,
2890
+ defaultSegmentName: defaultSegmentName,
2891
+ entity: entity
2892
+ }), /*#__PURE__*/React.createElement(ManagePane, {
2893
+ columns: columns,
2894
+ defaultSegmentName: defaultSegmentName,
2895
+ entity: entity,
2896
+ isOpen: isSegmentsPaneOpen,
2897
+ onClose: function onClose() {
2898
+ return setIsSegmentsPaneOpen(false);
2899
+ }
2900
+ }));
2901
+ }();
2902
+ };
2903
+ var index = /*#__PURE__*/React.memo(Segments);
2904
+
2905
+ export { Bar, Filters, index as Segments, buildFilterColumnsFromFields, buildFiltersFromURL, buildSelectorsFromURL, buildUrlFromFilters, buildUrlFromSegment, useDestroySegment, useFetchSegments, useUpdateSegment };
2906
+ //# sourceMappingURL=index.js.map