{"version":3,"sources":["jsdelivr-header.js","/npm/@haulmont/jmix-react-antd@1.0.0-next.1/dist/index.js"],"names":[],"mappings":"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","file":"/npm/@haulmont/jmix-react-antd@1.0.0-next.1/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@haulmont/jmix-react-antd@1.0.0-next.1/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar jmixReactCore = require('@haulmont/jmix-react-core');\nvar mobx = require('mobx');\nvar React = require('react');\nvar jmixReactWeb = require('@haulmont/jmix-react-web');\nvar antd = require('antd');\nvar reactIntl = require('react-intl');\nvar mobxReact = require('mobx-react');\nvar client = require('@apollo/client');\nvar icons = require('@ant-design/icons');\nvar jmixRest = require('@haulmont/jmix-rest');\nvar ReactInputMask = require('react-input-mask');\nvar generatePicker = require('antd/es/date-picker/generatePicker');\nrequire('antd/es/date-picker/style/index');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nfunction _interopNamespace(e) {\n\tif (e && e.__esModule) return e;\n\tvar n = Object.create(null);\n\tif (e) {\n\t\tObject.keys(e).forEach(function (k) {\n\t\t\tif (k !== 'default') {\n\t\t\t\tvar d = Object.getOwnPropertyDescriptor(e, k);\n\t\t\t\tObject.defineProperty(n, k, d.get ? d : {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: function () {\n\t\t\t\t\t\treturn e[k];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\tn['default'] = e;\n\treturn Object.freeze(n);\n}\n\nvar React__default = /*#__PURE__*/_interopDefaultLegacy(React);\nvar React__namespace = /*#__PURE__*/_interopNamespace(React);\nvar ReactInputMask__default = /*#__PURE__*/_interopDefaultLegacy(ReactInputMask);\nvar generatePicker__default = /*#__PURE__*/_interopDefaultLegacy(generatePicker);\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar customParseFormat = createCommonjsModule(function (module, exports) {\n!function(t,e){module.exports=e();}(commonjsGlobal,(function(){var t={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},e=/(\\[[^[]*\\])|([-:/.()\\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d\\d/,r=/\\d\\d?/,i=/\\d*[^\\s\\d-_:/()]+/,o={},s=function(t){return (t=+t)+(t>68?1900:2e3)};var a=function(t){return function(e){this[t]=+e;}},f=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(t){(this.zone||(this.zone={})).offset=function(t){if(!t)return 0;if(\"Z\"===t)return 0;var e=t.match(/([+-]|\\d\\d)/g),n=60*e[1]+(+e[2]||0);return 0===n?0:\"+\"===e[0]?-n:n}(t);}],u=function(t){var e=o[t];return e&&(e.indexOf?e:e.s.concat(e.f))},h=function(t,e){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(t.indexOf(r(i,0,e))>-1){n=i>12;break}}else n=t===(e?\"pm\":\"PM\");return n},d={A:[i,function(t){this.afternoon=h(t,!1);}],a:[i,function(t){this.afternoon=h(t,!0);}],S:[/\\d/,function(t){this.milliseconds=100*+t;}],SS:[n,function(t){this.milliseconds=10*+t;}],SSS:[/\\d{3}/,function(t){this.milliseconds=+t;}],s:[r,a(\"seconds\")],ss:[r,a(\"seconds\")],m:[r,a(\"minutes\")],mm:[r,a(\"minutes\")],H:[r,a(\"hours\")],h:[r,a(\"hours\")],HH:[r,a(\"hours\")],hh:[r,a(\"hours\")],D:[r,a(\"day\")],DD:[n,a(\"day\")],Do:[i,function(t){var e=o.ordinal,n=t.match(/\\d+/);if(this.day=n[0],e)for(var r=1;r<=31;r+=1)e(r).replace(/\\[|\\]/g,\"\")===t&&(this.day=r);}],M:[r,a(\"month\")],MM:[n,a(\"month\")],MMM:[i,function(t){var e=u(\"months\"),n=(u(\"monthsShort\")||e.map((function(t){return t.substr(0,3)}))).indexOf(t)+1;if(n<1)throw new Error;this.month=n%12||n;}],MMMM:[i,function(t){var e=u(\"months\").indexOf(t)+1;if(e<1)throw new Error;this.month=e%12||e;}],Y:[/[+-]?\\d+/,a(\"year\")],YY:[n,function(t){this.year=s(t);}],YYYY:[/\\d{4}/,a(\"year\")],Z:f,ZZ:f};function c(n){var r,i;r=n,i=o&&o.formats;for(var s=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(e,n,r){var o=r&&r.toUpperCase();return n||i[r]||t[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(t,e,n){return e||n.slice(1)}))}))).match(e),a=s.length,f=0;f<a;f+=1){var u=s[f],h=d[u],c=h&&h[0],l=h&&h[1];s[f]=l?{regex:c,parser:l}:u.replace(/^\\[|\\]$/g,\"\");}return function(t){for(var e={},n=0,r=0;n<a;n+=1){var i=s[n];if(\"string\"==typeof i)r+=i.length;else {var o=i.regex,f=i.parser,u=t.substr(r),h=o.exec(u)[0];f.call(e,h),t=t.replace(h,\"\");}}return function(t){var e=t.afternoon;if(void 0!==e){var n=t.hours;e?n<12&&(t.hours+=12):12===n&&(t.hours=0),delete t.afternoon;}}(e),e}}return function(t,e,n){n.p.customParseFormat=!0,t&&t.parseTwoDigitYear&&(s=t.parseTwoDigitYear);var r=e.prototype,i=r.parse;r.parse=function(t){var e=t.date,r=t.utc,s=t.args;this.$u=r;var a=s[1];if(\"string\"==typeof a){var f=!0===s[2],u=!0===s[3],h=f||u,d=s[2];u&&(d=s[2]),o=this.$locale(),!f&&d&&(o=n.Ls[d]),this.$d=function(t,e,n){try{if([\"x\",\"X\"].indexOf(e)>-1)return new Date((\"X\"===e?1e3:1)*t);var r=c(e)(t),i=r.year,o=r.month,s=r.day,a=r.hours,f=r.minutes,u=r.seconds,h=r.milliseconds,d=r.zone,l=new Date,m=s||(i||o?1:l.getDate()),M=i||l.getFullYear(),Y=0;i&&!o||(Y=o>0?o-1:l.getMonth());var p=a||0,v=f||0,D=u||0,g=h||0;return d?new Date(Date.UTC(M,Y,m,p,v,D,g+60*d.offset*1e3)):n?new Date(Date.UTC(M,Y,m,p,v,D,g)):new Date(M,Y,m,p,v,D,g)}catch(t){return new Date(\"\")}}(e,a,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),h&&e!==this.format(a)&&(this.$d=new Date(\"\")),o={};}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var M=n.apply(this,s);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===l&&(this.$d=new Date(\"\"));}else i.call(this,t);};}}));\n});\n\nvar advancedFormat = createCommonjsModule(function (module, exports) {\n!function(e,t){module.exports=t();}(commonjsGlobal,(function(){return function(e,t,r){var n=t.prototype,s=n.format;r.en.ordinal=function(e){var t=[\"th\",\"st\",\"nd\",\"rd\"],r=e%100;return \"[\"+e+(t[(r-20)%10]||t[r]||t[0])+\"]\"},n.format=function(e){var t=this,r=this.$locale(),n=this.$utils(),a=(e||\"YYYY-MM-DDTHH:mm:ssZ\").replace(/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case\"Q\":return Math.ceil((t.$M+1)/3);case\"Do\":return r.ordinal(t.$D);case\"gggg\":return t.weekYear();case\"GGGG\":return t.isoWeekYear();case\"wo\":return r.ordinal(t.week(),\"W\");case\"w\":case\"ww\":return n.s(t.week(),\"w\"===e?1:2,\"0\");case\"W\":case\"WW\":return n.s(t.isoWeek(),\"W\"===e?1:2,\"0\");case\"k\":case\"kk\":return n.s(String(0===t.$H?24:t.$H),\"k\"===e?1:2,\"0\");case\"X\":return Math.floor(t.$d.getTime()/1e3);case\"x\":return t.$d.getTime();case\"z\":return \"[\"+t.offsetName()+\"]\";case\"zzz\":return \"[\"+t.offsetName(\"long\")+\"]\";default:return e}}));return s.bind(this)(a)};}}));\n});\n\nvar weekday = createCommonjsModule(function (module, exports) {\n!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\")};}}));\n});\n\nvar localeData = createCommonjsModule(function (module, exports) {\n!function(n,e){module.exports=e();}(commonjsGlobal,(function(){return function(n,e,t){var r=e.prototype,o=function(n){return n&&(n.indexOf?n:n.s)},u=function(n,e,t,r,u){var i=n.name?n:n.$locale(),a=o(i[e]),s=o(i[t]),f=a||s.map((function(n){return n.substr(0,r)}));if(!u)return f;var d=i.weekStart;return f.map((function(n,e){return f[(e+(d||0))%7]}))},i=function(){return t.Ls[t.locale()]},a=function(n,e){return n.formats[e]||function(n){return n.replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(n,e,t){return e||t.slice(1)}))}(n.formats[e.toUpperCase()])},s=function(){var n=this;return {months:function(e){return e?e.format(\"MMMM\"):u(n,\"months\")},monthsShort:function(e){return e?e.format(\"MMM\"):u(n,\"monthsShort\",\"months\",3)},firstDayOfWeek:function(){return n.$locale().weekStart||0},weekdays:function(e){return e?e.format(\"dddd\"):u(n,\"weekdays\")},weekdaysMin:function(e){return e?e.format(\"dd\"):u(n,\"weekdaysMin\",\"weekdays\",2)},weekdaysShort:function(e){return e?e.format(\"ddd\"):u(n,\"weekdaysShort\",\"weekdays\",3)},longDateFormat:function(e){return a(n.$locale(),e)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};r.localeData=function(){return s.bind(this)()},t.localeData=function(){var n=i();return {firstDayOfWeek:function(){return n.weekStart||0},weekdays:function(){return t.weekdays()},weekdaysShort:function(){return t.weekdaysShort()},weekdaysMin:function(){return t.weekdaysMin()},months:function(){return t.months()},monthsShort:function(){return t.monthsShort()},longDateFormat:function(e){return a(n,e)},meridiem:n.meridiem,ordinal:n.ordinal}},t.months=function(){return u(i(),\"months\")},t.monthsShort=function(){return u(i(),\"monthsShort\",\"months\",3)},t.weekdays=function(n){return u(i(),\"weekdays\",null,null,n)},t.weekdaysShort=function(n){return u(i(),\"weekdaysShort\",\"weekdays\",3,n)},t.weekdaysMin=function(n){return u(i(),\"weekdaysMin\",\"weekdays\",2,n)};}}));\n});\n\nvar weekOfYear = createCommonjsModule(function (module, exports) {\n!function(e,t){module.exports=t();}(commonjsGlobal,(function(){var e=\"week\",t=\"year\";return function(i,n,r){var f=n.prototype;f.week=function(i){if(void 0===i&&(i=null),null!==i)return this.add(7*(i-this.week()),\"day\");var n=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var f=r(this).startOf(t).add(1,t).date(n),s=r(this).endOf(e);if(f.isBefore(s))return 1}var a=r(this).startOf(t).date(n).startOf(e).subtract(1,\"millisecond\"),o=this.diff(a,e,!0);return o<0?r(this).startOf(\"week\").week():Math.ceil(o)},f.weeks=function(e){return void 0===e&&(e=null),this.week(e)};}}));\n});\n\nvar weekYear = createCommonjsModule(function (module, exports) {\n!function(e,t){module.exports=t();}(commonjsGlobal,(function(){return function(e,t){t.prototype.weekYear=function(){var e=this.month(),t=this.week(),n=this.year();return 1===t&&11===e?n+1:0===e&&t>=52?n-1:n};}}));\n});\n\nvar dayjs_min = createCommonjsModule(function (module, exports) {\n!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}},D=\"en\",v={};v[D]=M;var p=function(t){return t instanceof _},S=function(t,e,n){var r;if(!t)return D;if(\"string\"==typeof t)v[t]&&(r=t),e&&(v[t]=e,r=t);else {var i=t.name;v[i]=t,r=i;}return !n&&r&&(D=r),r||!n&&D},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 D=this.$locale().weekStart||0,v=(y<D?y+7:y)-D;return $(r?m-v:m+(6-v),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].substr(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,D=O.m(this,M);return D=(l={},l[c]=D/12,l[f]=D,l[h]=D/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,$?D:O.a(D)},m.daysInMonth=function(){return this.endOf(f).$D},m.$locale=function(){return v[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}(),b=_.prototype;return w.prototype=b,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",f],[\"$y\",c],[\"$D\",d]].forEach((function(t){b[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=v[D],w.Ls=v,w.p={},w}));\n});\n\n/**\r\n * Reformats the entity data received from Ant Design `<Form>`\r\n * into internal UI kit agnostic format.\r\n *\r\n * @param item\r\n * @param entityName\r\n * @param metadata\r\n * @param stringIdName\r\n */\r\nfunction ant_to_jmixFront(item, entityName, metadata, stringIdName) {\r\n    const result = {};\r\n    Object.entries(item).forEach(([attributeName, value]) => {\r\n        const propInfo = jmixReactCore.getPropertyInfo(metadata.entities, entityName, attributeName);\r\n        // String ID\r\n        if (attributeName === stringIdName) {\r\n            result.id = value;\r\n            return;\r\n        }\r\n        if (propInfo && jmixReactCore.isOneToOneComposition(propInfo) && value != null) {\r\n            result[attributeName] = ant_to_jmixFront(value, propInfo.type, metadata);\r\n            return;\r\n        }\r\n        if (propInfo && jmixReactCore.isOneToManyComposition(propInfo)) {\r\n            value == null\r\n                ? result[attributeName] = []\r\n                : result[attributeName] = value.map((e) => ant_to_jmixFront(e, propInfo.type, metadata));\r\n            return;\r\n        }\r\n        if (propInfo && jmixReactCore.isToOneAssociation(propInfo) && typeof value === 'string') {\r\n            result[attributeName] = { id: value };\r\n            return;\r\n        }\r\n        if (propInfo && jmixReactCore.isToManyAssociation(propInfo) && Array.isArray(value)) {\r\n            result[attributeName] = value === null || value === void 0 ? void 0 : value.map(id => ({ id }));\r\n            return;\r\n        }\r\n        if (propInfo && jmixReactCore.isTemporalProperty(propInfo) && value != null && dayjs_min.isDayjs(value)) {\r\n            const normalizedValue = value.millisecond(0);\r\n            result[attributeName] = jmixReactCore.applyDataTransferFormat(normalizedValue, propInfo.type);\r\n            return;\r\n        }\r\n        if (value === '' || value == null) {\r\n            result[attributeName] = null;\r\n            return;\r\n        }\r\n        result[attributeName] = value;\r\n    });\r\n    return result;\r\n}\n\n/**\r\n * Reformats the entity data so that it can be\r\n * properly displayed by Ant Design `<Form>`.\r\n *\r\n * @param entityInstance\r\n * @param entityName\r\n * @param metadata\r\n * @param stringIdName\r\n */\r\nfunction jmixFront_to_ant(entityInstance, entityName, metadata, stringIdName) {\r\n    if (entityInstance == null || metadata == null) {\r\n        return {};\r\n    }\r\n    const fields = {};\r\n    Object.entries(mobx.toJS(entityInstance)).forEach(([attrName, value]) => {\r\n        const propInfo = jmixReactCore.getPropertyInfo(metadata.entities, entityName, attrName);\r\n        if (propInfo == null) {\r\n            if (attrName === '_instanceName') {\r\n                return;\r\n            }\r\n            console.error(`Cannot find property info for attribute ${attrName} of entity ${entityName}`);\r\n            fields[attrName] = value;\r\n            return;\r\n        }\r\n        // String ID attribute\r\n        const isStringIdAttr = (stringIdName != null) && (attrName === 'id');\r\n        if (isStringIdAttr) {\r\n            fields[stringIdName] = value;\r\n            return;\r\n        }\r\n        if (jmixReactCore.isOneToOneComposition(propInfo)) {\r\n            if (value == null) {\r\n                // We need to explicitly set `null` on empty fields rather than just omit the key.\r\n                // Example of why things can go wrong otherwise: https://github.com/Haulmont/jmix-frontend/issues/318.\r\n                // What happens is that the form fields will be set twice, first with data from Apollo cache and then from network response.\r\n                // If cache contains a value and network response says that the field should be empty, then unless we explicitly set `null`\r\n                // during the second call of `setFieldsValue`, the form will still contain the old value.\r\n                fields[attrName] = null;\r\n                return;\r\n            }\r\n            if (typeof value === 'object') {\r\n                // Recursively traverse child entity\r\n                fields[attrName] = jmixFront_to_ant(value, propInfo.type, metadata);\r\n                return;\r\n            }\r\n            console.error('Expected an object:', value);\r\n            return;\r\n        }\r\n        if (jmixReactCore.isOneToManyComposition(propInfo)) {\r\n            if (value == null) {\r\n                fields[attrName] = [];\r\n                return;\r\n            }\r\n            // Recursively traverse child entities\r\n            if (Array.isArray(value)) {\r\n                fields[attrName] = value.map((e) => jmixFront_to_ant(e, propInfo.type, metadata));\r\n                return;\r\n            }\r\n            console.error('Expected an array:', value);\r\n            return;\r\n        }\r\n        if (jmixReactCore.isToManyAssociation(propInfo)) {\r\n            if (value == null) {\r\n                fields[attrName] = [];\r\n                return;\r\n            }\r\n            // Turn array of EntityInstance into array of ids\r\n            if (Array.isArray(value)) {\r\n                fields[attrName] = value.reduce((arrayOfIds, entity) => {\r\n                    arrayOfIds.push(jmixReactCore.toIdString(entity.id));\r\n                    return arrayOfIds;\r\n                }, []);\r\n                return;\r\n            }\r\n            console.error('Expected an array:', value);\r\n            return;\r\n        }\r\n        if (jmixReactCore.isToOneAssociation(propInfo)) {\r\n            if (value == null) {\r\n                fields[attrName] = null;\r\n                return;\r\n            }\r\n            if (value.id != null) {\r\n                fields[attrName] = value.id;\r\n                return;\r\n            }\r\n            console.error('Expected to have an id:', value);\r\n            return;\r\n        }\r\n        if (jmixReactCore.isFileProperty(propInfo)) {\r\n            fields[attrName] = value; // FileRef string\r\n            return;\r\n        }\r\n        if (jmixReactCore.isTemporalProperty(propInfo)) {\r\n            if (value == null) {\r\n                fields[attrName] = null;\r\n                return;\r\n            }\r\n            if (typeof value === 'string') {\r\n                const temporalValue = dayjs_min(value, jmixReactCore.getDataTransferFormat(propInfo.type));\r\n                if (temporalValue.isValid()) {\r\n                    fields[attrName] = temporalValue;\r\n                    return;\r\n                }\r\n            }\r\n            console.error('Expected to be a string representing a valid date:', value);\r\n            return;\r\n        }\r\n        fields[attrName] = value;\r\n        return;\r\n    });\r\n    return fields;\r\n}\n\nclass MasterDetailStore {\r\n    constructor() {\r\n        this.selectedEntityId = undefined;\r\n        this.isOpenEditor = false;\r\n        this.dirty = false;\r\n        mobx.makeObservable(this, {\r\n            selectedEntityId: mobx.observable,\r\n            isOpenEditor: mobx.observable,\r\n            dirty: mobx.observable,\r\n            setSelectedEntityId: mobx.action,\r\n            setIsOpenEditor: mobx.action,\r\n            setDirty: mobx.action,\r\n        });\r\n    }\r\n    setSelectedEntityId(selectedEntityId) {\r\n        this.selectedEntityId = selectedEntityId;\r\n    }\r\n    setIsOpenEditor(isOpenEditor) {\r\n        this.isOpenEditor = isOpenEditor;\r\n    }\r\n    setDirty(dirty) {\r\n        this.dirty = dirty;\r\n    }\r\n}\n\nconst MasterDetailManagerContext = React.createContext({\r\n    masterDetailStore: new MasterDetailStore(),\r\n});\r\nconst useMasterDetailStore = () => {\r\n    const { masterDetailStore } = React.useContext(MasterDetailManagerContext);\r\n    return masterDetailStore;\r\n};\r\nconst MasterDetailProvider = ({ children }) => (React__default['default'].createElement(MasterDetailManagerContext.Consumer, null, ({ masterDetailStore }) => (React__default['default'].createElement(MasterDetailManagerContext.Provider, { value: { masterDetailStore } }, children))));\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\n\nvar ActionTypes;\r\n(function (ActionTypes) {\r\n    ActionTypes[\"ADD\"] = \"ADD\";\r\n    ActionTypes[\"DELETE\"] = \"DELETE\";\r\n    ActionTypes[\"DELETE_ALL\"] = \"DELETE_ALL\";\r\n})(ActionTypes || (ActionTypes = {}));\r\nlet modalsControlsContainer;\r\nfunction renderModals(modalsOptions, dispatch) {\r\n    return Array.from(modalsOptions).map((options, index) => {\r\n        const { onCancel: onCancelOptions, onOk: onOkOptions, content } = options, restOptions = __rest(options, [\"onCancel\", \"onOk\", \"content\"]);\r\n        const onCancel = (e) => {\r\n            onCancelOptions === null || onCancelOptions === void 0 ? void 0 : onCancelOptions(e);\r\n            dispatch({ type: ActionTypes.DELETE, payload: options });\r\n        };\r\n        const onOk = (e) => {\r\n            onOkOptions === null || onOkOptions === void 0 ? void 0 : onOkOptions(e);\r\n            dispatch({ type: ActionTypes.DELETE, payload: options });\r\n        };\r\n        return (React__default['default'].createElement(antd.Modal, Object.assign({ visible: true }, restOptions, { onCancel: onCancel, onOk: onOk, key: `modal-${index}` }), content));\r\n    });\r\n}\r\nconst modals = {\r\n    open(options) {\r\n        return modalsControlsContainer === null || modalsControlsContainer === void 0 ? void 0 : modalsControlsContainer.open(options);\r\n    },\r\n    close(options) {\r\n        return modalsControlsContainer === null || modalsControlsContainer === void 0 ? void 0 : modalsControlsContainer.close(options);\r\n    },\r\n    closeAll() {\r\n        return modalsControlsContainer === null || modalsControlsContainer === void 0 ? void 0 : modalsControlsContainer.closeAll();\r\n    }\r\n};\r\nfunction Modals({ children }) {\r\n    const initialState = useInitState();\r\n    const reducer = useInitReducer();\r\n    const [modalsState, dispatch] = React.useReducer(reducer, initialState);\r\n    modalsControlsContainer = useInitModalsControls(dispatch);\r\n    return (React__default['default'].createElement(React__default['default'].Fragment, null,\r\n        renderModals(modalsState, dispatch),\r\n        children));\r\n}\r\nfunction useInitReducer() {\r\n    return React.useCallback((state, action) => {\r\n        switch (action.type) {\r\n            case ActionTypes.ADD: {\r\n                return new Set(state).add(action.payload);\r\n            }\r\n            case ActionTypes.DELETE: {\r\n                const updatedState = new Set(state);\r\n                updatedState.delete(action.payload);\r\n                return updatedState;\r\n            }\r\n            case ActionTypes.DELETE_ALL: {\r\n                return new Set();\r\n            }\r\n            default: return state;\r\n        }\r\n    }, []);\r\n}\r\nfunction useInitState() {\r\n    return React.useMemo(() => {\r\n        return new Set();\r\n    }, []);\r\n}\r\nfunction useInitModalsControls(dispatch) {\r\n    return React.useMemo(() => {\r\n        return {\r\n            open(options) {\r\n                dispatch({ type: ActionTypes.ADD, payload: options });\r\n                return function () {\r\n                    dispatch({ type: ActionTypes.DELETE, payload: options });\r\n                };\r\n            },\r\n            close(options) {\r\n                dispatch({ type: ActionTypes.DELETE, payload: options });\r\n            },\r\n            closeAll() {\r\n                dispatch({ type: ActionTypes.DELETE_ALL });\r\n            }\r\n        };\r\n    }, []);\r\n}\n\nfunction showConfirmDialog$1(onConfirm, intl, messageId) {\r\n    modals.open({\r\n        content: intl.formatMessage({ id: messageId }),\r\n        okText: intl.formatMessage({ id: \"common.ok\" }),\r\n        cancelText: intl.formatMessage({ id: \"common.cancel\" }),\r\n        onOk: onConfirm,\r\n    });\r\n}\r\nfunction useMasterDetailList(options) {\r\n    const entityListData = jmixReactWeb.useEntityList(options);\r\n    const { intl } = entityListData;\r\n    const masterDetailStore = useMasterDetailStore();\r\n    const handleCreateBtnClick = React.useCallback(() => {\r\n        if (masterDetailStore.selectedEntityId != null) {\r\n            showConfirmDialog$1(() => {\r\n                masterDetailStore.setIsOpenEditor(true);\r\n                masterDetailStore.setSelectedEntityId(undefined);\r\n            }, intl, \"masterDetail.create.ifEntitySelected\");\r\n        }\r\n        else {\r\n            masterDetailStore.setIsOpenEditor(true);\r\n            masterDetailStore.setSelectedEntityId(undefined);\r\n        }\r\n    }, [intl, masterDetailStore]);\r\n    const handleSelectionChange = React.useCallback((selectedEntityIds) => {\r\n        if (selectedEntityIds.length === 0) {\r\n            masterDetailStore.setIsOpenEditor(false);\r\n            masterDetailStore.setSelectedEntityId(undefined);\r\n        }\r\n        else {\r\n            if (!masterDetailStore.dirty) {\r\n                masterDetailStore.setIsOpenEditor(true);\r\n                masterDetailStore.setSelectedEntityId(selectedEntityIds[0]);\r\n            }\r\n            else {\r\n                modals.open({\r\n                    content: intl.formatMessage({ id: 'masterDetail.create.ifEntitySelected' }),\r\n                    okText: intl.formatMessage({ id: \"common.ok\" }),\r\n                    cancelText: intl.formatMessage({ id: \"common.cancel\" }),\r\n                    onOk: () => {\r\n                        masterDetailStore.setDirty(false);\r\n                        masterDetailStore.setIsOpenEditor(true);\r\n                        masterDetailStore.setSelectedEntityId(selectedEntityIds[0]);\r\n                    },\r\n                });\r\n            }\r\n        }\r\n        entityListData.handleSelectionChange(selectedEntityIds);\r\n    }, [intl, masterDetailStore]);\r\n    return Object.assign(Object.assign({}, entityListData), { handleCreateBtnClick,\r\n        handleSelectionChange });\r\n}\n\nfunction useChangeConfirm() {\r\n    const masterDetailStore = useMasterDetailStore();\r\n    return {\r\n        setDirty: () => masterDetailStore.setDirty(true),\r\n        setPristine: () => masterDetailStore.setDirty(false)\r\n    };\r\n}\n\nexports.NotificationType = void 0;\r\n(function (NotificationType) {\r\n    NotificationType[\"SUCCESS\"] = \"success\";\r\n    NotificationType[\"ERROR\"] = \"error\";\r\n    NotificationType[\"INFO\"] = \"info\";\r\n    NotificationType[\"WARNING\"] = \"warning\";\r\n})(exports.NotificationType || (exports.NotificationType = {}));\r\nconst notifications = {\r\n    show(_a) {\r\n        var { title, description, type } = _a, restOptions = __rest(_a, [\"title\", \"description\", \"type\"]);\r\n        const config = Object.assign(Object.assign({}, restOptions), { message: title, description });\r\n        switch (type) {\r\n            case exports.NotificationType.SUCCESS:\r\n                return antd.notification.success(config);\r\n            case exports.NotificationType.ERROR:\r\n                return antd.notification.error(config);\r\n            case exports.NotificationType.INFO:\r\n                return antd.notification.info(config);\r\n            case exports.NotificationType.WARNING:\r\n                return antd.notification.warning(config);\r\n            default:\r\n                return antd.notification.open(config);\r\n        }\r\n    },\r\n    closeAll: () => {\r\n        antd.notification.destroy();\r\n    },\r\n    close: (key) => {\r\n        antd.notification.close(key);\r\n    }\r\n};\n\nfunction useMasterDetailEditor(options) {\r\n    const { entityName, entityInstance, resetEntityEditorForm, onCommit, } = options;\r\n    const intl = reactIntl.useIntl();\r\n    const { setPristine } = useChangeConfirm();\r\n    const entityEditorData = jmixReactWeb.useEntityEditor(options);\r\n    const { executeLoadQuery, executeUpsertMutation } = entityEditorData;\r\n    const masterDetailStore = useMasterDetailStore();\r\n    const updateResultName = `upsert_${jmixReactCore.dollarsToUnderscores(entityName)}`;\r\n    const listQueryName = `${jmixReactCore.dollarsToUnderscores(entityName)}List`;\r\n    // Watch at masterDetailStore.selectedEntityId changes. If masterDetailStore.selectedEntityId exists, then load the entity. Otherwise reset the form\r\n    React.useEffect(() => {\r\n        if (masterDetailStore.selectedEntityId != null) {\r\n            executeLoadQuery({\r\n                variables: {\r\n                    id: masterDetailStore.selectedEntityId,\r\n                    loadItem: true\r\n                },\r\n            });\r\n        }\r\n        else {\r\n            resetEntityEditorForm();\r\n        }\r\n    }, [executeLoadQuery, masterDetailStore.selectedEntityId]);\r\n    const closeEditor = React.useCallback(() => {\r\n        masterDetailStore.setDirty(false);\r\n        masterDetailStore.setIsOpenEditor(false);\r\n        masterDetailStore.setSelectedEntityId(undefined);\r\n    }, [masterDetailStore]);\r\n    const onCreate = React.useCallback(() => {\r\n        notifications.show({\r\n            type: exports.NotificationType.SUCCESS,\r\n            description: intl.formatMessage({ id: \"management.editor.created\" })\r\n        });\r\n        setPristine();\r\n    }, [notifications, intl, setPristine]);\r\n    const onEdit = React.useCallback(() => {\r\n        notifications.show({\r\n            type: exports.NotificationType.SUCCESS,\r\n            description: intl.formatMessage({ id: \"management.editor.updated\" })\r\n        });\r\n        setPristine();\r\n    }, [notifications, intl, setPristine]);\r\n    const onError = React.useCallback(() => {\r\n        notifications.show({\r\n            type: exports.NotificationType.ERROR,\r\n            description: intl.formatMessage({ id: \"common.requestFailed\" })\r\n        });\r\n    }, [notifications, intl]);\r\n    const handleSubmit = jmixReactWeb.useSubmitCallback({\r\n        executeUpsertMutation,\r\n        updateResultName,\r\n        listQueryName,\r\n        entityName,\r\n        goToParentScreen: closeEditor,\r\n        entityId: masterDetailStore.selectedEntityId,\r\n        entityInstance,\r\n        uiKit_to_jmixFront: ant_to_jmixFront,\r\n        onCommit,\r\n        persistEntityCallbacks: {\r\n            onCreate,\r\n            onEdit,\r\n            onError,\r\n        }\r\n    });\r\n    return Object.assign(Object.assign({}, entityEditorData), { handleSubmit, handleCancelBtnClick: closeEditor });\r\n}\n\nconst MasterDetailBrowserWrapper = mobxReact.observer(({ children }) => {\r\n    const masterDetailStore = useMasterDetailStore();\r\n    return (React__default['default'].createElement(antd.Card, { style: { height: '100%' } }, masterDetailStore.isOpenEditor ? children : React__default['default'].createElement(reactIntl.FormattedMessage, { id: \"masterDetail.entityUnselected\" })));\r\n});\r\nconst MasterDetailManager = ({ editor, browser, }) => {\r\n    return (React__default['default'].createElement(MasterDetailProvider, null,\r\n        React__default['default'].createElement(antd.Row, null,\r\n            React__default['default'].createElement(antd.Col, { span: 16, style: { position: 'relative' } },\r\n                React__default['default'].createElement(antd.Card, { style: { height: '100%' } }, browser)),\r\n            React__default['default'].createElement(antd.Col, { span: 8 },\r\n                React__default['default'].createElement(MasterDetailBrowserWrapper, null, editor)))));\r\n};\n\nfunction showDeleteEntityDialog(onConfirm, intl, entityInstance) {\r\n    var _a, _b;\r\n    modals.open({\r\n        content: intl.formatMessage({ id: \"management.browser.delete.areYouSure\" }, {\r\n            instanceName: (_b = (_a = entityInstance === null || entityInstance === void 0 ? void 0 : entityInstance._instanceName) !== null && _a !== void 0 ? _a : entityInstance === null || entityInstance === void 0 ? void 0 : entityInstance.id) !== null && _b !== void 0 ? _b : intl.formatMessage({ id: 'common.unsavedEntity' })\r\n        }),\r\n        okText: intl.formatMessage({ id: \"management.browser.delete.ok\" }),\r\n        cancelText: intl.formatMessage({ id: \"common.cancel\" }),\r\n        onOk: onConfirm\r\n    });\r\n}\n\nfunction useAntdForm(form, item, entityName) {\r\n    const metadata = jmixReactCore.useMetadata();\r\n    React.useEffect(() => {\r\n        if (item != null && metadata != null) {\r\n            form.setFieldsValue(jmixFront_to_ant(item, entityName, metadata));\r\n        }\r\n    }, [form, item, metadata, entityName]);\r\n}\n\nfunction createUseAntdForm(form) {\r\n    return useAntdForm.bind(null, form);\r\n}\n\nfunction useCreateAntdResetForm(form) {\r\n    return React.useCallback(() => form.resetFields(), [form]);\r\n}\n\nfunction useSubmitFailedCallback() {\r\n    const intl = reactIntl.useIntl();\r\n    const onSubmitFailed = React.useCallback(() => {\r\n        notifications.show({\r\n            type: exports.NotificationType.ERROR,\r\n            description: intl.formatMessage({ id: \"management.editor.validationError\" })\r\n        });\r\n    }, [intl, notifications]);\r\n    return onSubmitFailed;\r\n}\n\nfunction useEntityPersistCallbacks() {\r\n    const intl = reactIntl.useIntl();\r\n    const onCreate = React.useCallback(() => {\r\n        notifications.show({\r\n            type: exports.NotificationType.SUCCESS,\r\n            description: intl.formatMessage({ id: \"management.editor.created\" })\r\n        });\r\n    }, [notifications, intl]);\r\n    const onEdit = React.useCallback(() => {\r\n        notifications.show({\r\n            type: exports.NotificationType.SUCCESS,\r\n            description: intl.formatMessage({ id: \"management.editor.updated\" })\r\n        });\r\n    }, [notifications, intl]);\r\n    const onError = React.useCallback(() => {\r\n        notifications.show({\r\n            type: exports.NotificationType.ERROR,\r\n            description: intl.formatMessage({ id: \"common.requestFailed\" })\r\n        });\r\n    }, [notifications, intl]);\r\n    return { onCreate, onEdit, onError };\r\n}\n\nfunction useAntdFormValidation(form, errorInfo) {\r\n    const intl = reactIntl.useIntl();\r\n    if (errorInfo == null || (errorInfo === null || errorInfo === void 0 ? void 0 : errorInfo.fieldErrors) == null) {\r\n        return;\r\n    }\r\n    const fieldsPartial = [];\r\n    errorInfo === null || errorInfo === void 0 ? void 0 : errorInfo.fieldErrors.forEach((messages, path) => {\r\n        if (path.includes('.')) {\r\n            addChildEntityError(fieldsPartial, path, intl);\r\n            return;\r\n        }\r\n        fieldsPartial.push({\r\n            name: path,\r\n            errors: messages\r\n        });\r\n    });\r\n    // Put the error messages into the form\r\n    form.setFields(fieldsPartial);\r\n}\r\n/**\r\n * Adds \"Validation error in child entity\" message on a Composition field\r\n * if it isn't already there.\r\n *\r\n * @param fieldsPartial\r\n * @param path\r\n * @param intl\r\n */\r\nfunction addChildEntityError(fieldsPartial, path, intl) {\r\n    const childErrorMessage = intl.formatMessage({ id: 'jmix.form.validation.childError' });\r\n    const fieldName = path.split(/\\.|\\[/)[0];\r\n    if (!fieldsPartial.some(f => f.name === fieldName)) {\r\n        fieldsPartial.push({\r\n            name: fieldName,\r\n            errors: []\r\n        });\r\n    }\r\n    const fieldIndex = fieldsPartial.findIndex(f => f.name === fieldName);\r\n    if (fieldsPartial[fieldIndex].errors == null) {\r\n        fieldsPartial[fieldIndex].errors = [];\r\n    }\r\n    if (!fieldsPartial[fieldIndex].errors.some(e => e === childErrorMessage)) {\r\n        fieldsPartial[fieldIndex].errors.push(childErrorMessage);\r\n    }\r\n}\n\nfunction createUseAntdFormValidation(form) {\r\n    return useAntdFormValidation.bind(null, form);\r\n}\n\nfunction useEntityDeleteCallback() {\r\n    const intl = reactIntl.useIntl();\r\n    const onEntityDelete = React.useCallback((onConfirm, entityInstance) => {\r\n        showDeleteEntityDialog(onConfirm, intl, entityInstance);\r\n    }, [showDeleteEntityDialog, intl]);\r\n    return onEntityDelete;\r\n}\n\nfunction useOpenScreenErrorCallback() {\r\n    const intl = reactIntl.useIntl();\r\n    const onOpenScreenError = React.useCallback((entityName) => {\r\n        notifications.show({\r\n            type: exports.NotificationType.SUCCESS,\r\n            description: intl.formatMessage({ id: 'editor.doesNotExist' }, { entityName })\r\n        });\r\n    }, [intl, notifications]);\r\n    return onOpenScreenError;\r\n}\n\nclass MultiSelectionTableStore {\r\n    constructor() {\r\n        this.selectedEntityIds = undefined;\r\n        mobx.makeObservable(this, {\r\n            selectedEntityIds: mobx.observable,\r\n            setSelectedEntityIds: mobx.action,\r\n        });\r\n    }\r\n    setSelectedEntityIds(selectedEntityIds) {\r\n        this.selectedEntityIds = selectedEntityIds;\r\n    }\r\n}\n\nfunction showConfirmDialog(onConfirm, intl, messageId) {\r\n    modals.open({\r\n        content: intl.formatMessage({ id: messageId }),\r\n        okText: intl.formatMessage({ id: \"common.ok\" }),\r\n        cancelText: intl.formatMessage({ id: \"common.cancel\" }),\r\n        onOk: onConfirm,\r\n    });\r\n}\r\nfunction useMultiSelectionTable(options) {\r\n    const entityListData = jmixReactWeb.useEntityList(options);\r\n    const client$1 = client.useApolloClient();\r\n    const multiSelectionTableStore = mobxReact.useLocalObservable(() => new MultiSelectionTableStore());\r\n    const intl = reactIntl.useIntl();\r\n    const handleSelectionChange = React.useCallback(selectedEntityIds => multiSelectionTableStore.setSelectedEntityIds(selectedEntityIds), [multiSelectionTableStore]);\r\n    const deleteSelectedEntities = React.useCallback(async () => {\r\n        if (multiSelectionTableStore.selectedEntityIds != null) {\r\n            const entitiesDeleteMutate = jmixReactWeb.createDeleteMutationForSomeEntities(options.entityName, multiSelectionTableStore.selectedEntityIds);\r\n            try {\r\n                await client$1.mutate({ mutation: entitiesDeleteMutate });\r\n                antd.message.success('multiSelectionTable.delete.success');\r\n                await entityListData.executeListQuery();\r\n            }\r\n            catch (error) {\r\n                antd.message.error('multiSelectionTable.delete.error');\r\n            }\r\n        }\r\n    }, [options.entityName, multiSelectionTableStore.selectedEntityIds]);\r\n    const handleDeleteBtnClick = React.useCallback(() => {\r\n        if (multiSelectionTableStore.selectedEntityIds != null\r\n            && multiSelectionTableStore.selectedEntityIds.length > 0) {\r\n            showConfirmDialog(deleteSelectedEntities, intl, 'multiSelectionTable.delete.areYouSure');\r\n        }\r\n    }, [deleteSelectedEntities, intl]);\r\n    return Object.assign(Object.assign({}, entityListData), { multiSelectionTableStore,\r\n        handleSelectionChange,\r\n        handleDeleteBtnClick });\r\n}\n\nvar strictUriEncode = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nvar decodeUriComponent = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n\nvar splitOnFirst = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n\nvar filterObj = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n\nvar queryString = createCommonjsModule(function (module, exports) {\n\n\n\n\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeUriComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObj(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n});\nqueryString.extract;\nqueryString.parse;\nqueryString.stringify;\nqueryString.parseUrl;\nqueryString.stringifyUrl;\nqueryString.pick;\nqueryString.exclude;\n\nclass Paging extends React__default['default'].Component {\r\n    render() {\r\n        const { paginationConfig, total } = this.props;\r\n        return (React__default['default'].createElement(antd.Pagination, Object.assign({}, paginationConfig, { total: total, pageSizeOptions: mobx.toJS(paginationConfig.pageSizeOptions), onChange: this.props.onPagingChange, onShowSizeChange: this.props.onPagingChange })));\r\n    }\r\n}\r\n/**\r\n * Returns new PaginationConfig object with 'current' and 'pageSize' params, parsed from location.search.\r\n * If param not found in search url, previous value (currentPrev, pageSizePrev) will be returned.\r\n * If new pageSize not contains in config pageSizeOptions - previous config will be returned.\r\n *\r\n * @param locationSearch trying to find paging params here\r\n * @param currentPrev - previous value, will be returned in result if new value not found in locationSearch\r\n * @param pageSizePrev - previous value, will be returned in result if new value not found in locationSearch\r\n */\r\nfunction parsePagingParams(locationSearch, currentPrev, pageSizePrev) {\r\n    const parsedUrlQuery = queryString.parse(locationSearch);\r\n    return {\r\n        current: parseIntParam(parsedUrlQuery.page, currentPrev),\r\n        pageSize: parseIntParam(parsedUrlQuery.pageSize, pageSizePrev)\r\n    };\r\n}\r\nfunction parseIntParam(param, defaultValue) {\r\n    if (typeof param !== 'string')\r\n        return defaultValue;\r\n    const parsed = parseInt(param);\r\n    return isNaN(parsed) ? defaultValue : parsed;\r\n}\r\n/**\r\n * Add paging params at the end of url string.\r\n * Returns url with\r\n * Note - expects that url has no params, so this method add '?' before params.\r\n *\r\n * @param url - params will be added to this url\r\n * @param current - current page\r\n * @param pageSize - page size\r\n */\r\nfunction addPagingParams(url, current, pageSize) {\r\n    if (!current || !pageSize)\r\n        return url;\r\n    return `${url}?page=${current}&pageSize=${pageSize}`;\r\n}\r\n/**\r\n * Apply paginationConfig to collectionDataStore, reload dataStore if required\r\n *\r\n * @param pagination - PaginationConfig\r\n * @param dataCollection -page size and current page will be set to this collection data store\r\n * @param reload - reload collection data store, if needsr\r\n */\r\nfunction setPagination(pagination, dataCollection, reload = false) {\r\n    const { disabled, pageSize, current } = pagination;\r\n    if (disabled === true) {\r\n        dataCollection.limit = null;\r\n        dataCollection.offset = null;\r\n        dataCollection.skipCount = true;\r\n        if (reload)\r\n            dataCollection.load();\r\n        return;\r\n    }\r\n    // need to sync enabled pagination config and dataCollection - reset limit and offset\r\n    if (dataCollection.skipCount) {\r\n        dataCollection.skipCount = false;\r\n    }\r\n    if (pageSize && current) {\r\n        dataCollection.limit = pageSize;\r\n        dataCollection.offset = pageSize * (current - 1);\r\n    }\r\n    if (reload)\r\n        dataCollection.load();\r\n}\r\n/**\r\n * @param urlParams query params from 'location.history'\r\n * @param disabled set to true, if no pagination required for component\r\n * @param prevConfig previous paging configuration, by default used Paging#defaultPagingConfig\r\n */\r\nfunction createPagingConfig(urlParams, disabled = false, prevConfig = jmixReactWeb.defaultPaginationConfig) {\r\n    const config = Object.assign({}, prevConfig);\r\n    if (disabled) {\r\n        return { config, disabled: true };\r\n    }\r\n    const { current, pageSize, pageSizeOptions } = config;\r\n    const parsedParams = parsePagingParams(urlParams, current, pageSize);\r\n    // return prev config if pageSize param not match to options\r\n    if (!pageSizeOptions || !parsedParams.pageSize || (pageSizeOptions === null || pageSizeOptions === void 0 ? void 0 : pageSizeOptions.indexOf('' + parsedParams.pageSize)) < 0) {\r\n        return config;\r\n    }\r\n    return Object.assign(Object.assign({}, config), parsedParams);\r\n}\n\nfunction saveHistory(routingPath, pagination) {\r\n    const { current, pageSize } = pagination !== null && pagination !== void 0 ? pagination : {};\r\n    window.history.pushState({}, '', addPagingParams(routingPath, current, pageSize));\r\n}\n\nfunction styleInject(css, ref) {\n  if ( ref === void 0 ) ref = {};\n  var insertAt = ref.insertAt;\n\n  if (!css || typeof document === 'undefined') { return; }\n\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var style = document.createElement('style');\n  style.type = 'text/css';\n\n  if (insertAt === 'top') {\n    if (head.firstChild) {\n      head.insertBefore(style, head.firstChild);\n    } else {\n      head.appendChild(style);\n    }\n  } else {\n    head.appendChild(style);\n  }\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nvar css_248z$a = \".styles-module_icon__9YpDA.anticon-close.anticon {\\n  margin-right: 0;\\n}\\n.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .styles-module_icon__9YpDA.anticon-close.anticon {\\n  margin-left: 0;\\n}\\n\";\nvar styles$9 = {\"icon\":\"styles-module_icon__9YpDA\"};\nstyleInject(css_248z$a);\n\nconst { TabPane } = antd.Tabs;\r\nfunction onTabChange(key) {\r\n    for (const tab of jmixReactCore.tabs.tabs) {\r\n        if (tab.key === key) {\r\n            jmixReactCore.tabs.setActiveTab(tab);\r\n            break;\r\n        }\r\n    }\r\n}\r\nfunction handleCloseClick(e, tabItem) {\r\n    e.stopPropagation();\r\n    jmixReactCore.tabs.close(tabItem);\r\n}\r\nconst MultiTabs = mobxReact.observer(() => {\r\n    var _a;\r\n    if (!jmixReactCore.tabs.tabs.length) {\r\n        return null;\r\n    }\r\n    return (React__default['default'].createElement(antd.Tabs, { activeKey: (_a = jmixReactCore.tabs.currentTab) === null || _a === void 0 ? void 0 : _a.key, onChange: onTabChange }, jmixReactCore.tabs.tabs.map((item) => (React__default['default'].createElement(TabPane, { tab: React__default['default'].createElement(antd.Space, { size: 10 },\r\n            React__default['default'].createElement(reactIntl.FormattedMessage, { id: item.title }),\r\n            React__default['default'].createElement(icons.CloseOutlined, { className: styles$9.icon, onClick: (e) => handleCloseClick(e, item) })), key: item.key },\r\n        React__default['default'].createElement(jmixReactWeb.TabContent, { item: item }))))));\r\n});\n\nconst ContentArea = mobxReact.observer(() => {\r\n    const { contentDisplayMode } = jmixReactCore.useMainStore();\r\n    switch (contentDisplayMode) {\r\n        case jmixReactCore.ContentDisplayMode.ActivateExistingTab:\r\n        case jmixReactCore.ContentDisplayMode.AlwaysNewTab:\r\n            return React__default['default'].createElement(MultiTabs, null);\r\n        case jmixReactCore.ContentDisplayMode.NoTabs:\r\n            return React__default['default'].createElement(jmixReactWeb.SingleContentArea, null);\r\n        default:\r\n            jmixReactCore.assertNever('MainStore.contentDisplayMode', contentDisplayMode);\r\n    }\r\n});\n\nconst FieldPermissionContainer = jmixReactCore.injectMainStore(mobxReact.observer((props) => {\r\n    const { entityName, propertyName, renderField } = props;\r\n    const displayReqs = {\r\n        attrReqs: [{\r\n                entityName,\r\n                attrName: propertyName,\r\n                requiredAttrPerm: 'VIEW'\r\n            }]\r\n    };\r\n    const modifyReqs = {\r\n        attrReqs: [{\r\n                entityName,\r\n                attrName: propertyName,\r\n                requiredAttrPerm: 'MODIFY'\r\n            }]\r\n    };\r\n    return (React__namespace.createElement(jmixReactCore.AccessControl, { displayReqs: displayReqs, modifyReqs: modifyReqs, render: renderField }));\r\n}));\n\nvar classnames = createCommonjsModule(function (module) {\n/*!\n  Copyright (c) 2018 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n});\n\nvar css_248z$9 = \"/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\\n/* stylelint-disable no-duplicate-selectors */\\n/* stylelint-disable */\\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\\n.FileUpload-module_fileUploadFullWidth__I3agp .ant-upload.ant-upload-select {\\n  display: block;\\n}\\n.FileUpload-module_fileDropErea__ph3BC {\\n  background-color: #f2f2f2;\\n  border: dashed 1px #a6a6a6;\\n  cursor: pointer;\\n  display: block;\\n  padding: 12px;\\n  text-align: center;\\n  transition: all 0.2s;\\n}\\n.FileUpload-module_fileDropErea__ph3BC:hover {\\n  border-color: #1890ff;\\n}\\n.FileUpload-module_fileDropErea__ph3BC > .FileUpload-module_uploadIcon__2hPKd {\\n  font-size: 48px;\\n  margin-bottom: 8px;\\n}\\n.FileUpload-module_fileDropErea__ph3BC > .FileUpload-module_replaceIcon__2giSc {\\n  margin-right: 8px;\\n}\\n.FileUpload-module_fileDropErea__ph3BC > .FileUpload-module_uploadText__2_A2G {\\n  color: #262626;\\n}\\n.FileUpload-module_fileDropErea__ph3BC > .FileUpload-module_replaceText__358bh {\\n  color: #5a5a5a;\\n  font-size: 12px;\\n}\\n.FileUpload-module_noFileMessage__2KeR1 {\\n  color: #5a5a5a;\\n  font-size: 12px;\\n}\\n\";\nvar styles$8 = {\"fileUploadFullWidth\":\"FileUpload-module_fileUploadFullWidth__I3agp\",\"fileDropErea\":\"FileUpload-module_fileDropErea__ph3BC\",\"uploadIcon\":\"FileUpload-module_uploadIcon__2hPKd\",\"replaceIcon\":\"FileUpload-module_replaceIcon__2giSc\",\"uploadText\":\"FileUpload-module_uploadText__2_A2G\",\"replaceText\":\"FileUpload-module_replaceText__358bh\",\"noFileMessage\":\"FileUpload-module_noFileMessage__2KeR1\"};\nstyleInject(css_248z$9);\n\nvar css_248z$8 = \".Spinner-module_spinner__2ZzlL {\\n  position: absolute;\\n  left: 50%;\\n  top: 50%;\\n  transform: translate(-50%, -50%);\\n}\\n\";\nvar styles$7 = {\"spinner\":\"Spinner-module_spinner__2ZzlL\"};\nstyleInject(css_248z$8);\n\nfunction Spinner() {\r\n    return (React__default['default'].createElement(\"div\", { className: styles$7.spinner },\r\n        React__default['default'].createElement(antd.Spin, { size: \"large\" })));\r\n}\n\nvar css_248z$7 = \".ImagePreview-module_imagePreview__2Wcs7 > .ImagePreview-module_title__2NWnh {\\n  margin-bottom: 8px;\\n}\\n.ImagePreview-module_imagePreview__2Wcs7 > .ImagePreview-module_image__1hqi7 {\\n  display: block;\\n  margin: 0 auto;\\n  max-height: 60vh;\\n  max-width: 100%;\\n}\\n.ImagePreview-module_spinner__QUlIL {\\n  margin: 64px 0 64px 0;\\n}\\n\";\nvar styles$6 = {\"imagePreview\":\"ImagePreview-module_imagePreview__2Wcs7\",\"title\":\"ImagePreview-module_title__2NWnh\",\"image\":\"ImagePreview-module_image__1hqi7\",\"spinner\":\"ImagePreview-module_spinner__QUlIL\"};\nstyleInject(css_248z$7);\n\nclass ImagePreviewComponent extends React__default['default'].Component {\r\n    constructor() {\r\n        super(...arguments);\r\n        this.saveFile = () => {\r\n            const { objectUrl, fileName } = this.props;\r\n            if (objectUrl != null && fileName != null) {\r\n                jmixReactWeb.saveFile(objectUrl, fileName);\r\n            }\r\n        };\r\n    }\r\n    get okButtonProps() {\r\n        const { isLoading } = this.props;\r\n        return {\r\n            disabled: isLoading,\r\n            icon: React__default['default'].createElement(icons.DownloadOutlined, null)\r\n        };\r\n    }\r\n    render() {\r\n        const { intl, isVisible, isLoading, objectUrl, fileName, onClose } = this.props;\r\n        return (React__default['default'].createElement(antd.Modal, { title: intl.formatMessage({ id: 'jmix.imagePreview.title' }), visible: isVisible, afterClose: onClose, onCancel: onClose, onOk: this.saveFile, cancelText: intl.formatMessage({ id: 'jmix.imagePreview.close' }), okText: intl.formatMessage({ id: 'jmix.imagePreview.download' }), okButtonProps: this.okButtonProps, destroyOnClose: true, width: '80vw' },\r\n            isLoading && (React__default['default'].createElement(\"div\", { className: styles$6.spinner },\r\n                React__default['default'].createElement(Spinner, null))),\r\n            !isLoading && objectUrl != null && fileName != null && (React__default['default'].createElement(\"div\", { className: styles$6.imagePreview },\r\n                React__default['default'].createElement(\"div\", { className: styles$6.title }, fileName),\r\n                React__default['default'].createElement(\"img\", { src: objectUrl, alt: intl.formatMessage({ id: 'jmix.imagePreview.alt' }), className: styles$6.image })))));\r\n    }\r\n}\r\nconst component = reactIntl.injectIntl(ImagePreviewComponent);\n\nclass FileUploadComponent extends React__namespace.Component {\r\n    constructor(props) {\r\n        super(props);\r\n        this.fileList = [];\r\n        this.isPreviewVisible = false;\r\n        this.isPreviewLoading = false;\r\n        this.previewImageObjectUrl = null;\r\n        this.previewFileName = null;\r\n        this.reactionDisposers = [];\r\n        this.handleChange = mobx.action((info) => {\r\n            let fileList = [...info.fileList];\r\n            fileList = fileList.slice(-1); // Limit to a single file\r\n            if (info.file.status === 'error') {\r\n                antd.message.error(this.props.intl.formatMessage({ id: 'jmix.fileUpload.uploadFailed' }));\r\n            }\r\n            if (info.file.status === 'done') {\r\n                fileList[0].uid = info.file.response.fileRef;\r\n                fileList[0].name = jmixReactCore.extractName(info.file.response.fileRef);\r\n                fileList[0].url = '#';\r\n                if (this.props.onChange) {\r\n                    this.props.onChange(info.file.response.fileRef);\r\n                }\r\n            }\r\n            this.fileList = [...fileList];\r\n        });\r\n        this.handlePreview = mobx.action((_file) => {\r\n            var _a;\r\n            const { intl, mainStore } = this.props;\r\n            if (!((_a = mainStore === null || mainStore === void 0 ? void 0 : mainStore.security) === null || _a === void 0 ? void 0 : _a.canDownloadFiles())) {\r\n                antd.message.error(intl.formatMessage({ id: 'file.download.notAllowed' }));\r\n                return;\r\n            }\r\n            const fileName = this.fileList[0].name;\r\n            if (isImageFile(fileName)) {\r\n                // Open image in ImagePreview component\r\n                this.isPreviewVisible = true;\r\n                this.isPreviewLoading = true;\r\n                this.previewFileName = fileName;\r\n                jmixReactCore.getJmixREST().getFile(this.fileList[0].uid)\r\n                    .then(mobx.action((blob) => {\r\n                    this.previewImageObjectUrl = URL.createObjectURL(blob);\r\n                })).catch(mobx.action(() => {\r\n                    antd.message.error(intl.formatMessage({ id: 'jmix.file.downloadFailed' }));\r\n                    this.isPreviewVisible = false;\r\n                })).finally(mobx.action(() => {\r\n                    this.isPreviewLoading = false;\r\n                }));\r\n            }\r\n            else {\r\n                // Download file with correct filename\r\n                const hideDownloadMessage = antd.message.loading(intl.formatMessage({ id: 'jmix.file.downloading' }));\r\n                jmixReactCore.getJmixREST().getFile(this.fileList[0].uid).then((blob) => {\r\n                    const objectUrl = URL.createObjectURL(blob);\r\n                    jmixReactWeb.saveFile(objectUrl, fileName);\r\n                    URL.revokeObjectURL(objectUrl);\r\n                }).catch(() => {\r\n                    antd.message.error(intl.formatMessage({ id: 'jmix.file.downloadFailed' }));\r\n                }).finally(() => {\r\n                    hideDownloadMessage();\r\n                });\r\n            }\r\n        });\r\n        this.handleRemove = mobx.action((_file) => {\r\n            this.fileList = [];\r\n            if (this.props.onChange) {\r\n                this.props.onChange(null);\r\n            }\r\n        });\r\n        this.handleClosePreview = mobx.action(() => {\r\n            this.isPreviewVisible = false;\r\n            if (this.previewImageObjectUrl) {\r\n                URL.revokeObjectURL(this.previewImageObjectUrl);\r\n            }\r\n            this.previewImageObjectUrl = null;\r\n            this.previewFileName = null;\r\n        });\r\n        this.dropArea = (mainStore) => {\r\n            const { disabled, render, value } = this.props;\r\n            if (disabled || !mainStore.security.canUploadFiles()) {\r\n                return null;\r\n            }\r\n            if (render != null) {\r\n                return render(value);\r\n            }\r\n            return React__namespace.createElement(FileUploadDropArea, { fileRef: value });\r\n        };\r\n        mobx.makeObservable(this, {\r\n            fileList: mobx.observable,\r\n            isPreviewVisible: mobx.observable,\r\n            isPreviewLoading: mobx.observable,\r\n            previewImageObjectUrl: mobx.observable,\r\n            previewFileName: mobx.observable\r\n        });\r\n    }\r\n    componentDidMount() {\r\n        this.reactionDisposers.push(mobx.reaction(() => this.props.value, () => {\r\n            if (this.props.value) {\r\n                this.fileList = [{\r\n                        uid: this.props.value,\r\n                        name: jmixReactCore.extractName(this.props.value),\r\n                        size: 0,\r\n                        type: '',\r\n                        url: '#',\r\n                    }];\r\n            }\r\n        }));\r\n    }\r\n    componentWillUnmount() {\r\n        this.reactionDisposers.forEach(disposer => disposer());\r\n        mobx.runInAction(() => {\r\n            if (this.previewImageObjectUrl != null) {\r\n                URL.revokeObjectURL(this.previewImageObjectUrl);\r\n            }\r\n        });\r\n    }\r\n    render() {\r\n        var _a, _b;\r\n        const { mainStore, disabled, enableFullWidth, uploadProps: passedUploadProps } = this.props;\r\n        if (mainStore == null || !mainStore.security.isDataLoaded) {\r\n            return React__namespace.createElement(antd.Spin, { size: \"small\" });\r\n        }\r\n        if (!mainStore.security.canUploadFiles() && this.fileList.length === 0) {\r\n            // To avoid empty field\r\n            return (React__namespace.createElement(\"div\", { className: styles$8.noFileMessage },\r\n                React__namespace.createElement(reactIntl.FormattedMessage, { id: \"file.noFile\" })));\r\n        }\r\n        const defaultUploadProps = {\r\n            action: jmixReactCore.getJmixREST().getFileUploadURL(),\r\n            headers: { 'Authorization': 'Bearer ' + jmixReactCore.getJmixREST().restApiToken },\r\n            fileList: this.fileList,\r\n            onChange: this.handleChange,\r\n            onPreview: this.handlePreview,\r\n            onRemove: this.handleRemove,\r\n            disabled,\r\n            showUploadList: {\r\n                showDownloadIcon: false,\r\n                showPreviewIcon: true,\r\n                showRemoveIcon: true,\r\n            },\r\n            className: classnames({\r\n                [styles$8.fileUploadFullWidth]: enableFullWidth\r\n            })\r\n        };\r\n        const mergedUploadProps = Object.assign(Object.assign({}, defaultUploadProps), passedUploadProps);\r\n        return (React__namespace.createElement(React__namespace.Fragment, null,\r\n            React__namespace.createElement(antd.Upload, Object.assign({}, mergedUploadProps), this.dropArea(mainStore)),\r\n            React__namespace.createElement(component, { isVisible: this.isPreviewVisible, isLoading: this.isPreviewLoading, objectUrl: (_a = this.previewImageObjectUrl) !== null && _a !== void 0 ? _a : undefined, fileName: (_b = this.previewFileName) !== null && _b !== void 0 ? _b : undefined, onClose: this.handleClosePreview })));\r\n    }\r\n}\r\nFileUploadComponent.defaultProps = {\r\n    enableFullWidth: true\r\n};\r\nfunction FileUploadDropArea(props) {\r\n    return props.fileRef\r\n        ? (React__namespace.createElement(\"div\", { className: styles$8.fileDropArea },\r\n            React__namespace.createElement(icons.UploadOutlined, { className: styles$8.replaceIcon }),\r\n            React__namespace.createElement(\"span\", { className: styles$8.replaceText },\r\n                React__namespace.createElement(reactIntl.FormattedMessage, { id: 'jmix.fileUpload.replace' }))))\r\n        : (React__namespace.createElement(\"div\", { className: styles$8.fileDropArea },\r\n            React__namespace.createElement(icons.UploadOutlined, { className: styles$8.uploadIcon }),\r\n            React__namespace.createElement(\"div\", { className: styles$8.uploadText },\r\n                React__namespace.createElement(reactIntl.FormattedMessage, { id: 'jmix.fileUpload.upload' }))));\r\n}\r\nfunction isImageFile(fileName) {\r\n    return !!fileName.match('.*(jpg|jpeg|gif|png)$');\r\n}\r\nconst fileUpload = reactIntl.injectIntl(jmixReactCore.injectMainStore(mobxReact.observer(FileUploadComponent)));\n\nconst EntitySelectField = mobxReact.observer((props) => {\r\n    const { optionsContainer, associationOptions } = props, rest = __rest(props, [\"optionsContainer\", \"associationOptions\"]);\r\n    let options;\r\n    if (associationOptions != null) {\r\n        options = associationOptions;\r\n    }\r\n    else if (optionsContainer != null) {\r\n        options = optionsContainer\r\n            .items\r\n            .filter((e) => e.id != null)\r\n            .map((e) => ({ id: e.id, instanceName: e._instanceName }));\r\n    }\r\n    return (React__namespace.createElement(antd.Select, Object.assign({}, rest, { loading: optionsContainer && optionsContainer.status === \"LOADING\" }), options && options.map(option => {\r\n        var _a;\r\n        return React__namespace.createElement(antd.Select.Option, { value: jmixRest.getStringId(option.id), key: jmixRest.getStringId(option.id) }, (_a = option._instanceName) !== null && _a !== void 0 ? _a : option.id);\r\n    })));\r\n});\n\nvar css_248z$6 = \".InputNumber-module_inputNumberField__25EFb {\\n  width: 100%;\\n}\\n\";\nvar styles$5 = {\"inputNumberField\":\"InputNumber-module_inputNumberField__25EFb\"};\nstyleInject(css_248z$6);\n\nconst IntegerInput = React.forwardRef((props, ref) => {\r\n    return (React__namespace.createElement(antd.InputNumber, Object.assign({ min: JAVA_INTEGER_MIN_VALUE, max: JAVA_INTEGER_MAX_VALUE, precision: 0, className: styles$5.inputNumberField, \r\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n        // @ts-ignore ref is missing in typings, but it does actually work\r\n        ref: ref }, props)));\r\n});\r\nconst JAVA_INTEGER_MIN_VALUE = -2147483648;\r\nconst JAVA_INTEGER_MAX_VALUE = 2147483647;\n\nconst DoubleInput = React.forwardRef((props, ref) => {\r\n    return (React__namespace.createElement(antd.InputNumber, Object.assign({ className: styles$5.inputNumberField, \r\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n        // @ts-ignore ref is missing in typings, but it does actually work\r\n        ref: ref }, props)));\r\n});\n\nconst LongInput = React.forwardRef((props, ref) => {\r\n    return (React__namespace.createElement(antd.InputNumber, Object.assign({ className: styles$5.inputNumberField, precision: 0, \r\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n        // @ts-ignore ref is missing in typings, but it does actually work\r\n        ref: ref, stringMode: true }, props)));\r\n});\n\n// TODO Add validation of precision/scale https://github.com/cuba-platform/frontend/issues/100\r\nconst BigDecimalInput = React.forwardRef((props, ref) => {\r\n    return (React__namespace.createElement(antd.InputNumber, Object.assign({ className: styles$5.inputNumberField, \r\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n        // @ts-ignore ref is missing in typings, but it does actually work\r\n        ref: ref, stringMode: true }, props)));\r\n});\n\nconst InputWithMask = React.forwardRef((props, ref) => {\r\n    const { size, prefix, value } = props, rest = __rest(props, [\"size\", \"prefix\", \"value\"]);\r\n    // ReactInputMask will not pass `value` to the Input if it's value is null\r\n    const passedValue = value ? value : '';\r\n    return (React__default['default'].createElement(ReactInputMask__default['default'], Object.assign({ value: passedValue }, rest), (inputProps) => {\r\n        return React__default['default'].createElement(antd.Input, Object.assign({ ref: ref }, inputProps, { prefix: prefix, size: size }));\r\n    }));\r\n});\n\n// More strict validation would be:\r\n//\r\n// <InputWithMask mask='xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx'\r\n//                formatChars={{\r\n//                  'x': '[0-9a-fA-F]',\r\n//                  'M': '[0-5]', // UUID version\r\n//                  'N': '[089ab]', // UUID variant\r\n//                }}\r\n//\r\n// However, we are using relaxed validation rules as Backoffice UI allows to create UUIDs with invalid\r\n// versions and variants (https://github.com/cuba-platform/cuba/issues/2867)\r\n// TODO Once https://github.com/cuba-platform/cuba/issues/2867 is fixed, determine the rule dynamically based on Platform version.\r\nconst UuidInput = React.forwardRef((props, ref) => {\r\n    return (React__default['default'].createElement(InputWithMask, Object.assign({ mask: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', formatChars: {\r\n            'x': '[0-9a-fA-F]'\r\n        }, ref: ref }, props)));\r\n});\n\nvar css_248z$5 = \".CharInput-module_charInputField__Sj1GL {\\n  max-width: 55px;\\n}\\n\";\nvar styles$4 = {\"charInputField\":\"CharInput-module_charInputField__Sj1GL\"};\nstyleInject(css_248z$5);\n\nconst CharInput = React.forwardRef((props, ref) => {\r\n    const { className = '' } = props, rest = __rest(props, [\"className\"]);\r\n    return (React__default['default'].createElement(antd.Input, Object.assign({}, rest, { ref: ref, maxLength: 1, className: classnames(className, styles$4.charInputField) })));\r\n});\n\nvar interopRequireDefault = createCommonjsModule(function (module) {\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n});\n\nunwrapExports(interopRequireDefault);\n\nvar warning_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.warning = warning;\nexports.note = note;\nexports.resetWarned = resetWarned;\nexports.call = call;\nexports.warningOnce = warningOnce;\nexports.noteOnce = noteOnce;\nexports.default = void 0;\n\n/* eslint-disable no-console */\nvar warned = {};\n\nfunction warning(valid, message) {\n  // Support uglify\n  if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n    console.error(\"Warning: \".concat(message));\n  }\n}\n\nfunction note(valid, message) {\n  // Support uglify\n  if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n    console.warn(\"Note: \".concat(message));\n  }\n}\n\nfunction resetWarned() {\n  warned = {};\n}\n\nfunction call(method, valid, message) {\n  if (!valid && !warned[message]) {\n    method(false, message);\n    warned[message] = true;\n  }\n}\n\nfunction warningOnce(valid, message) {\n  call(warning, valid, message);\n}\n\nfunction noteOnce(valid, message) {\n  call(note, valid, message);\n}\n\nvar _default = warningOnce;\n/* eslint-enable */\n\nexports.default = _default;\n});\n\nunwrapExports(warning_1);\nwarning_1.warning;\nwarning_1.note;\nwarning_1.resetWarned;\nwarning_1.call;\nwarning_1.warningOnce;\nwarning_1.noteOnce;\n\nvar dayjs = createCommonjsModule(function (module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _dayjs = interopRequireDefault(dayjs_min);\n\n\n\nvar _weekday = interopRequireDefault(weekday);\n\nvar _localeData = interopRequireDefault(localeData);\n\nvar _weekOfYear = interopRequireDefault(weekOfYear);\n\nvar _weekYear = interopRequireDefault(weekYear);\n\nvar _advancedFormat = interopRequireDefault(advancedFormat);\n\nvar _customParseFormat = interopRequireDefault(customParseFormat);\n\n_dayjs.default.extend(_customParseFormat.default);\n\n_dayjs.default.extend(_advancedFormat.default);\n\n_dayjs.default.extend(_weekday.default);\n\n_dayjs.default.extend(_localeData.default);\n\n_dayjs.default.extend(_weekOfYear.default);\n\n_dayjs.default.extend(_weekYear.default);\n\n_dayjs.default.extend(function (o, c) {\n  // todo support Wo (ISO week)\n  var proto = c.prototype;\n  var oldFormat = proto.format;\n\n  proto.format = function f(formatStr) {\n    var str = (formatStr || '').replace('Wo', 'wo');\n    return oldFormat.bind(this)(str);\n  };\n});\n\nvar localeMap = {\n  en_GB: 'en-gb',\n  en_US: 'en',\n  zh_CN: 'zh-cn',\n  zh_TW: 'zh-tw'\n};\n\nvar parseLocale = function parseLocale(locale) {\n  var mapLocale = localeMap[locale];\n  return mapLocale || locale.split('_')[0];\n};\n\nvar parseNoMatchNotice = function parseNoMatchNotice() {\n  /* istanbul ignore next */\n  (0, warning_1.noteOnce)(false, 'Not match any format. Please help to fire a issue about this.');\n};\n\nvar generateConfig = {\n  // get\n  getNow: function getNow() {\n    return (0, _dayjs.default)();\n  },\n  getFixedDate: function getFixedDate(string) {\n    return (0, _dayjs.default)(string, 'YYYY-MM-DD');\n  },\n  getEndDate: function getEndDate(date) {\n    return date.endOf('month');\n  },\n  getWeekDay: function getWeekDay(date) {\n    var clone = date.locale('en');\n    return clone.weekday() + clone.localeData().firstDayOfWeek();\n  },\n  getYear: function getYear(date) {\n    return date.year();\n  },\n  getMonth: function getMonth(date) {\n    return date.month();\n  },\n  getDate: function getDate(date) {\n    return date.date();\n  },\n  getHour: function getHour(date) {\n    return date.hour();\n  },\n  getMinute: function getMinute(date) {\n    return date.minute();\n  },\n  getSecond: function getSecond(date) {\n    return date.second();\n  },\n  // set\n  addYear: function addYear(date, diff) {\n    return date.add(diff, 'year');\n  },\n  addMonth: function addMonth(date, diff) {\n    return date.add(diff, 'month');\n  },\n  addDate: function addDate(date, diff) {\n    return date.add(diff, 'day');\n  },\n  setYear: function setYear(date, year) {\n    return date.year(year);\n  },\n  setMonth: function setMonth(date, month) {\n    return date.month(month);\n  },\n  setDate: function setDate(date, num) {\n    return date.date(num);\n  },\n  setHour: function setHour(date, hour) {\n    return date.hour(hour);\n  },\n  setMinute: function setMinute(date, minute) {\n    return date.minute(minute);\n  },\n  setSecond: function setSecond(date, second) {\n    return date.second(second);\n  },\n  // Compare\n  isAfter: function isAfter(date1, date2) {\n    return date1.isAfter(date2);\n  },\n  isValidate: function isValidate(date) {\n    return date.isValid();\n  },\n  locale: {\n    getWeekFirstDay: function getWeekFirstDay(locale) {\n      return (0, _dayjs.default)().locale(parseLocale(locale)).localeData().firstDayOfWeek();\n    },\n    getWeekFirstDate: function getWeekFirstDate(locale, date) {\n      return date.locale(parseLocale(locale)).weekday(0);\n    },\n    getWeek: function getWeek(locale, date) {\n      return date.locale(parseLocale(locale)).week();\n    },\n    getShortWeekDays: function getShortWeekDays(locale) {\n      return (0, _dayjs.default)().locale(parseLocale(locale)).localeData().weekdaysMin();\n    },\n    getShortMonths: function getShortMonths(locale) {\n      return (0, _dayjs.default)().locale(parseLocale(locale)).localeData().monthsShort();\n    },\n    format: function format(locale, date, _format) {\n      return date.locale(parseLocale(locale)).format(_format);\n    },\n    parse: function parse(locale, text, formats) {\n      var localeStr = parseLocale(locale);\n\n      for (var i = 0; i < formats.length; i += 1) {\n        var format = formats[i];\n        var formatText = text;\n\n        if (format.includes('wo') || format.includes('Wo')) {\n          // parse Wo\n          var year = formatText.split('-')[0];\n          var weekStr = formatText.split('-')[1];\n          var firstWeek = (0, _dayjs.default)(year, 'YYYY').startOf('year').locale(localeStr);\n\n          for (var j = 0; j <= 52; j += 1) {\n            var nextWeek = firstWeek.add(j, 'week');\n\n            if (nextWeek.format('Wo') === weekStr) {\n              return nextWeek;\n            }\n          }\n\n          parseNoMatchNotice();\n          return null;\n        }\n\n        var date = (0, _dayjs.default)(formatText, format).locale(localeStr);\n\n        if (date.isValid()) {\n          return date;\n        }\n      }\n\n      if (text) {\n        parseNoMatchNotice();\n      }\n\n      return null;\n    }\n  }\n};\nvar _default = generateConfig;\nexports.default = _default;\n});\n\nvar dayjsGenerateConfig = unwrapExports(dayjs);\n\nconst DatePicker = generatePicker__default['default'](dayjsGenerateConfig);\n\nconst TimePicker = React__default['default'].forwardRef((props, ref) => {\r\n    return React__default['default'].createElement(DatePicker, Object.assign({}, props, { picker: \"time\", mode: undefined, ref: ref }));\r\n});\r\nTimePicker.displayName = 'TimePicker';\n\nvar css_248z$4 = \"/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\\n/* stylelint-disable no-duplicate-selectors */\\n/* stylelint-disable */\\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\\n.CompositionFields-module_upsertBtn__1xDOV {\\n  padding-right: 0;\\n  padding-left: 0;\\n}\\n.ant-form-item-has-error .CompositionFields-module_compositionField__3HwrW {\\n  border: solid 1px #ff4d4f;\\n}\\n\";\nvar styles$3 = {\"upsertBtn\":\"CompositionFields-module_upsertBtn__1xDOV\",\"compositionField\":\"CompositionFields-module_compositionField__3HwrW\"};\nstyleInject(css_248z$4);\n\nconst CompositionO2OField = mobxReact.observer((props) => {\r\n    const { entityName, value, onChange } = props;\r\n    const screens = React.useContext(jmixReactCore.ScreensContext);\r\n    const metadata = jmixReactCore.useMetadata();\r\n    const intl = reactIntl.useIntl();\r\n    const [dirty, setDirty] = React.useState(false);\r\n    const onOpenScreenError = useOpenScreenErrorCallback();\r\n    const handleUpsertBtnClick = React.useCallback(() => {\r\n        // Creating a nested entity\r\n        if (value == null) {\r\n            jmixReactWeb.openEntityEditorScreen({\r\n                screens,\r\n                entityName,\r\n                onCommit: createOnCommitCallback(setDirty, onChange),\r\n                submitBtnCaption: 'common.ok',\r\n                onOpenScreenError\r\n            });\r\n            return;\r\n        }\r\n        // Editing a nested entity\r\n        jmixReactWeb.openEntityEditorScreen({\r\n            screens,\r\n            entityName,\r\n            onCommit: createOnCommitCallback(setDirty, onChange),\r\n            submitBtnCaption: 'common.ok',\r\n            entityInstance: ant_to_jmixFront(value, entityName, metadata),\r\n            onOpenScreenError\r\n        });\r\n    }, [screens, entityName, value, onChange, setDirty]);\r\n    const handleDeleteBtnClick = React.useCallback(() => {\r\n        if (onChange != null) {\r\n            showDeleteEntityDialog(() => onChange(undefined), intl, value);\r\n        }\r\n    }, [onChange, intl, value]);\r\n    return (React__default['default'].createElement(\"span\", { className: styles$3.compositionField },\r\n        React__default['default'].createElement(antd.Button, { type: 'link', onClick: handleUpsertBtnClick, className: styles$3.upsertBtn },\r\n            React__default['default'].createElement(UpsertBtnTitle, { value: value, dirty: dirty })),\r\n        value != null &&\r\n            React__default['default'].createElement(icons.DeleteOutlined, { onClick: handleDeleteBtnClick })));\r\n});\r\nconst UpsertBtnTitle = ({ value, dirty }) => {\r\n    var _a;\r\n    if (value == null) {\r\n        // When there is no nested entity the button will read \"Create a new entity\"\r\n        return (React__default['default'].createElement(\"span\", null,\r\n            React__default['default'].createElement(icons.PlusOutlined, null),\r\n            React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.nestedEntityField.create' })));\r\n    }\r\n    // TODO get rid of `dirty` flag and put the client-side constructed name into _instanceName\r\n    if (dirty) {\r\n        // When the nested entity has been created/edited but parent entity hasn't been saved yet,\r\n        // the button will read \"(unsaved entity)\".\r\n        // The reason for that is that on frontend we don't know how to construct `_instanceName`\r\n        // from the changed attributes.\r\n        // In future we will need to replace this with a code that will construct `_instanceName`.\r\n        // TODO https://github.com/Haulmont/jmix-frontend/issues/289\r\n        return React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'common.unsavedEntity' });\r\n    }\r\n    // Otherwise the button will contain _instanceName or, when it is missing, the id\r\n    const fetchedValue = value;\r\n    return (React__default['default'].createElement(React__default['default'].Fragment, null, (_a = fetchedValue._instanceName) !== null && _a !== void 0 ? _a : jmixReactCore.toIdString(fetchedValue.id)));\r\n};\r\nfunction createOnCommitCallback(setDirty, onChange) {\r\n    if (onChange != null) {\r\n        return (value) => {\r\n            setDirty(true);\r\n            onChange(value);\r\n        };\r\n    }\r\n    return undefined;\r\n}\n\nconst CompositionO2MField = mobxReact.observer((props) => {\r\n    var _a;\r\n    const { value, entityName, onChange } = props;\r\n    const metadata = jmixReactCore.useMetadata();\r\n    const screens = React.useContext(jmixReactCore.ScreensContext);\r\n    const onOpenScreenError = useOpenScreenErrorCallback();\r\n    const entityList = (_a = value === null || value === void 0 ? void 0 : value.map(item => ant_to_jmixFront(item, entityName, metadata))) !== null && _a !== void 0 ? _a : [];\r\n    const handleClick = React.useCallback(() => {\r\n        jmixReactWeb.openEntityListScreen({\r\n            entityName,\r\n            entityList,\r\n            screens,\r\n            onEntityListChange: onChange,\r\n            onOpenScreenError\r\n        });\r\n    }, [entityName, entityList, screens, onChange]);\r\n    return (React__default['default'].createElement(antd.Button, { type: 'link', onClick: handleClick, className: classnames(styles$3.compositionField, styles$3.upsertBtn) },\r\n        React__default['default'].createElement(BtnTitle, { value: value })));\r\n});\r\nconst BtnTitle = ({ value }) => {\r\n    const intl = reactIntl.useIntl();\r\n    if (value == null || value.length === 0) {\r\n        return (React__default['default'].createElement(\"span\", null,\r\n            React__default['default'].createElement(icons.PlusOutlined, null),\r\n            React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.nestedEntityField.addEntities' })));\r\n    }\r\n    return (React__default['default'].createElement(React__default['default'].Fragment, null, constructTitle(value, intl)));\r\n};\r\nfunction constructTitle(entityList, intl) {\r\n    let title = '';\r\n    if (entityList.length > 0) {\r\n        title += getDisplayedName(entityList[0], intl);\r\n    }\r\n    if (entityList.length > 1) {\r\n        title += ', ';\r\n        title += getDisplayedName(entityList[1], intl);\r\n    }\r\n    if (entityList.length > 2) {\r\n        title += intl.formatMessage({ id: 'jmix.nestedEntityField.andXMore' }, { quantity: entityList.length - 2 });\r\n    }\r\n    return title;\r\n}\r\nfunction getDisplayedName(entity, intl) {\r\n    if (entity._instanceName != null) {\r\n        return entity._instanceName;\r\n    }\r\n    if (entity.id != null && !jmixReactCore.isTempId(jmixReactCore.toIdString(entity.id))) {\r\n        return jmixReactCore.toIdString(entity.id);\r\n    }\r\n    return intl.formatMessage({ id: 'common.unsavedEntity' });\r\n}\n\n/**\r\n * An Ant Design `<Form>` validation rule that always passes.\r\n */\r\nconst passthroughRule = {\r\n    validator: () => Promise.resolve()\r\n};\n\n// noinspection JSUnusedGlobalSymbols\r\nconst Field = mobxReact.observer((props) => {\r\n    const { entityName, propertyName, optionsContainer, associationOptions, componentProps, parentEntityInstanceId, disabled, formItemProps } = props;\r\n    const metadata = jmixReactCore.useMetadata();\r\n    const combinedFormItemProps = Object.assign(Object.assign({}, getDefaultFormItemProps(metadata.entities, entityName, propertyName)), formItemProps);\r\n    if (combinedFormItemProps.rules == null) {\r\n        combinedFormItemProps.rules = [];\r\n    }\r\n    // Add a passthrough rule. This will clear server-side errors on `validateTrigger` without having to manually set errors on fields.\r\n    combinedFormItemProps.rules.push(passthroughRule);\r\n    return (React__namespace.createElement(FieldPermissionContainer, { entityName: entityName, propertyName: propertyName, renderField: (isReadOnly) => {\r\n            return React__namespace.createElement(antd.Form.Item, Object.assign({}, combinedFormItemProps),\r\n                React__namespace.createElement(FormField, Object.assign({ entityName: entityName, propertyName: propertyName, disabled: isReadOnly || disabled, optionsContainer: optionsContainer, associationOptions: associationOptions, parentEntityInstanceId: parentEntityInstanceId }, componentProps)));\r\n        } }));\r\n});\r\nfunction getDefaultFormItemProps(entitiesMetadata, entityName, propertyName) {\r\n    const formItemProps = {\r\n        name: propertyName,\r\n        label: React__namespace.createElement(jmixReactWeb.Msg, { entityName: entityName, propertyName: propertyName })\r\n    };\r\n    const propertyInfo = jmixReactCore.getPropertyInfo(entitiesMetadata, entityName, propertyName);\r\n    // TODO we should probably move it into generator template https://github.com/Haulmont/jmix-frontend/issues/342\r\n    if ((propertyInfo === null || propertyInfo === void 0 ? void 0 : propertyInfo.type) === 'UUID') {\r\n        formItemProps.rules = [\r\n            { pattern: jmixReactWeb.uuidPattern }\r\n        ];\r\n        formItemProps.validateTrigger = 'onSubmit';\r\n    }\r\n    return formItemProps;\r\n}\r\n// forwardRef is required to avoid a console warning\r\n// as Form.Item will attempt to pass a ref\r\nconst FormField = jmixReactCore.injectMainStore(mobxReact.observer(React__namespace.forwardRef((props, _ref) => {\r\n    var _a, _b;\r\n    const { entityName, propertyName, optionsContainer, associationOptions, mainStore } = props, rest = __rest(props, [\"entityName\", \"propertyName\", \"optionsContainer\", \"associationOptions\", \"mainStore\"]);\r\n    const metadata = jmixReactCore.useMetadata();\r\n    if (mainStore == null) {\r\n        return React__namespace.createElement(antd.Input, Object.assign({}, rest));\r\n    }\r\n    const propertyInfo = jmixReactCore.getPropertyInfo(metadata.entities, entityName, propertyName);\r\n    if (propertyInfo == null) {\r\n        return React__namespace.createElement(antd.Input, Object.assign({}, rest));\r\n    }\r\n    if (jmixReactCore.isFileProperty(propertyInfo)) {\r\n        return React__namespace.createElement(fileUpload, Object.assign({}, rest));\r\n    }\r\n    switch (propertyInfo.attributeType) {\r\n        case 'ENUM':\r\n            return React__namespace.createElement(EnumField, Object.assign({ enumClass: propertyInfo.type, allowClear: getAllowClear(propertyInfo) }, rest));\r\n        case 'ASSOCIATION': {\r\n            const mode = getSelectMode(propertyInfo.cardinality);\r\n            return React__namespace.createElement(EntitySelectField, Object.assign({}, { mode, optionsContainer, associationOptions }, { allowClear: getAllowClear(propertyInfo) }, rest));\r\n        }\r\n        case 'COMPOSITION': {\r\n            const nestedEntityName = (_b = (_a = metadata.entities\r\n                .find((metaClass) => metaClass.entityName === entityName) // Find parent entity\r\n            ) === null || _a === void 0 ? void 0 : _a.properties.find((property) => property.name === propertyName) // Find the nested entity attribute\r\n            ) === null || _b === void 0 ? void 0 : _b.type; // Get nested entity name\r\n            if (nestedEntityName) {\r\n                if (propertyInfo.cardinality === 'ONE_TO_ONE') {\r\n                    return React__namespace.createElement(CompositionO2OField, Object.assign({ entityName: nestedEntityName }, rest));\r\n                }\r\n                if (propertyInfo.cardinality === 'ONE_TO_MANY') {\r\n                    return React__namespace.createElement(CompositionO2MField, Object.assign({ entityName: nestedEntityName }, rest));\r\n                }\r\n            }\r\n            return null;\r\n        }\r\n    }\r\n    switch (propertyInfo.type) {\r\n        case 'Boolean':\r\n            return React__namespace.createElement(antd.Checkbox, Object.assign({}, rest));\r\n        case 'Date':\r\n        case 'LocalDate':\r\n            return React__namespace.createElement(DatePicker, Object.assign({}, rest));\r\n        case 'DateTime':\r\n        case 'LocalDateTime':\r\n        case 'OffsetDateTime':\r\n            return React__namespace.createElement(DatePicker, Object.assign({ showTime: true }, rest));\r\n        case 'Time':\r\n        case 'LocalTime':\r\n        case 'OffsetTime':\r\n            return React__namespace.createElement(TimePicker, Object.assign({}, rest));\r\n        case 'Integer':\r\n            return React__namespace.createElement(IntegerInput, Object.assign({}, rest));\r\n        case 'Double':\r\n            return React__namespace.createElement(DoubleInput, Object.assign({}, rest));\r\n        case 'Long':\r\n            return React__namespace.createElement(LongInput, Object.assign({}, rest));\r\n        case 'BigDecimal':\r\n            return React__namespace.createElement(BigDecimalInput, Object.assign({}, rest));\r\n        case 'UUID':\r\n            return React__namespace.createElement(UuidInput, Object.assign({}, rest));\r\n        case 'Character':\r\n            return React__namespace.createElement(CharInput, Object.assign({}, rest));\r\n    }\r\n    return React__namespace.createElement(antd.Input, Object.assign({}, rest));\r\n})));\r\nconst EnumField = mobxReact.observer((_a) => {\r\n    var { enumClass } = _a, rest = __rest(_a, [\"enumClass\"]);\r\n    const metadata = jmixReactCore.useMetadata();\r\n    const enumInfo = metadata.enums.find((enm) => enm.name === enumClass);\r\n    const enumValues = (enumInfo === null || enumInfo === void 0 ? void 0 : enumInfo.values) || [];\r\n    return React__namespace.createElement(antd.Select, Object.assign({}, rest), enumValues.map((enumValue) => React__namespace.createElement(antd.Select.Option, { key: enumValue.name, value: enumValue.name }, enumValue.caption)));\r\n});\r\nfunction getSelectMode(cardinality) {\r\n    if (cardinality === \"ONE_TO_MANY\" || cardinality === \"MANY_TO_MANY\") {\r\n        return \"multiple\";\r\n    }\r\n    return \"default\";\r\n}\r\nfunction getAllowClear(propertyInfo) {\r\n    return !propertyInfo.mandatory;\r\n}\r\nfunction getEntityProperties(entityName, fields, metadata) {\r\n    var _a;\r\n    const allProperties = ((_a = metadata.find((classInfo) => classInfo.entityName === entityName)) === null || _a === void 0 ? void 0 : _a.properties) || [];\r\n    return allProperties.filter((property) => {\r\n        return (fields.indexOf(property.name) > -1) && isDisplayedProperty(property);\r\n    });\r\n}\r\nfunction isDisplayedProperty(property) {\r\n    return !jmixReactCore.isOneToManyAssociation(property)\r\n        && !jmixReactCore.isByteArray(property);\r\n}\n\nconst GlobalErrorsAlert = (props) => {\r\n    const { serverValidationErrors } = props;\r\n    if ((serverValidationErrors === null || serverValidationErrors === void 0 ? void 0 : serverValidationErrors.globalErrors) == null || (serverValidationErrors === null || serverValidationErrors === void 0 ? void 0 : serverValidationErrors.globalErrors.length) === 0) {\r\n        return null;\r\n    }\r\n    return (React__default['default'].createElement(antd.Alert, { message: React__default['default'].createElement(jmixReactWeb.MultilineText, { lines: serverValidationErrors.globalErrors }), type: \"error\", style: { marginBottom: \"24px\" } }));\r\n};\n\nvar css_248z$3 = \"/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\\n/* stylelint-disable no-duplicate-selectors */\\n/* stylelint-disable */\\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\\n.DataTable-module_dataTable__2lTV1 > .DataTable-module_buttons__3rpH_ {\\n  display: flex;\\n  flex-wrap: wrap;\\n}\\n.DataTable-module_clearFilters__1FhE1 {\\n  margin-left: auto;\\n}\\n.DataTable-module_loader__2tBDn {\\n  position: absolute;\\n  left: 50%;\\n  top: 50%;\\n  transform: translate(-50%, -50%);\\n}\\n@media screen and (max-width: 575px) {\\n  .DataTable-module_clearFilters__1FhE1 {\\n    margin-left: 0;\\n  }\\n}\\n\";\nvar styles$2 = {\"dataTable\":\"DataTable-module_dataTable__2lTV1\",\"buttons\":\"DataTable-module_buttons__3rpH_\",\"clearFilters\":\"DataTable-module_clearFilters__1FhE1\",\"loader\":\"DataTable-module_loader__2tBDn\"};\nstyleInject(css_248z$3);\n\nconst DataTableCell = (props) => {\r\n    var _a;\r\n    const { type, attributeType, cardinality, name } = props.propertyInfo;\r\n    if (type === 'Boolean') {\r\n        return (React__default['default'].createElement(antd.Checkbox, { checked: props.text, disabled: true }));\r\n    }\r\n    if (attributeType === 'ENUM') {\r\n        return (React__default['default'].createElement(EnumCell, { text: props.text, propertyInfo: props.propertyInfo, mainStore: props.mainStore }));\r\n    }\r\n    if (attributeType === 'ASSOCIATION' && cardinality === 'MANY_TO_MANY') {\r\n        const associatedEntities = (_a = props.record) === null || _a === void 0 ? void 0 : _a[name];\r\n        const displayValue = associatedEntities === null || associatedEntities === void 0 ? void 0 : associatedEntities.map(entity => entity._instanceName).join(', ');\r\n        return (React__default['default'].createElement(\"div\", null, displayValue));\r\n    }\r\n    return (React__default['default'].createElement(\"div\", null, jmixReactWeb.toDisplayValue(props.text, props.propertyInfo)));\r\n};\r\nconst EnumCell = (props) => {\r\n    const metadata = jmixReactCore.useMetadata();\r\n    const caption = jmixReactCore.getEnumCaption(props.text, props.propertyInfo, metadata.enums);\r\n    return React__default['default'].createElement(\"div\", null, caption ? caption : '');\r\n};\n\nvar css_248z$2 = \"/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\\n/* stylelint-disable no-duplicate-selectors */\\n/* stylelint-disable */\\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\\n.DataTableFilter-module_tableFilter__1_Ano > .DataTableFilter-module_settings__2-w4w {\\n  max-width: 550px;\\n  padding: 12px;\\n}\\n.DataTableFilter-module_tableFilter__1_Ano > .DataTableFilter-module_settings__2-w4w > .DataTableFilter-module_filterControl__2amOR.DataTableFilter-module_complexEditor__1ANZ6 {\\n  margin-right: 0;\\n}\\n.DataTableFilter-module_tableFilter__1_Ano > .DataTableFilter-module_divider__2NwkF {\\n  margin: 0;\\n}\\n.DataTableFilter-module_tableFilter__1_Ano > .DataTableFilter-module_footer__2A0-D {\\n  display: flex;\\n  justify-content: left;\\n}\\n.DataTableFilter-module_tableFilter__1_Ano > .DataTableFilter-module_footer__2A0-D:first-child {\\n  margin-right: 12px;\\n}\\n.DataTableFilter-module_loader__oQmN0 {\\n  margin: 12px;\\n}\\n.DataTableFilter-module_filterInterval__2rAK3 {\\n  margin-top: 12px;\\n}\\n.DataTableFilter-module_controlsLayout__1aUn6 {\\n  display: flex;\\n}\\n.DataTableFilter-module_controlsLayout__1aUn6 > .DataTableFilter-module_filterControl__2amOR.DataTableFilter-module_propertyCaption__EI6Yi {\\n  white-space: nowrap;\\n}\\n.DataTableFilter-module_controlsLayout__1aUn6.DataTableFilter-module_noWrap__11dLN {\\n  white-space: nowrap;\\n}\\n.DataTableFilter-module_filterSelect__1yDQh {\\n  min-width: 60px;\\n}\\n.DataTableFilter-module_filterList__3qkPn {\\n  line-height: 32px;\\n  margin-top: 8px;\\n}\\n.DataTableFilter-module_filterListNew__22kNO {\\n  border-style: dashed;\\n}\\n.DataTableFilter-module_filterListInput__i_4z3.ant-row {\\n  display: inline-block;\\n}\\n@media screen and (max-width: 575px) {\\n  .DataTableFilter-module_controlsLayout__1aUn6 {\\n    flex-direction: column;\\n  }\\n  .DataTableFilter-module_controlsLayout__1aUn6 > .DataTableFilter-module_filterControl__2amOR .ant-time-picker,\\n  .DataTableFilter-module_controlsLayout__1aUn6 > .DataTableFilter-module_filterControl__2amOR .ant-calendar-picker,\\n  .DataTableFilter-module_controlsLayout__1aUn6 > .DataTableFilter-module_filterControl__2amOR .ant-input-number,\\n  .DataTableFilter-module_controlsLayout__1aUn6 > .DataTableFilter-module_filterControl__2amOR .ant-form-item-control,\\n  .DataTableFilter-module_controlsLayout__1aUn6 > .DataTableFilter-module_filterControl__2amOR.ant-row.ant-form-item {\\n    width: 100%;\\n    margin-right: 0;\\n  }\\n}\\n\";\nvar styles$1 = {\"tableFilter\":\"DataTableFilter-module_tableFilter__1_Ano\",\"settings\":\"DataTableFilter-module_settings__2-w4w\",\"filterControl\":\"DataTableFilter-module_filterControl__2amOR\",\"complexEditor\":\"DataTableFilter-module_complexEditor__1ANZ6\",\"divider\":\"DataTableFilter-module_divider__2NwkF\",\"footer\":\"DataTableFilter-module_footer__2A0-D\",\"loader\":\"DataTableFilter-module_loader__oQmN0\",\"filterInterval\":\"DataTableFilter-module_filterInterval__2rAK3\",\"controlsLayout\":\"DataTableFilter-module_controlsLayout__1aUn6\",\"propertyCaption\":\"DataTableFilter-module_propertyCaption__EI6Yi\",\"noWrap\":\"DataTableFilter-module_noWrap__11dLN\",\"filterSelect\":\"DataTableFilter-module_filterSelect__1yDQh\",\"filterList\":\"DataTableFilter-module_filterList__3qkPn\",\"filterListNew\":\"DataTableFilter-module_filterListNew__22kNO\",\"filterListInput\":\"DataTableFilter-module_filterListInput__i_4z3\"};\nstyleInject(css_248z$2);\n\nvar DataTableListEditorType;\r\n(function (DataTableListEditorType) {\r\n    DataTableListEditorType[\"TEXT\"] = \"text\";\r\n    DataTableListEditorType[\"CHAR\"] = \"char\";\r\n    DataTableListEditorType[\"INTEGER\"] = \"integer\";\r\n    DataTableListEditorType[\"DOUBLE\"] = \"double\";\r\n    DataTableListEditorType[\"LONG\"] = \"long\";\r\n    DataTableListEditorType[\"BIG_DECIMAL\"] = \"bigDecimal\";\r\n    DataTableListEditorType[\"DATE\"] = \"date\";\r\n    DataTableListEditorType[\"TIME\"] = \"time\";\r\n    DataTableListEditorType[\"DATETIME\"] = \"datetime\";\r\n    DataTableListEditorType[\"SELECT\"] = \"select\";\r\n})(DataTableListEditorType || (DataTableListEditorType = {}));\r\nclass DataTableListEditorComponent extends React__namespace.Component {\r\n    constructor(props) {\r\n        super(props);\r\n        this.inputVisible = false;\r\n        this.inputModel = {\r\n            caption: '',\r\n            value: undefined,\r\n        };\r\n        this.items = [];\r\n        this.availableOptions = [];\r\n        this.handleClose = (item) => {\r\n            this.items = this.items.filter(savedItem => savedItem !== item);\r\n            if (this.type === DataTableListEditorType.SELECT) {\r\n                this.availableOptions = [...this.availableOptions, item];\r\n            }\r\n            this.props.onChange(this.items.map((savedItem) => savedItem.value));\r\n        };\r\n        this.onTextInputChange = (event) => {\r\n            this.handleInputChange(event.target.value);\r\n        };\r\n        this.onInputBlurOrEnter = (event) => {\r\n            event.preventDefault();\r\n            this.handleInputConfirm();\r\n        };\r\n        this.onDatePickerChange = (date) => {\r\n            if (date != null) {\r\n                const normalizedDate = date.millisecond(0);\r\n                this.handleInputChange(jmixReactCore.applyDataTransferFormat(normalizedDate, this.props.propertyInfo.type));\r\n                this.handleInputConfirm();\r\n            }\r\n        };\r\n        this.onDateTimePickerChange = (date) => {\r\n            if (date != null) {\r\n                const { propertyInfo } = this.props;\r\n                const propertyType = propertyInfo.type;\r\n                const normalizedDate = date.millisecond(0);\r\n                this.handleInputChange(jmixReactCore.applyDataTransferFormat(normalizedDate, propertyType), jmixReactCore.applyDisplayFormat(normalizedDate, propertyType));\r\n                this.handleInputConfirm();\r\n            }\r\n        };\r\n        this.onTimePickerChange = (time, _timeString) => {\r\n            if (time != null) {\r\n                const normalizedTime = time.millisecond(0);\r\n                const timeParam = jmixReactCore.applyDataTransferFormat(normalizedTime, this.props.propertyInfo.type);\r\n                this.handleInputChange(timeParam);\r\n            }\r\n        };\r\n        this.onTimePickerOpenChange = (open) => {\r\n            if (!open && this.inputModel) {\r\n                this.handleInputConfirm();\r\n            }\r\n        };\r\n        this.onSelect = (value) => {\r\n            const caption = this.props.nestedEntityOptions\r\n                .find((option) => option.value === value)\r\n                .caption;\r\n            this.handleInputChange(value, caption);\r\n            this.availableOptions = this.availableOptions.filter((option) => {\r\n                return option.value !== value;\r\n            });\r\n            this.handleInputConfirm();\r\n        };\r\n        this.handleInputChange = (value, caption = value) => {\r\n            this.inputModel.value = value;\r\n            this.inputModel.caption = caption;\r\n        };\r\n        this.handleInputNumberChange = (value) => {\r\n            if (value != null) {\r\n                this.inputModel.value = value;\r\n                this.inputModel.caption = String(value);\r\n            }\r\n        };\r\n        this.handleInputConfirm = () => {\r\n            if (this.inputModel\r\n                && this.inputModel.value != null\r\n                && this.items.findIndex((item => item.value === this.inputModel.value)) === -1) {\r\n                this.items = [...this.items, Object.assign({}, this.inputModel)];\r\n                this.inputModel.value = undefined;\r\n                this.inputModel.caption = '';\r\n                this.inputVisible = false;\r\n                this.props.onChange(this.items.map((item) => item.value));\r\n            }\r\n        };\r\n        this.showInput = () => {\r\n            this.inputVisible = true;\r\n        };\r\n        this.trapFocus = (input) => {\r\n            if (input) {\r\n                input.focus();\r\n            }\r\n        };\r\n        mobx.makeObservable(this, {\r\n            inputVisible: mobx.observable,\r\n            inputModel: mobx.observable,\r\n            items: mobx.observable,\r\n            availableOptions: mobx.observable,\r\n            type: mobx.computed,\r\n            handleClose: mobx.action,\r\n            onTextInputChange: mobx.action,\r\n            onInputBlurOrEnter: mobx.action,\r\n            onDatePickerChange: mobx.action,\r\n            onDateTimePickerChange: mobx.action,\r\n            onTimePickerChange: mobx.action,\r\n            onTimePickerOpenChange: mobx.action,\r\n            onSelect: mobx.action,\r\n            handleInputChange: mobx.action,\r\n            handleInputNumberChange: mobx.action,\r\n            handleInputConfirm: mobx.action,\r\n            showInput: mobx.action,\r\n            input: mobx.computed,\r\n            selectFieldOptions: mobx.computed\r\n        });\r\n    }\r\n    get type() {\r\n        if (this.props.propertyInfo.attributeType === 'ASSOCIATION' || this.props.propertyInfo.attributeType === 'COMPOSITION') {\r\n            return DataTableListEditorType.SELECT;\r\n        }\r\n        else {\r\n            switch (this.props.propertyInfo.type) {\r\n                case 'String':\r\n                case 'UUID':\r\n                    return DataTableListEditorType.TEXT;\r\n                case 'Character':\r\n                    return DataTableListEditorType.CHAR;\r\n                case 'Integer':\r\n                    return DataTableListEditorType.INTEGER;\r\n                case 'Double':\r\n                    return DataTableListEditorType.DOUBLE;\r\n                case 'Long':\r\n                    return DataTableListEditorType.LONG;\r\n                case 'BigDecimal':\r\n                    return DataTableListEditorType.BIG_DECIMAL;\r\n                case 'Date':\r\n                case 'LocalDate':\r\n                    return DataTableListEditorType.DATE;\r\n                case 'Time':\r\n                case 'LocalTime':\r\n                case 'OffsetTime':\r\n                    return DataTableListEditorType.TIME;\r\n                case 'DateTime':\r\n                case 'LocalDateTime':\r\n                case 'OffsetDateTime':\r\n                    return DataTableListEditorType.DATETIME;\r\n                default:\r\n                    throw new Error(`Unexpected property type ${this.props.propertyInfo.type}`);\r\n            }\r\n        }\r\n    }\r\n    componentDidMount() {\r\n        this.availableOptions = [...this.props.nestedEntityOptions];\r\n    }\r\n    render() {\r\n        return (React__namespace.createElement(\"div\", { className: styles$1.filterList },\r\n            this.items.map((item) => {\r\n                return item.value != null\r\n                    ? React__namespace.createElement(ListItemTag, { item: item, onClose: this.handleClose, key: item.value })\r\n                    : null;\r\n            }),\r\n            this.inputVisible && (React__namespace.createElement(antd.Form.Item, { className: classnames(styles$1.filterListInput, styles$1.filterControl) }, this.input)),\r\n            !this.inputVisible && (React__namespace.createElement(antd.Tag, { onClick: this.showInput, color: 'blue', className: styles$1.filterListNew },\r\n                React__namespace.createElement(icons.PlusOutlined, null),\r\n                \"\\u00A0\",\r\n                React__namespace.createElement(reactIntl.FormattedMessage, { id: 'jmix.dataTable.listEditor.addItem' })))));\r\n    }\r\n    get input() {\r\n        switch (this.type) {\r\n            case DataTableListEditorType.TEXT:\r\n                return (React__namespace.createElement(\"div\", null,\r\n                    React__namespace.createElement(antd.Input, { ref: this.trapFocus, type: 'text', size: 'small', \"v-model\": this.inputModel.value, onChange: this.onTextInputChange, onBlur: this.onInputBlurOrEnter, onPressEnter: this.onInputBlurOrEnter })));\r\n            case DataTableListEditorType.CHAR:\r\n                return (React__namespace.createElement(\"div\", null,\r\n                    React__namespace.createElement(CharInput, { ref: this.trapFocus, type: 'text', size: 'small', \"v-model\": this.inputModel.value, onChange: this.onTextInputChange, onBlur: this.onInputBlurOrEnter, onPressEnter: this.onInputBlurOrEnter })));\r\n            case DataTableListEditorType.INTEGER:\r\n                return (React__namespace.createElement(\"div\", null,\r\n                    React__namespace.createElement(IntegerInput, Object.assign({}, this.getInputNumberProps()))));\r\n            case DataTableListEditorType.DOUBLE:\r\n                return (React__namespace.createElement(\"div\", null,\r\n                    React__namespace.createElement(DoubleInput, Object.assign({}, this.getInputNumberProps()))));\r\n            case DataTableListEditorType.LONG:\r\n                return (React__namespace.createElement(\"div\", null,\r\n                    React__namespace.createElement(LongInput, Object.assign({}, this.getInputNumberProps()))));\r\n            case DataTableListEditorType.BIG_DECIMAL:\r\n                return (React__namespace.createElement(\"div\", null,\r\n                    React__namespace.createElement(BigDecimalInput, Object.assign({}, this.getInputNumberProps()))));\r\n            case DataTableListEditorType.DATE:\r\n                return (React__namespace.createElement(\"div\", null,\r\n                    React__namespace.createElement(DatePicker, { onChange: this.onDatePickerChange })));\r\n            case DataTableListEditorType.TIME:\r\n                return (React__namespace.createElement(\"div\", null,\r\n                    React__namespace.createElement(TimePicker, { onChange: this.onTimePickerChange, onOpenChange: this.onTimePickerOpenChange })));\r\n            case DataTableListEditorType.DATETIME:\r\n                return (React__namespace.createElement(\"div\", null,\r\n                    React__namespace.createElement(DatePicker, { showTime: true, onChange: this.onDateTimePickerChange })));\r\n            case DataTableListEditorType.SELECT:\r\n                return (React__namespace.createElement(\"div\", null,\r\n                    React__namespace.createElement(antd.Select, { dropdownMatchSelectWidth: false, dropdownClassName: `cuba-value-dropdown-${this.props.id}`, className: styles$1.filterSelect, onSelect: this.onSelect }, this.selectFieldOptions)));\r\n            default:\r\n                return jmixReactCore.assertNever('ListEditorType', this.type);\r\n        }\r\n    }\r\n    getInputNumberProps() {\r\n        return {\r\n            ref: this.trapFocus,\r\n            type: 'text',\r\n            size: 'small',\r\n            value: this.inputModel.value,\r\n            onChange: this.handleInputNumberChange,\r\n            onBlur: this.onInputBlurOrEnter,\r\n            onPressEnter: this.onInputBlurOrEnter,\r\n        };\r\n    }\r\n    get selectFieldOptions() {\r\n        return this.availableOptions\r\n            .filter(option => option.value != null)\r\n            .map((option) => {\r\n            return (React__namespace.createElement(antd.Select.Option, { title: option.caption, value: option.value, key: option.value, className: `cuba-filter-value-${option.value}` }, option.caption));\r\n        });\r\n    }\r\n}\r\nfunction ListItemTag(props) {\r\n    const { item, onClose } = props;\r\n    const isLong = item.caption.length > 20;\r\n    const tag = (React__namespace.createElement(antd.Tag, { closable: true, onClose: () => onClose(item) }, isLong ? `${item.caption.substr(0, 20)}...` : item.caption));\r\n    return isLong ? (React__namespace.createElement(antd.Tooltip, { title: item.caption }, tag)) : (tag);\r\n}\r\nconst DataTableListEditor = mobxReact.observer(DataTableListEditorComponent);\n\nconst selectMinDateForInterval = (mode, numberOfUnits, timeUnit, includeCurrent) => {\r\n    if (mode === 'last' && includeCurrent) {\r\n        return dayjs_min()\r\n            .subtract(numberOfUnits - 1, timeUnit)\r\n            .startOf(timeUnit);\r\n    }\r\n    if (mode === 'last' && !includeCurrent) {\r\n        return dayjs_min()\r\n            .subtract(numberOfUnits, timeUnit)\r\n            .startOf(timeUnit);\r\n    }\r\n    if (mode === 'next' && includeCurrent) {\r\n        return dayjs_min()\r\n            .add(0, timeUnit)\r\n            .startOf(timeUnit);\r\n    }\r\n    if (mode === 'next' && !includeCurrent) {\r\n        return dayjs_min()\r\n            .add(1, timeUnit)\r\n            .startOf(timeUnit);\r\n    }\r\n    throw new Error(`Expected 'last' or 'next' mode, encountered '${mode}' mode`);\r\n};\r\nconst selectMaxDateForInterval = (mode, numberOfUnits, timeUnit, includeCurrent) => {\r\n    if (mode === 'last' && includeCurrent) {\r\n        return dayjs_min()\r\n            .subtract(0, timeUnit)\r\n            .endOf(timeUnit);\r\n    }\r\n    if (mode === 'last' && !includeCurrent) {\r\n        return dayjs_min()\r\n            .subtract(1, timeUnit)\r\n            .endOf(timeUnit);\r\n    }\r\n    if (mode === 'next' && includeCurrent) {\r\n        return dayjs_min()\r\n            .add(numberOfUnits - 1, timeUnit)\r\n            .endOf(timeUnit);\r\n    }\r\n    if (mode === 'next' && !includeCurrent) {\r\n        return dayjs_min()\r\n            .add(numberOfUnits, timeUnit)\r\n            .endOf(timeUnit);\r\n    }\r\n    throw new Error(`Expected 'last' or 'next' mode, encountered '${mode}' mode`);\r\n};\r\n/**\r\n * Creates a {@link TemporalInterval} based on input in form of \"last|next number of time units including|excluding current\".\r\n * For example, \"last 5 days including current day\".\r\n *\r\n * @param mode 'last' or 'next', will throw an error if a different value is encountered\r\n * @param numberOfUnits\r\n * @param timeUnit see {@link TimeUnit}\r\n * @param includeCurrent\r\n * @param propertyType\r\n */\r\nfunction determineLastNextXInterval(mode, numberOfUnits, timeUnit, includeCurrent, propertyType) {\r\n    return {\r\n        minDate: jmixReactCore.applyDataTransferFormat(selectMinDateForInterval(mode, numberOfUnits, timeUnit, includeCurrent), propertyType),\r\n        maxDate: jmixReactCore.applyDataTransferFormat(selectMaxDateForInterval(mode, numberOfUnits, timeUnit, includeCurrent), propertyType),\r\n    };\r\n}\r\n/**\r\n * Creates a {@link TemporalInterval} that corresponds to a given {@link PredefinedIntervalOption}\r\n *\r\n * @param option see {@link PredefinedIntervalOption}\r\n * @param propertyType\r\n */\r\nfunction determinePredefinedInterval(option, propertyType) {\r\n    let minDate;\r\n    let maxDate;\r\n    switch (option) {\r\n        case 'today':\r\n            minDate = dayjs_min().startOf('day');\r\n            maxDate = dayjs_min().endOf('day');\r\n            break;\r\n        case 'yesterday':\r\n            minDate = dayjs_min().subtract(1, 'days').startOf('day');\r\n            maxDate = dayjs_min().subtract(1, 'days').endOf('day');\r\n            break;\r\n        case 'tomorrow':\r\n            minDate = dayjs_min().add(1, 'days').startOf('day');\r\n            maxDate = dayjs_min().add(1, 'days').endOf('day');\r\n            break;\r\n        case 'lastMonth':\r\n            minDate = dayjs_min().subtract(1, 'months').startOf('month');\r\n            maxDate = dayjs_min().subtract(1, 'months').endOf('month');\r\n            break;\r\n        case 'thisMonth':\r\n            minDate = dayjs_min().startOf('month');\r\n            maxDate = dayjs_min().endOf('month');\r\n            break;\r\n        case 'nextMonth':\r\n            minDate = dayjs_min().add(1, 'months').startOf('month');\r\n            maxDate = dayjs_min().add(1, 'months').endOf('month');\r\n            break;\r\n        default:\r\n            throw new Error('Unexpected PredefinedIntervalOption' + option);\r\n    }\r\n    return {\r\n        minDate: jmixReactCore.applyDataTransferFormat(minDate, propertyType),\r\n        maxDate: jmixReactCore.applyDataTransferFormat(maxDate, propertyType)\r\n    };\r\n}\n\nvar css_248z$1 = \"/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\\n/* stylelint-disable no-duplicate-selectors */\\n/* stylelint-disable */\\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\\n.DataTableIntervalEditor-module_intervalModeSelect__3Tts9 {\\n  display: flex;\\n  flex-direction: column;\\n  padding: 6px;\\n  margin-top: 0;\\n  margin-right: 16px;\\n  border: dotted 1px #d9d9d9;\\n  border-radius: 2px;\\n}\\n.DataTableIntervalEditor-module_intervalPredefinedSelect__tY2BC {\\n  min-width: 100px;\\n}\\n.DataTableIntervalEditor-module_intervalIncludeCurrent__W1LZq {\\n  white-space: nowrap;\\n}\\n\";\nvar intervalStyles = {\"intervalModeSelect\":\"DataTableIntervalEditor-module_intervalModeSelect__3Tts9\",\"intervalPredefinedSelect\":\"DataTableIntervalEditor-module_intervalPredefinedSelect__tY2BC\",\"intervalIncludeCurrent\":\"DataTableIntervalEditor-module_intervalIncludeCurrent__W1LZq\"};\nstyleInject(css_248z$1);\n\nclass DataTableIntervalEditorComponent extends React__default['default'].Component {\r\n    constructor(props) {\r\n        super(props);\r\n        this.mode = 'last';\r\n        this.option = 'today';\r\n        this.numberOfUnits = 5;\r\n        this.timeUnit = 'days';\r\n        this.includeCurrent = false;\r\n        this.onModeChanged = (e) => {\r\n            this.mode = e.target.value;\r\n            this.props.onChange(this.interval);\r\n        };\r\n        this.onPredefinedIntervalOptionChanged = (option) => {\r\n            this.option = option;\r\n            this.props.onChange(this.interval);\r\n        };\r\n        this.onIntervalNumberChanged = (value) => {\r\n            if (value != null && typeof value === 'number' && isFinite(value)) {\r\n                this.numberOfUnits = value;\r\n                this.props.onChange(this.interval);\r\n            }\r\n        };\r\n        this.onIntervalUnitChanged = (unit) => {\r\n            this.timeUnit = unit;\r\n            this.props.onChange(this.interval);\r\n        };\r\n        this.onIncludeCurrentChanged = (includeCurrent) => {\r\n            this.includeCurrent = includeCurrent.target.checked;\r\n            this.props.onChange(this.interval);\r\n        };\r\n        mobx.makeObservable(this, {\r\n            mode: mobx.observable,\r\n            option: mobx.observable,\r\n            numberOfUnits: mobx.observable,\r\n            timeUnit: mobx.observable,\r\n            includeCurrent: mobx.observable,\r\n            interval: mobx.computed,\r\n            onModeChanged: mobx.action,\r\n            onPredefinedIntervalOptionChanged: mobx.action,\r\n            onIntervalNumberChanged: mobx.action,\r\n            onIntervalUnitChanged: mobx.action,\r\n            onIncludeCurrentChanged: mobx.action,\r\n            modeSelect: mobx.computed,\r\n            predefinedIntervals: mobx.computed,\r\n            intervalInput: mobx.computed\r\n        });\r\n    }\r\n    componentDidMount() {\r\n        this.props.onChange(this.interval);\r\n    }\r\n    get interval() {\r\n        return (this.mode === 'predefined')\r\n            ? determinePredefinedInterval(this.option, this.props.propertyType)\r\n            : determineLastNextXInterval(this.mode, this.numberOfUnits, this.timeUnit, this.includeCurrent, this.props.propertyType);\r\n    }\r\n    render() {\r\n        return (React__default['default'].createElement(\"div\", { className: classnames(styles$1.controlsLayout, styles$1.filterInterval) },\r\n            this.modeSelect,\r\n            (this.mode === 'predefined') ? this.predefinedIntervals : this.intervalInput));\r\n    }\r\n    get modeSelect() {\r\n        return (React__default['default'].createElement(antd.Radio.Group, { className: intervalStyles.intervalModeSelect, onChange: this.onModeChanged, value: this.mode },\r\n            React__default['default'].createElement(antd.Radio, { value: 'last' },\r\n                React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.dataTable.intervalEditor.last' })),\r\n            React__default['default'].createElement(antd.Radio, { value: 'next' },\r\n                React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.dataTable.intervalEditor.next' })),\r\n            React__default['default'].createElement(antd.Radio, { value: 'predefined' },\r\n                React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.dataTable.intervalEditor.predefined' }))));\r\n    }\r\n    get predefinedIntervals() {\r\n        return (React__default['default'].createElement(antd.Form.Item, { className: styles$1.filterControl, name: `${this.props.id}_predefined`, initialValue: this.option, rules: [{\r\n                    required: true,\r\n                    message: this.props.intl.formatMessage({ id: 'jmix.dataTable.validation.requiredField' })\r\n                }] },\r\n            React__default['default'].createElement(antd.Select, { onChange: this.onPredefinedIntervalOptionChanged, dropdownMatchSelectWidth: false, className: intervalStyles.intervalPredefinedSelect },\r\n                React__default['default'].createElement(antd.Select.Option, { value: 'today' },\r\n                    React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.dataTable.intervalEditor.today' })),\r\n                React__default['default'].createElement(antd.Select.Option, { value: 'yesterday' },\r\n                    React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.dataTable.intervalEditor.yesterday' })),\r\n                React__default['default'].createElement(antd.Select.Option, { value: 'tomorrow' },\r\n                    React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.dataTable.intervalEditor.tomorrow' })),\r\n                React__default['default'].createElement(antd.Select.Option, { value: 'lastMonth' },\r\n                    React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.dataTable.intervalEditor.lastMonth' })),\r\n                React__default['default'].createElement(antd.Select.Option, { value: 'thisMonth' },\r\n                    React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.dataTable.intervalEditor.thisMonth' })),\r\n                React__default['default'].createElement(antd.Select.Option, { value: 'nextMonth' },\r\n                    React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.dataTable.intervalEditor.nextMonth' })))));\r\n    }\r\n    get intervalInput() {\r\n        return (React__default['default'].createElement(\"div\", { className: styles$1.controlsLayout },\r\n            React__default['default'].createElement(antd.Form.Item, { key: `${this.props.id}.wrap.number`, className: styles$1.filterControl, name: `${this.props.id}_number`, initialValue: this.numberOfUnits, rules: [{\r\n                        required: true,\r\n                        message: this.props.intl.formatMessage({ id: 'jmix.dataTable.validation.requiredField' })\r\n                    }] },\r\n                React__default['default'].createElement(antd.InputNumber, { onChange: this.onIntervalNumberChanged })),\r\n            React__default['default'].createElement(antd.Form.Item, { key: `${this.props.id}.wrap.unit`, className: styles$1.filterControl },\r\n                React__default['default'].createElement(antd.Select, { defaultValue: this.timeUnit, onChange: this.onIntervalUnitChanged, dropdownMatchSelectWidth: false },\r\n                    React__default['default'].createElement(antd.Select.Option, { value: 'days' },\r\n                        React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.dataTable.intervalEditor.days' })),\r\n                    React__default['default'].createElement(antd.Select.Option, { value: 'hours' },\r\n                        React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.dataTable.intervalEditor.hours' })),\r\n                    React__default['default'].createElement(antd.Select.Option, { value: 'minutes' },\r\n                        React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.dataTable.intervalEditor.minutes' })),\r\n                    React__default['default'].createElement(antd.Select.Option, { value: 'months' },\r\n                        React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.dataTable.intervalEditor.months' })))),\r\n            React__default['default'].createElement(antd.Form.Item, { key: `${this.props.id}.wrap.includeCurrent`, className: styles$1.filterControl },\r\n                React__default['default'].createElement(antd.Checkbox, { onChange: this.onIncludeCurrentChanged, className: intervalStyles.intervalIncludeCurrent, defaultChecked: this.includeCurrent },\r\n                    React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.dataTable.intervalEditor.includingCurrent' })))));\r\n    }\r\n}\r\nconst dataTableIntervalEditor = reactIntl.injectIntl(mobxReact.observer(DataTableIntervalEditorComponent));\n\nfunction getDefaultFilterFormItemProps(intl, name) {\r\n    return {\r\n        name,\r\n        initialValue: null,\r\n        rules: [\r\n            {\r\n                required: true,\r\n                message: intl.formatMessage({ id: 'jmix.dataTable.validation.requiredField' })\r\n            }\r\n        ]\r\n    };\r\n}\r\nfunction wrapInFormItem(children, hasFeedback = false, formItemProps, additionalClassName) {\r\n    return (React__default['default'].createElement(antd.Form.Item, Object.assign({ hasFeedback: hasFeedback, className: classnames(styles$1.filterControl, additionalClassName) }, formItemProps), children));\r\n}\n\nvar OperatorGroup;\r\n(function (OperatorGroup) {\r\n    OperatorGroup[\"SINGLE_VALUE\"] = \"singleValue\";\r\n    OperatorGroup[\"LIST_VALUE\"] = \"listValue\";\r\n    OperatorGroup[\"LOGICAL_VALUE\"] = \"logicalValue\";\r\n    OperatorGroup[\"INTERVAL_VALUE\"] = \"intervalValue\";\r\n})(OperatorGroup || (OperatorGroup = {}));\r\nclass DataTableCustomFilterComponent extends React__default['default'].Component {\r\n    constructor(props) {\r\n        super(props);\r\n        this.handleFinish = () => {\r\n            if (this.value != null) {\r\n                const { filterProps } = this.props;\r\n                filterProps.setSelectedKeys([\r\n                    JSON.stringify({\r\n                        operator: this.operator,\r\n                        value: this.value\r\n                    })\r\n                ]);\r\n                filterProps.confirm();\r\n            }\r\n        };\r\n        this.setFormRef = (formInstance) => {\r\n            const { customFilterRef } = this.props;\r\n            if ((customFilterRef != null) && (formInstance != null)) {\r\n                customFilterRef(formInstance);\r\n            }\r\n            this.formInstance = formInstance;\r\n        };\r\n        this.resetFormFields = (newOperator) => {\r\n            if (this.formInstance != null) {\r\n                const fieldsToReset = [];\r\n                if (!isComplexOperator(newOperator)) {\r\n                    fieldsToReset.push(`${this.props.entityProperty}_input`);\r\n                }\r\n                else if (newOperator === '__inInterval') {\r\n                    fieldsToReset.push(`${this.props.entityProperty}_predefined`, `${this.props.entityProperty}_number`);\r\n                }\r\n                if (fieldsToReset.length > 0) {\r\n                    this.formInstance.resetFields(fieldsToReset);\r\n                }\r\n            }\r\n        };\r\n        this.initValue = (operator = this.operator) => {\r\n            if (operator === '_isNull') {\r\n                this.value = false;\r\n            }\r\n            else if (this.propertyInfoNN.type === 'Boolean') {\r\n                this.value = true;\r\n            }\r\n            else if (operator === '_in' || operator === '_notIn') {\r\n                this.value = [];\r\n            }\r\n            else {\r\n                this.value = undefined;\r\n            }\r\n        };\r\n        this.resetFilter = () => {\r\n            var _a;\r\n            const { filterProps } = this.props;\r\n            (_a = this.formInstance) === null || _a === void 0 ? void 0 : _a.resetFields();\r\n            this.operator = this.getDefaultOperator();\r\n            filterProps.clearFilters();\r\n        };\r\n        this.changeOperator = (newOperator) => {\r\n            this.operator = newOperator;\r\n        };\r\n        this.checkOperatorGroup = (newOperator, oldOperator) => {\r\n            const oldOperatorGroup = determineOperatorGroup(oldOperator);\r\n            const newOperatorGroup = determineOperatorGroup(newOperator);\r\n            if (oldOperatorGroup !== newOperatorGroup) {\r\n                this.resetFormFields(newOperator);\r\n                this.initValue(newOperator);\r\n            }\r\n        };\r\n        this.onTextInputChange = (event) => {\r\n            this.value = event.target.value;\r\n        };\r\n        this.onNumberInputChange = (value) => {\r\n            this.value = value;\r\n        };\r\n        this.onTemporalPickerChange = (value) => {\r\n            if (value != null) {\r\n                this.value = jmixReactCore.applyDataTransferFormat(value.millisecond(0), this.propertyInfoNN.type);\r\n            }\r\n        };\r\n        this.onYesNoSelectChange = (value) => {\r\n            this.value = (value === 'true');\r\n        };\r\n        this.onSelectChange = (value) => {\r\n            this.value = value;\r\n        };\r\n        this.getOperatorCaption = (operator) => {\r\n            switch (operator) {\r\n                // case '_doesNotContain':\r\n                case '_eq':\r\n                case '_neq':\r\n                case '_gt':\r\n                case '_gte':\r\n                case '_lt':\r\n                case '_lte':\r\n                case '_startsWith':\r\n                case '_endsWith':\r\n                case '_contains':\r\n                case '_in':\r\n                case '_notIn':\r\n                case '_isNull':\r\n                case '__inInterval':\r\n                    return this.props.intl.formatMessage({ id: 'jmix.dataTable.operator.' + operator });\r\n                default:\r\n                    throw new Error(`${this.errorContext} Unexpected condition operator ${operator} when trying to get operator caption`);\r\n            }\r\n        };\r\n        mobx.makeObservable(this, {\r\n            nestedEntityOptions: mobx.computed,\r\n            propertyCaption: mobx.computed,\r\n            propertyInfoNN: mobx.computed,\r\n            handleFinish: mobx.action,\r\n            resetFilter: mobx.action,\r\n            changeOperator: mobx.action,\r\n            onTextInputChange: mobx.action,\r\n            onNumberInputChange: mobx.action,\r\n            onTemporalPickerChange: mobx.action,\r\n            onYesNoSelectChange: mobx.action,\r\n            onSelectChange: mobx.action,\r\n            operatorTypeOptions: mobx.computed,\r\n            simpleFilterEditor: mobx.computed,\r\n            complexFilterEditor: mobx.computed,\r\n            conditionInput: mobx.computed,\r\n            textInputField: mobx.computed,\r\n            charInputField: mobx.computed,\r\n            uuidInputField: mobx.computed,\r\n            selectField: mobx.computed,\r\n            selectFieldOptions: mobx.computed,\r\n            yesNoSelectField: mobx.computed,\r\n            listEditor: mobx.computed,\r\n            intervalEditor: mobx.computed,\r\n            datePickerField: mobx.computed,\r\n            timePickerField: mobx.computed,\r\n            dateTimePickerField: mobx.computed\r\n        });\r\n        this.initValue();\r\n    }\r\n    get nestedEntityOptions() {\r\n        const { relationOptions = [] } = this.props;\r\n        return relationOptions.map(instance => {\r\n            var _a;\r\n            return ({\r\n                caption: (_a = instance._instanceName) !== null && _a !== void 0 ? _a : jmixReactCore.toIdString(instance.id),\r\n                value: jmixReactCore.toIdString(instance.id)\r\n            });\r\n        });\r\n    }\r\n    set operator(operator) {\r\n        const oldOperator = this.operator;\r\n        this.props.onOperatorChange(operator, this.props.entityProperty);\r\n        this.checkOperatorGroup(operator, oldOperator);\r\n    }\r\n    get operator() {\r\n        return this.props.operator || this.getDefaultOperator();\r\n    }\r\n    set value(value) {\r\n        this.props.onValueChange(value, this.props.entityProperty);\r\n    }\r\n    get value() {\r\n        return this.props.value;\r\n    }\r\n    get errorContext() {\r\n        return `[DataTableCustomFilter, entity: ${this.props.entityName}, property: ${this.props.entityProperty}]`;\r\n    }\r\n    get propertyCaption() {\r\n        return this.props.mainStore.messages[this.props.entityName + '.' + this.props.entityProperty];\r\n    }\r\n    get propertyInfoNN() {\r\n        const propertyInfo = jmixReactCore.getPropertyInfo(this.props.metadata.entities, this.props.entityName, this.props.entityProperty);\r\n        if (!propertyInfo) {\r\n            throw new Error(`${this.errorContext} Cannot find MetaPropertyInfo`);\r\n        }\r\n        return propertyInfo;\r\n    }\r\n    render() {\r\n        return (React__default['default'].createElement(antd.Form, { layout: 'inline', onFinish: this.handleFinish, ref: this.setFormRef },\r\n            React__default['default'].createElement(\"div\", { className: styles$1.tableFilter },\r\n                React__default['default'].createElement(\"div\", { className: styles$1.settings },\r\n                    React__default['default'].createElement(\"div\", { className: styles$1.controlsLayout },\r\n                        React__default['default'].createElement(antd.Form.Item, { className: classnames(styles$1.filterControl, styles$1.propertyCaption) }, this.propertyCaption),\r\n                        React__default['default'].createElement(antd.Form.Item, { className: styles$1.filterControl, initialValue: this.getDefaultOperator(), name: `${this.props.entityProperty}_operatorsDropdown` },\r\n                            React__default['default'].createElement(antd.Select, { dropdownClassName: `cuba-operator-dropdown-${this.props.entityProperty}`, dropdownMatchSelectWidth: false, onChange: (operator) => this.changeOperator(operator) }, this.operatorTypeOptions)),\r\n                        this.simpleFilterEditor),\r\n                    this.complexFilterEditor),\r\n                React__default['default'].createElement(antd.Divider, { className: styles$1.divider }),\r\n                React__default['default'].createElement(\"div\", { className: styles$1.footer },\r\n                    React__default['default'].createElement(antd.Button, { htmlType: 'submit', type: 'link' },\r\n                        React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.dataTable.ok' })),\r\n                    React__default['default'].createElement(antd.Button, { htmlType: 'button', type: 'link', onClick: this.resetFilter },\r\n                        React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.dataTable.reset' }))))));\r\n    }\r\n    getDefaultOperator() {\r\n        const propertyInfo = this.propertyInfoNN;\r\n        switch (propertyInfo.attributeType) {\r\n            case 'ENUM':\r\n            case 'ASSOCIATION':\r\n            case 'COMPOSITION':\r\n                return '_eq';\r\n        }\r\n        switch (propertyInfo.type) {\r\n            case 'Boolean':\r\n                return '_eq';\r\n            case 'Date':\r\n            case 'Time':\r\n            case 'DateTime':\r\n            case 'LocalDate':\r\n            case 'LocalTime':\r\n            case 'LocalDateTime':\r\n            case 'OffsetDateTime':\r\n            case 'OffsetTime':\r\n                return '_eq';\r\n            case 'Integer':\r\n            case 'Double':\r\n            case 'BigDecimal':\r\n            case 'Long':\r\n            case 'Character':\r\n                return '_eq';\r\n            case 'String':\r\n                return '_contains';\r\n            case 'UUID':\r\n                return '_eq';\r\n            default:\r\n                throw new Error(`${this.errorContext} Unexpected property type ${propertyInfo.type} when trying to get the default condition operator`);\r\n        }\r\n    }\r\n    get operatorTypeOptions() {\r\n        const propertyInfo = this.propertyInfoNN;\r\n        const availableOperators = getAvailableOperators(propertyInfo);\r\n        return availableOperators.map((operator) => {\r\n            return React__default['default'].createElement(antd.Select.Option, { key: `${this.props.entityProperty}.${operator}`, className: operatorToOptionClassName(operator), value: operator }, this.getOperatorCaption(operator));\r\n        });\r\n    }\r\n    get simpleFilterEditor() {\r\n        return isComplexOperator(this.operator) ? null : this.conditionInput;\r\n    }\r\n    get complexFilterEditor() {\r\n        return isComplexOperator(this.operator) ? this.conditionInput : null;\r\n    }\r\n    cannotDetermineConditionInput(propertyType) {\r\n        return `${this.errorContext} Unexpected combination of property type ${propertyType} and condition operator ${this.operator} when trying to determine the condition input field type`;\r\n    }\r\n    get conditionInput() {\r\n        const propertyInfo = this.propertyInfoNN;\r\n        switch (propertyInfo.attributeType) {\r\n            // In case of enum generic filter will not be rendered, enum filter will be rendered instead\r\n            case 'ASSOCIATION':\r\n            case 'COMPOSITION':\r\n                switch (this.operator) {\r\n                    case '_eq':\r\n                    case '_neq':\r\n                        return this.selectField;\r\n                    case '_in':\r\n                    case '_notIn':\r\n                        return this.listEditor;\r\n                    case '_isNull':\r\n                        return this.yesNoSelectField;\r\n                }\r\n        }\r\n        switch (propertyInfo.type) {\r\n            case 'Boolean':\r\n                return this.yesNoSelectField;\r\n            case 'DateTime':\r\n            case 'LocalDateTime':\r\n            case 'OffsetDateTime':\r\n                switch (this.operator) {\r\n                    case '_eq':\r\n                    case '_neq':\r\n                    case '_gt':\r\n                    case '_gte':\r\n                    case '_lt':\r\n                    case '_lte':\r\n                        return this.dateTimePickerField;\r\n                    case '_in':\r\n                    case '_notIn':\r\n                        return this.listEditor;\r\n                    case '_isNull':\r\n                        return this.yesNoSelectField;\r\n                    case '__inInterval':\r\n                        return this.intervalEditor;\r\n                }\r\n                throw new Error(this.cannotDetermineConditionInput(propertyInfo.type));\r\n            case 'Date':\r\n            case 'LocalDate':\r\n                switch (this.operator) {\r\n                    case '_eq':\r\n                    case '_neq':\r\n                    case '_gt':\r\n                    case '_gte':\r\n                    case '_lt':\r\n                    case '_lte':\r\n                        return this.datePickerField;\r\n                    case '_in':\r\n                    case '_notIn':\r\n                        return this.listEditor;\r\n                    case '_isNull':\r\n                        return this.yesNoSelectField;\r\n                    case '__inInterval':\r\n                        return this.intervalEditor;\r\n                }\r\n                throw new Error(this.cannotDetermineConditionInput(propertyInfo.type));\r\n            case 'Time':\r\n            case 'LocalTime':\r\n            case 'OffsetTime':\r\n                switch (this.operator) {\r\n                    case '_eq':\r\n                    case '_neq':\r\n                    case '_gt':\r\n                    case '_gte':\r\n                    case '_lt':\r\n                    case '_lte':\r\n                        return this.timePickerField;\r\n                    case '_in':\r\n                    case '_notIn':\r\n                        return this.listEditor;\r\n                    case '_isNull':\r\n                        return this.yesNoSelectField;\r\n                }\r\n                throw new Error(this.cannotDetermineConditionInput(propertyInfo.type));\r\n            case 'Integer':\r\n            case 'Double':\r\n            case 'BigDecimal':\r\n            case 'Long':\r\n                switch (this.operator) {\r\n                    case '_eq':\r\n                    case '_neq':\r\n                    case '_gt':\r\n                    case '_gte':\r\n                    case '_lt':\r\n                    case '_lte':\r\n                        return this.numberInputField(propertyInfo.type);\r\n                    case '_in':\r\n                    case '_notIn':\r\n                        return this.listEditor;\r\n                    case '_isNull':\r\n                        return this.yesNoSelectField;\r\n                }\r\n                throw new Error(this.cannotDetermineConditionInput(propertyInfo.type));\r\n            case 'String':\r\n                switch (this.operator) {\r\n                    // case '_doesNotContain':\r\n                    case '_contains':\r\n                    case '_eq':\r\n                    case '_neq':\r\n                    case '_startsWith':\r\n                    case '_endsWith':\r\n                        return this.textInputField;\r\n                    case '_in':\r\n                    case '_notIn':\r\n                        return this.listEditor;\r\n                    case '_isNull':\r\n                        return this.yesNoSelectField;\r\n                }\r\n                throw new Error(this.cannotDetermineConditionInput(propertyInfo.type));\r\n            case 'UUID':\r\n                switch (this.operator) {\r\n                    case '_eq':\r\n                    case '_neq':\r\n                        return this.uuidInputField;\r\n                    case '_in':\r\n                    case '_notIn':\r\n                        return this.listEditor;\r\n                    case '_isNull':\r\n                        return this.yesNoSelectField;\r\n                }\r\n                throw new Error(this.cannotDetermineConditionInput(propertyInfo.type));\r\n            case 'Character':\r\n                switch (this.operator) {\r\n                    case '_eq':\r\n                    case '_neq':\r\n                        return this.charInputField;\r\n                    case '_in':\r\n                    case '_notIn':\r\n                        return this.listEditor;\r\n                    case '_isNull':\r\n                        return this.yesNoSelectField;\r\n                }\r\n                throw new Error(this.cannotDetermineConditionInput(propertyInfo.type));\r\n            default:\r\n                throw new Error(this.cannotDetermineConditionInput(propertyInfo.type));\r\n        }\r\n    }\r\n    get textInputField() {\r\n        return this.createFilterInput(React__default['default'].createElement(antd.Input, { onChange: this.onTextInputChange }), true);\r\n    }\r\n    get charInputField() {\r\n        return this.createFilterInput(React__default['default'].createElement(CharInput, { onChange: this.onTextInputChange }), true);\r\n    }\r\n    get uuidInputField() {\r\n        const { entityProperty } = this.props;\r\n        const options = getDefaultFilterFormItemProps(this.props.intl, entityProperty);\r\n        if (!options.rules) {\r\n            options.rules = [];\r\n        }\r\n        options.rules.push({\r\n            pattern: jmixReactWeb.uuidPattern,\r\n            message: this.props.intl.formatMessage({ id: 'jmix.dataTable.validation.uuid' })\r\n        });\r\n        return this.createFilterInput(React__default['default'].createElement(UuidInput, { onChange: this.onTextInputChange }), true, options);\r\n    }\r\n    numberInputField(propertyType) {\r\n        switch (propertyType) {\r\n            case 'Integer':\r\n                return this.createFilterInput(React__default['default'].createElement(IntegerInput, { onChange: this.onNumberInputChange }), true);\r\n            case 'Double':\r\n                return this.createFilterInput(React__default['default'].createElement(DoubleInput, { onChange: this.onNumberInputChange }), true);\r\n            case 'Long':\r\n                return this.createFilterInput(React__default['default'].createElement(LongInput, { onChange: this.onNumberInputChange }), true);\r\n            case 'BigDecimal':\r\n                return this.createFilterInput(React__default['default'].createElement(BigDecimalInput, { onChange: this.onNumberInputChange }), true);\r\n            default:\r\n                return jmixReactCore.assertNever('property type', propertyType);\r\n        }\r\n    }\r\n    get selectField() {\r\n        return this.createFilterInput(React__default['default'].createElement(antd.Select, { dropdownMatchSelectWidth: false, dropdownClassName: `cuba-value-dropdown-${this.props.entityProperty}`, className: styles$1.filterSelect, onSelect: this.onSelectChange }, this.selectFieldOptions));\r\n    }\r\n    get selectFieldOptions() {\r\n        return this.nestedEntityOptions\r\n            .filter(option => option.value != null)\r\n            .map((option) => {\r\n            return (React__default['default'].createElement(antd.Select.Option, { title: option.caption, value: option.value, key: option.value, className: `cuba-filter-value-${option.value}` }, option.caption));\r\n        });\r\n    }\r\n    get yesNoSelectField() {\r\n        const { entityProperty } = this.props;\r\n        const component = (React__default['default'].createElement(antd.Select, { dropdownMatchSelectWidth: false, dropdownClassName: `cuba-value-dropdown-${this.props.entityProperty}`, className: styles$1.filterSelect, onSelect: this.onYesNoSelectChange },\r\n            React__default['default'].createElement(antd.Select.Option, { value: 'true', className: 'cuba-filter-value-true' },\r\n                React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.dataTable.yes' })),\r\n            React__default['default'].createElement(antd.Select.Option, { value: 'false', className: 'cuba-filter-value-false' },\r\n                React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.dataTable.no' }))));\r\n        return this.createFilterInput(component, false, {\r\n            name: `${entityProperty}_yesNoSelect`,\r\n            initialValue: 'true',\r\n            rules: [{ required: true }]\r\n        });\r\n    }\r\n    get listEditor() {\r\n        return (React__default['default'].createElement(antd.Form.Item, { className: classnames(styles$1.filterControl, styles$1.complexEditor) },\r\n            React__default['default'].createElement(DataTableListEditor, { onChange: (value) => this.value = value, id: this.props.entityProperty, propertyInfo: this.propertyInfoNN, nestedEntityOptions: this.nestedEntityOptions })));\r\n    }\r\n    get intervalEditor() {\r\n        return (React__default['default'].createElement(antd.Form.Item, { className: classnames(styles$1.filterControl, styles$1.complexEditor) },\r\n            React__default['default'].createElement(dataTableIntervalEditor, { onChange: (value) => this.value = value, id: this.props.entityProperty, propertyType: this.propertyInfoNN.type })));\r\n    }\r\n    get datePickerField() {\r\n        const component = (React__default['default'].createElement(DatePicker, { onChange: this.onTemporalPickerChange }));\r\n        return this.createFilterInput(component, true);\r\n    }\r\n    get timePickerField() {\r\n        const component = (React__default['default'].createElement(TimePicker, { onChange: this.onTemporalPickerChange }));\r\n        return this.createFilterInput(component, true);\r\n    }\r\n    get dateTimePickerField() {\r\n        const component = (React__default['default'].createElement(DatePicker, { showTime: true, onChange: this.onTemporalPickerChange }));\r\n        return this.createFilterInput(component, true);\r\n    }\r\n    createFilterInput(component, hasFeedback = false, formItemProps, additionalClassName) {\r\n        const { intl, entityProperty } = this.props;\r\n        const name = `${entityProperty}_input`;\r\n        if (formItemProps == null) {\r\n            formItemProps = getDefaultFilterFormItemProps(intl, name);\r\n        }\r\n        else if (formItemProps.name == null) {\r\n            formItemProps.name = name;\r\n        }\r\n        return wrapInFormItem(component, hasFeedback, formItemProps, additionalClassName);\r\n    }\r\n}\r\nfunction determineOperatorGroup(operator) {\r\n    switch (operator) {\r\n        case '_eq':\r\n        case '_gt':\r\n        case '_gte':\r\n        case '_lt':\r\n        case '_lte':\r\n        case '_neq':\r\n        case '_startsWith':\r\n        case '_endsWith':\r\n        case '_contains':\r\n            // case 'doesNotContain':\r\n            return OperatorGroup.SINGLE_VALUE;\r\n        case '_in':\r\n        case '_notIn':\r\n            return OperatorGroup.LIST_VALUE;\r\n        case '_isNull':\r\n            return OperatorGroup.LOGICAL_VALUE;\r\n        case '__inInterval':\r\n            return OperatorGroup.INTERVAL_VALUE;\r\n        default:\r\n            throw new Error(`Could not determine condition operator group: unexpected operator ${operator}`);\r\n    }\r\n}\r\nfunction getAvailableOperators(propertyInfo) {\r\n    switch (propertyInfo.attributeType) {\r\n        case 'ENUM':\r\n        case 'ASSOCIATION':\r\n        case 'COMPOSITION':\r\n            return ['_eq', '_neq', '_in', '_notIn', '_isNull'];\r\n    }\r\n    switch (propertyInfo.type) {\r\n        case 'Boolean':\r\n            return ['_eq', '_neq', '_isNull'];\r\n        case 'Date':\r\n        case 'LocalDate':\r\n        case 'DateTime':\r\n        case 'LocalDateTime':\r\n        case 'OffsetDateTime':\r\n            return ['_eq', '_neq', '_in', '_notIn', '_gt', '_gte', '_lt', '_lte', '_isNull', '__inInterval'];\r\n        case 'Time':\r\n        case 'LocalTime':\r\n        case 'OffsetTime':\r\n            return ['_eq', '_neq', '_in', '_notIn', '_gt', '_gte', '_lt', '_lte', '_isNull'];\r\n        case 'Integer':\r\n        case 'Double':\r\n        case 'Long':\r\n        case 'BigDecimal':\r\n            return ['_eq', '_neq', '_in', '_notIn', '_gt', '_gte', '_lt', '_lte', '_isNull'];\r\n        case 'String':\r\n            return ['_contains', /* TODO 'doesNotContain', */ '_eq', '_neq', '_in', '_notIn', '_isNull', '_startsWith', '_endsWith'];\r\n        case 'UUID':\r\n        case 'Character':\r\n            return ['_eq', '_neq', '_in', '_notIn', '_isNull'];\r\n        default:\r\n            throw new Error(`Could not determine available condition operators for property ${propertyInfo.name} with attribute type ${propertyInfo.attributeType} and type ${propertyInfo.type}`);\r\n    }\r\n}\r\nfunction isComplexOperator(operator) {\r\n    const complexOperators = ['_in', '_notIn', '__inInterval'];\r\n    return complexOperators.indexOf(operator) > -1;\r\n}\r\nfunction operatorToOptionClassName(operator) {\r\n    let className = 'cuba-operator-';\r\n    switch (operator) {\r\n        case '_eq':\r\n            className += 'equals';\r\n            break;\r\n        case '_lt':\r\n            className += 'less';\r\n            break;\r\n        case '_lte':\r\n            className += 'lessOrEqual';\r\n            break;\r\n        case '_gt':\r\n            className += 'greater';\r\n            break;\r\n        case '_gte':\r\n            className += 'greaterOrEqual';\r\n            break;\r\n        case '_neq':\r\n            className += 'notEqual';\r\n            break;\r\n        default:\r\n            className += operator;\r\n    }\r\n    return className;\r\n}\r\nconst dataTableCustomFilter = reactIntl.injectIntl(jmixReactCore.injectMainStore(jmixReactCore.injectMetadata(mobxReact.observer(DataTableCustomFilterComponent))));\n\n/**\r\n * @remarks\r\n * It is possible to create a vanilla antd `Table` and customize some of its columns\r\n * with `DataTable`'s custom filters using this helper function.\r\n *\r\n * NOTE: it might be simpler to achieve the desired result using {@link DataTableProps.columnDefinitions}.\r\n *\r\n * @param config\r\n *\r\n * @example\r\n * ```typescript jsx\r\n *  import * as React from \"react\";\r\n *  import {action, observable} from 'mobx';\r\n *  import {observer} from \"mobx-react\";\r\n *  import {Table,} from \"antd\";\r\n *  import {Car} from \"../../cuba/entities/mpg$Car\";\r\n *  import {\r\n *   collection, injectMainStore, MainStoreInjected,\r\n *   generateDataColumn, ComparisonType, handleTableChange,\r\n * } from \"@cuba-platform/react\";\r\n *  import {injectIntl, WrappedComponentProps} from 'react-intl';\r\n *  import {PaginationConfig} from 'antd/es/pagination';\r\n *  import { SorterResult } from \"antd/es/table\";\r\n *\r\n *  @injectMainStore\r\n *  @observer\r\n *  class CarTableComponent extends React.Component<MainStoreInjected & WrappedComponentProps> {\r\n *\r\n *   dataCollection = collection<Car>(Car.NAME, {view: 'car-edit', sort: '-updateTs'});\r\n *\r\n *   fields = ['purchaseDate','price','regNumber'];\r\n *\r\n *   @observable.ref filters: Record<string, string[]> | undefined;\r\n *   @observable operator: ComparisonType | undefined;\r\n *   @observable value: any;\r\n *\r\n *   @action\r\n *   handleOperatorChange = (operator: ComparisonType) => this.operator = operator;\r\n *\r\n *   @action\r\n *   handleValueChange = (value: any) => this.value = value;\r\n *\r\n *   @action\r\n *   handleChange = (pagination: PaginationConfig, tableFilters: Record<string, string[]>, sorter: SorterResult<Car>): void => {\r\n *     this.filters = tableFilters;\r\n *\r\n *     handleTableChange({\r\n *       pagination: pagination,\r\n *       filters: tableFilters,\r\n *       sorter: sorter,\r\n *       defaultSort: '-updateTs',\r\n *       fields: this.fields,\r\n *       mainStore: this.props.mainStore!,\r\n *       dataCollection: this.dataCollection\r\n *     });\r\n *   };\r\n *\r\n *   render() {\r\n *\r\n *     return (\r\n *       <Table\r\n *         dataSource={this.dataCollection.items.slice()}\r\n *         columns={[\r\n *           { title: 'Purchase Date', dataIndex: 'purchaseDate', key: 'purchaseDate', render: (text: any) => <b>{text}</b> },\r\n *           { title: 'Price', dataIndex: 'price', key: 'price' },\r\n *           generateDataColumn({\r\n *             propertyName: 'regNumber',\r\n *             entityName: this.dataCollection.entityName,\r\n *             filters: this.filters,\r\n *             operator: this.operator,\r\n *             onOperatorChange: this.handleOperatorChange,\r\n *             value: this.value,\r\n *             onValueChange: this.handleValueChange,\r\n *             enableSorter: true,\r\n *             mainStore: this.props.mainStore!\r\n *           })\r\n *         ]}\r\n *         onChange={this.handleChange}\r\n *         pagination={{\r\n *           showSizeChanger: true,\r\n *           total: this.dataCollection.count,\r\n *         }}\r\n *       />\r\n *     );\r\n *   }\r\n *\r\n * }\r\n *\r\n *  const CarTable = injectIntl(CarTableComponent);\r\n *\r\n *  export default CarTable;\r\n *  ```\r\n *\r\n */\r\n// todo refactor - extract DataColumn class\r\nfunction generateDataColumn(config) {\r\n    const { propertyName, entityName, enableFilter, filters, operator, onOperatorChange, value, onValueChange, enableSorter, mainStore, customFilterRef, relationOptions } = config;\r\n    let dataIndex;\r\n    const metadata = jmixReactCore.getMetadata();\r\n    const propertyInfo = jmixReactCore.getPropertyInfoNN(propertyName, entityName, metadata.entities);\r\n    switch (propertyInfo.attributeType) {\r\n        case 'COMPOSITION':\r\n        case 'ASSOCIATION':\r\n            dataIndex = [propertyName, '_instanceName'];\r\n            break;\r\n        default:\r\n            dataIndex = propertyName;\r\n    }\r\n    const localizedPropertyCaption = jmixReactCore.getPropertyCaption(propertyName, entityName, mainStore.messages);\r\n    let defaultColumnProps = {\r\n        title: (React__default['default'].createElement(\"div\", { title: localizedPropertyCaption }, localizedPropertyCaption)),\r\n        dataIndex,\r\n        sorter: enableSorter,\r\n        key: propertyName,\r\n        render: (text, record) => DataTableCell({ propertyInfo, text, mainStore, record })\r\n    };\r\n    if (enableFilter && jmixReactCore.isPropertyTypeSupported(propertyInfo)) {\r\n        defaultColumnProps = Object.assign(Object.assign({}, defaultColumnProps), { \r\n            // According to the typings this field expects any[] | undefined\r\n            // However, in reality undefined makes the filter icon to be highlighted.\r\n            // If we want the icon to not be highlighted we need to pass null instead.\r\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n            // @ts-ignore\r\n            filteredValue: (filters && filters[propertyName])\r\n                ? mobx.toJS(filters[propertyName])\r\n                : null });\r\n        if (propertyInfo.attributeType === 'ENUM') {\r\n            defaultColumnProps = Object.assign({ filters: generateEnumFilter(propertyInfo, metadata) }, defaultColumnProps);\r\n        }\r\n        else {\r\n            defaultColumnProps = Object.assign({ filterDropdown: generateCustomFilterDropdown(propertyName, entityName, operator, onOperatorChange, value, onValueChange, customFilterRef, relationOptions) }, defaultColumnProps);\r\n        }\r\n    }\r\n    return defaultColumnProps;\r\n}\r\n/**\r\n * Generates a standard antd table column filter for enum fields.\r\n *\r\n * @param propertyInfo\r\n */\r\nfunction generateEnumFilter(propertyInfo, metadata) {\r\n    const propertyEnumInfo = metadata.enums\r\n        .find((enumInfo) => enumInfo.name === propertyInfo.type);\r\n    if (!propertyEnumInfo) {\r\n        return [];\r\n    }\r\n    return propertyEnumInfo.values.map((enumValueInfo) => {\r\n        return {\r\n            text: enumValueInfo.caption,\r\n            value: enumValueInfo.name\r\n        };\r\n    });\r\n}\r\n// todo - after extraction DataColumn class move this method to DataColumn and inline\r\nfunction generateCustomFilterDropdown(propertyName, entityName, operator, onOperatorChange, value, onValueChange, customFilterRefCallback, relationOptions) {\r\n    return (props) => (React__default['default'].createElement(dataTableCustomFilter, { entityName: entityName, entityProperty: propertyName, filterProps: props, operator: operator, onOperatorChange: onOperatorChange, value: value, onValueChange: onValueChange, customFilterRef: customFilterRefCallback, relationOptions: relationOptions }));\r\n}\r\n/**\r\n *\r\n * @param tableFilters\r\n * @param onFilterChange\r\n * @param entityName\r\n * @param fields\r\n * @param metadata\r\n * @param apiFilters\r\n */\r\nfunction setFilters(tableFilters, onFilterChange, entityName, fields, metadata, apiFilters) {\r\n    let nextApiFilters = [];\r\n    if (apiFilters != null && apiFilters.length > 0) {\r\n        // We check which of the current API filter conditions needs to be preserved regardless of table filters state.\r\n        // Particularly we preserve filters on columns that are not displayed.\r\n        const preservedConditions = getPreservedConditions(apiFilters, fields);\r\n        if (preservedConditions.length > 0) {\r\n            nextApiFilters = [\r\n                ...nextApiFilters,\r\n                ...preservedConditions\r\n            ];\r\n        }\r\n    }\r\n    // Now we modify API filters based on the state of table filters\r\n    if (tableFilters) {\r\n        fields.forEach((propertyName) => {\r\n            if (Object.prototype.hasOwnProperty.call(tableFilters, propertyName)\r\n                && tableFilters[propertyName] != null\r\n                && tableFilters[propertyName].length > 0) {\r\n                const propertyInfoNN = jmixReactCore.getPropertyInfoNN(propertyName, entityName, metadata.entities);\r\n                // Enum\r\n                if (propertyInfoNN.attributeType === 'ENUM') {\r\n                    addFilter(nextApiFilters, propertyName, '_in', tableFilters[propertyName]);\r\n                    return;\r\n                }\r\n                const { operator, value } = JSON.parse(String(tableFilters[propertyName][0]));\r\n                // Temporal interval\r\n                if (operator === '__inInterval') {\r\n                    const { minDate, maxDate } = value;\r\n                    addFilter(nextApiFilters, propertyName, '_gte', minDate);\r\n                    addFilter(nextApiFilters, propertyName, '_lte', maxDate);\r\n                    return;\r\n                }\r\n                // Association\r\n                if (jmixReactCore.isRelationProperty(propertyInfoNN)) {\r\n                    nextApiFilters.push({\r\n                        [propertyName]: {\r\n                            id: {\r\n                                [operator]: value\r\n                            }\r\n                        }\r\n                    });\r\n                    return;\r\n                }\r\n                // Everything else\r\n                addFilter(nextApiFilters, propertyName, operator, value);\r\n            }\r\n        });\r\n    }\r\n    onFilterChange(nextApiFilters);\r\n}\r\nfunction addFilter(filters, propertyName, operator, value) {\r\n    filters.push({\r\n        [propertyName]: { [operator]: value }\r\n    });\r\n}\r\n/**\r\n *\r\n * @param sorter\r\n * @param onSortOrderChange\r\n * @param defaultSort\r\n */\r\n// todo could we make defaultSort of type defined as properties keys of 'E' ?\r\nfunction setSorter(sorter, onSortOrderChange, defaultSort) {\r\n    if (sorter != null && !Array.isArray(sorter) && sorter.order != null) {\r\n        const sortDirection = (sorter.order === 'descend') ? 'DESC' : 'ASC';\r\n        if (typeof sorter.field === 'string') {\r\n            const sortField = String(sorter.field);\r\n            onSortOrderChange({ [sortField]: sortDirection });\r\n            return;\r\n        }\r\n        // For Association field sorter.field will be ['garage', '_instanceName']\r\n        if (Array.isArray(sorter.field)) {\r\n            const sortField = sorter.field[0];\r\n            onSortOrderChange({\r\n                [sortField]: {\r\n                    id: sortDirection // TODO disable sorting by relation fields\r\n                }\r\n            });\r\n            return;\r\n        }\r\n    }\r\n    onSortOrderChange(defaultSort);\r\n}\r\n/**\r\n * When called from antd {@link https://ant.design/components/table | Table}'s `onChange` callback\r\n * this function will reload data collection taking into account `Table`'s filters, sorter and pagination.\r\n *\r\n * @typeparam E - entity type.\r\n *\r\n * @param tableChange\r\n */\r\nfunction handleTableChange(tableChange) {\r\n    const { pagination, tableFilters, apiFilters, onFilterChange, sorter, defaultSortOrder, onSortOrderChange, onPaginationChange, fields, metadata, entityName, tableAction } = tableChange;\r\n    switch (tableAction) {\r\n        case 'filter':\r\n            setFilters(tableFilters, onFilterChange, entityName, fields, metadata, apiFilters);\r\n            break;\r\n        case 'sort':\r\n            setSorter(sorter, onSortOrderChange, defaultSortOrder);\r\n            break;\r\n        case 'paginate':\r\n            onPaginationChange(pagination.current, pagination.pageSize);\r\n            break;\r\n        default:\r\n            jmixReactCore.assertNever('table action', tableAction);\r\n    }\r\n}\r\n// TODO docs\r\nfunction graphqlFilterToTableFilters(initialFilter, fields) {\r\n    const tableFilters = {};\r\n    Object.entries(initialFilter).forEach(([propertyName, condition]) => {\r\n        if (!fields || fields.indexOf(propertyName)) {\r\n            tableFilters[propertyName] = [JSON.stringify({\r\n                    operator: Object.keys(condition)[0],\r\n                    value: Object.values(condition)[0]\r\n                })];\r\n        }\r\n    });\r\n    return tableFilters;\r\n}\r\nfunction getPreservedConditions(filters, fields) {\r\n    return filters\r\n        // filter attributes that are not displayed\r\n        .filter((filter) => fields.indexOf(Object.keys(filter)[0]) === -1);\r\n}\n\nclass DataTableComponent extends React__default['default'].Component {\r\n    constructor(props) {\r\n        super(props);\r\n        this.selectedRowKeys = [];\r\n        this.tableFilters = {};\r\n        this.operatorsByProperty = new Map();\r\n        this.valuesByProperty = new Map();\r\n        // We need to mount and unmount several reactions (listeners) on componentDidMount/componentWillUnmount\r\n        this.disposers = [];\r\n        this.customFilterForms = new Map();\r\n        this.onRowSelectionChange = () => {\r\n            switch (this.props.rowSelectionMode) {\r\n                case undefined:\r\n                    throw new Error(`rowSelectionMode is not expected to be ${this.props.rowSelectionMode} at this point`);\r\n                case 'none':\r\n                    return;\r\n                case 'multi':\r\n                case 'single':\r\n                    if (this.props.onRowSelectionChange) {\r\n                        this.props.onRowSelectionChange(this.selectedRowKeys);\r\n                    }\r\n                    break;\r\n                default:\r\n                    jmixReactCore.assertNever('rowSelectionMode', this.props.rowSelectionMode);\r\n            }\r\n        };\r\n        this.handleFilterOperatorChange = (operator, propertyName) => {\r\n            this.operatorsByProperty.set(propertyName, operator);\r\n        };\r\n        this.handleFilterValueChange = (value, propertyName) => {\r\n            this.valuesByProperty.set(propertyName, value);\r\n        };\r\n        this.onChange = (pagination, filters, sorter, extra) => {\r\n            const { action: tableAction } = extra;\r\n            this.tableFilters = filters;\r\n            const { fields } = this;\r\n            const { initialFilter, onFilterChange, defaultSortOrder, onSortOrderChange, onPaginationChange, entityName, metadata } = this.props;\r\n            handleTableChange({\r\n                pagination,\r\n                tableFilters: filters, apiFilters: initialFilter, onFilterChange,\r\n                sorter, onSortOrderChange, defaultSortOrder,\r\n                fields,\r\n                metadata,\r\n                entityName,\r\n                onPaginationChange,\r\n                tableAction\r\n            });\r\n        };\r\n        this.onRowClicked = (record) => {\r\n            if (this.isRowSelectionEnabled) {\r\n                const clickedRowKey = this.constructRowKey(record);\r\n                let newSelectedRowKeys = this.selectedRowKeys.slice();\r\n                switch (this.props.rowSelectionMode) {\r\n                    case 'multi': {\r\n                        const clickedRowKeyIndex = this.selectedRowKeys.indexOf(clickedRowKey);\r\n                        if (clickedRowKeyIndex > -1) {\r\n                            // Deselect row in 'multi' mode\r\n                            newSelectedRowKeys.splice(clickedRowKeyIndex, 1);\r\n                        }\r\n                        else {\r\n                            // Select row in 'multi' mode\r\n                            newSelectedRowKeys.push(clickedRowKey);\r\n                        }\r\n                        break;\r\n                    }\r\n                    case 'single': {\r\n                        if (this.selectedRowKeys.length > 0 && this.selectedRowKeys[0] === clickedRowKey) {\r\n                            // Deselect row in 'single' mode\r\n                            newSelectedRowKeys = [];\r\n                        }\r\n                        else {\r\n                            // Select row in 'single' mode\r\n                            newSelectedRowKeys[0] = clickedRowKey;\r\n                        }\r\n                        break;\r\n                    }\r\n                }\r\n                this.selectedRowKeys = newSelectedRowKeys;\r\n            }\r\n        };\r\n        this.onRowSelectionColumnClicked = (selectedRowKeys) => {\r\n            if (this.isRowSelectionEnabled) {\r\n                this.selectedRowKeys = selectedRowKeys;\r\n            }\r\n        };\r\n        this.onRow = (record) => {\r\n            return {\r\n                onClick: () => this.onRowClicked(record)\r\n            };\r\n        };\r\n        this.clearFilters = () => {\r\n            const { entityName, initialFilter, onFilterChange } = this.props;\r\n            this.tableFilters = {};\r\n            this.operatorsByProperty.clear();\r\n            this.valuesByProperty.clear();\r\n            this.fields.forEach((field) => {\r\n                const propertyInfo = jmixReactCore.getPropertyInfoNN(field, entityName, this.props.metadata.entities);\r\n                if (propertyInfo.type === 'Boolean') {\r\n                    this.valuesByProperty.set(field, 'true');\r\n                }\r\n            });\r\n            this.customFilterForms.forEach((form) => {\r\n                form.resetFields(); // Reset Ant Form in CustomFilter\r\n            });\r\n            if (initialFilter != null) {\r\n                const preservedConditions = getPreservedConditions(initialFilter, this.fields);\r\n                onFilterChange(preservedConditions);\r\n            }\r\n            onFilterChange(undefined);\r\n        };\r\n        const { initialFilter } = props;\r\n        if (initialFilter) {\r\n            this.tableFilters = graphqlFilterToTableFilters(initialFilter, this.fields);\r\n        }\r\n        mobx.makeObservable(this, {\r\n            selectedRowKeys: mobx.observable,\r\n            tableFilters: mobx.observable.ref,\r\n            operatorsByProperty: mobx.observable,\r\n            valuesByProperty: mobx.observable,\r\n            fields: mobx.computed,\r\n            paginationConfig: mobx.computed,\r\n            handleFilterOperatorChange: mobx.action,\r\n            handleFilterValueChange: mobx.action,\r\n            onChange: mobx.action,\r\n            onRowClicked: mobx.action,\r\n            onRowSelectionColumnClicked: mobx.action,\r\n            onRow: mobx.action,\r\n            clearFilters: mobx.action,\r\n            clearFiltersButton: mobx.computed,\r\n            generateColumnProps: mobx.computed\r\n        });\r\n    }\r\n    componentDidMount() {\r\n        // When `data` has changed (e.g. due to sorting, filtering or pagination change) some of the selected rows\r\n        // may not be displayed anymore and shall be removed from selectedRowKeys\r\n        this.disposers.push(mobx.reaction(() => [this.items, this.props.loading], ([items, loading]) => {\r\n            if (this.isRowSelectionEnabled && this.selectedRowKeys.length > 0 && !loading) {\r\n                const displayedRowKeys = items.map((item) => this.constructRowKey(item));\r\n                this.selectedRowKeys = this.selectedRowKeys.filter(selectedKey => displayedRowKeys.indexOf(selectedKey) > -1);\r\n            }\r\n        }, {\r\n            equals: mobx.comparer.structural\r\n        }));\r\n        // Display error message if data retrieval has failed\r\n        this.disposers.push(mobx.reaction(() => this.props.error, (error) => {\r\n            const { intl } = this.props;\r\n            if (error != null) {\r\n                antd.message.error(intl.formatMessage({ id: 'common.requestFailed' }));\r\n            }\r\n        }));\r\n        // Call corresponding callback(s) when selectedRowKeys is changed\r\n        this.disposers.push(mobx.reaction(() => this.selectedRowKeys, this.onRowSelectionChange));\r\n        // Clear row selection when rowSelectionMode is changed\r\n        this.disposers.push(mobx.reaction(() => this.props.rowSelectionMode, () => {\r\n            this.selectedRowKeys = [];\r\n        }));\r\n    }\r\n    componentWillUnmount() {\r\n        this.disposers.forEach((dispose) => dispose());\r\n    }\r\n    get isRowSelectionEnabled() {\r\n        if (this.props.rowSelectionMode == null) {\r\n            throw new Error(`rowSelectionMode is expected to be defined at this point`);\r\n        }\r\n        return ['single', 'multi'].indexOf(this.props.rowSelectionMode) > -1;\r\n    }\r\n    get items() {\r\n        const { items } = this.props;\r\n        return items !== null && items !== void 0 ? items : [];\r\n    }\r\n    get total() {\r\n        const { count } = this.props;\r\n        return count !== null && count !== void 0 ? count : 0;\r\n    }\r\n    get fields() {\r\n        const { columnDefinitions } = this.props;\r\n        if (columnDefinitions != null) {\r\n            return columnDefinitions.reduce((accumulatedFields, columnDefinition) => {\r\n                if (typeof columnDefinition === 'string') {\r\n                    accumulatedFields.push(columnDefinition);\r\n                }\r\n                else if (typeof columnDefinition.field === 'string') {\r\n                    accumulatedFields.push(columnDefinition.field);\r\n                }\r\n                return accumulatedFields;\r\n            }, []);\r\n        }\r\n        // TODO here we probably want to return all fields in the entity\r\n        throw new Error('not implemented');\r\n    }\r\n    get paginationConfig() {\r\n        const { current, pageSize } = this.props;\r\n        return {\r\n            showSizeChanger: true,\r\n            total: this.total,\r\n            pageSize,\r\n            current\r\n        };\r\n    }\r\n    getRelationOptions(attrName) {\r\n        var _a, _b;\r\n        const { relationOptions, entityName, metadata } = this.props;\r\n        if (relationOptions == null) {\r\n            return [];\r\n        }\r\n        const nestedEntityName = (_a = jmixReactCore.getPropertyInfo(metadata.entities, entityName, attrName)) === null || _a === void 0 ? void 0 : _a.type;\r\n        if (nestedEntityName == null) {\r\n            return [];\r\n        }\r\n        return (_b = relationOptions.get(jmixReactCore.dollarsToUnderscores(nestedEntityName))) !== null && _b !== void 0 ? _b : [];\r\n    }\r\n    get rowSelectionType() {\r\n        switch (this.props.rowSelectionMode) {\r\n            case 'multi':\r\n                return 'checkbox';\r\n            case 'single':\r\n                return 'radio';\r\n            default:\r\n                throw new Error(`rowSelectionMode is not expected to be ${this.props.rowSelectionMode} at this point`);\r\n        }\r\n    }\r\n    render() {\r\n        const { loading, mainStore } = this.props;\r\n        if ((mainStore === null || mainStore === void 0 ? void 0 : mainStore.isEntityDataLoaded()) !== true) {\r\n            return (React__default['default'].createElement(\"div\", { className: styles$2.loader },\r\n                React__default['default'].createElement(antd.Spin, { size: 'large' })));\r\n        }\r\n        let defaultTableProps = {\r\n            loading,\r\n            columns: this.generateColumnProps,\r\n            dataSource: this.items,\r\n            onChange: this.onChange,\r\n            pagination: this.paginationConfig,\r\n            rowKey: record => this.constructRowKey(record),\r\n            scroll: { x: true }\r\n        };\r\n        if (this.isRowSelectionEnabled) {\r\n            defaultTableProps = Object.assign(Object.assign({}, defaultTableProps), { rowSelection: {\r\n                    type: this.rowSelectionType,\r\n                    selectedRowKeys: mobx.toJS(this.selectedRowKeys),\r\n                    onChange: this.onRowSelectionColumnClicked,\r\n                } });\r\n            if (this.props.canSelectRowByClick) {\r\n                defaultTableProps = Object.assign(Object.assign({}, defaultTableProps), { onRow: this.onRow });\r\n            }\r\n            if (this.props.hideSelectionColumn) {\r\n                defaultTableProps.rowSelection = Object.assign(Object.assign({}, defaultTableProps.rowSelection), { renderCell: () => '' });\r\n            }\r\n        }\r\n        const tableProps = Object.assign(Object.assign({}, defaultTableProps), this.props.tableProps);\r\n        return (React__default['default'].createElement(\"div\", { className: styles$2.dataTable },\r\n            React__default['default'].createElement(\"div\", { className: styles$2.buttons },\r\n                this.props.buttons,\r\n                this.props.hideClearFilters ? null : this.clearFiltersButton),\r\n            React__default['default'].createElement(antd.Table, Object.assign({}, tableProps))));\r\n    }\r\n    get clearFiltersButton() {\r\n        if (this.isClearFiltersShown) {\r\n            return (React__default['default'].createElement(antd.Button, { htmlType: 'button', className: styles$2.clearFilters, onClick: this.clearFilters, type: 'link' },\r\n                React__default['default'].createElement(icons.FilterOutlined, null),\r\n                React__default['default'].createElement(\"span\", null,\r\n                    React__default['default'].createElement(reactIntl.FormattedMessage, { id: 'jmix.dataTable.clearAllFilters' }))));\r\n        }\r\n        else {\r\n            return null;\r\n        }\r\n    }\r\n    get isClearFiltersShown() {\r\n        return Object.values(this.tableFilters).some(value => value != null);\r\n    }\r\n    get generateColumnProps() {\r\n        const { columnDefinitions, mainStore, entityName } = this.props;\r\n        return (columnDefinitions !== null && columnDefinitions !== void 0 ? columnDefinitions : this.fields)\r\n            .filter((columnDef) => {\r\n            const { getAttributePermission } = mainStore.security;\r\n            const propertyName = columnDefToPropertyName(columnDef);\r\n            if (propertyName != null) {\r\n                const perm = getAttributePermission(entityName, propertyName);\r\n                return perm === 'MODIFY' || perm === 'VIEW';\r\n            }\r\n            return true; // Column not bound to an entity attribute\r\n        })\r\n            .map((columnDef) => {\r\n            const propertyName = columnDefToPropertyName(columnDef);\r\n            const columnSettings = columnDef.columnProps;\r\n            if (propertyName != null) {\r\n                // Column is bound to an entity property\r\n                const generatedColumnProps = generateDataColumn({\r\n                    propertyName,\r\n                    entityName,\r\n                    enableFilter: this.isFilterForColumnEnabled(propertyName),\r\n                    filters: this.tableFilters,\r\n                    operator: this.operatorsByProperty.get(propertyName),\r\n                    onOperatorChange: this.handleFilterOperatorChange,\r\n                    value: this.valuesByProperty.get(propertyName),\r\n                    onValueChange: this.handleFilterValueChange,\r\n                    enableSorter: this.isSortingForColumnEnabled(propertyName),\r\n                    mainStore: mainStore,\r\n                    customFilterRef: (instance) => this.customFilterForms.set(propertyName, instance),\r\n                    relationOptions: this.getRelationOptions(propertyName)\r\n                });\r\n                return Object.assign(Object.assign(Object.assign({}, generatedColumnProps), this.props.columnProps), (columnSettings ? columnSettings : []) // Then we add customizations from columnDefinitions\r\n                );\r\n            }\r\n            if (columnSettings != null) {\r\n                // Column is not be bound to an entity property. It is a column fully constructed by client.\r\n                // E.g. it can be a calculated column or an action column.\r\n                return columnSettings;\r\n            }\r\n            throw new Error(`Neither field name nor columnProps were provided`);\r\n        });\r\n    }\r\n    isFilterForColumnEnabled(propertyName) {\r\n        return this.props.enableFiltersOnColumns\r\n            ? this.props.enableFiltersOnColumns.indexOf(propertyName) > -1\r\n            : true;\r\n    }\r\n    isSortingForColumnEnabled(propertyName) {\r\n        const { enableSortingOnColumns, metadata, entityName } = this.props;\r\n        const propertyInfo = jmixReactCore.getPropertyInfo(metadata.entities, entityName, propertyName);\r\n        if (propertyInfo != null && jmixReactCore.isRelationProperty(propertyInfo)) {\r\n            // Sorting on Association and Composition fields is disabled\r\n            // because it is currently not possible to sort by instance name\r\n            return false;\r\n        }\r\n        return enableSortingOnColumns\r\n            ? enableSortingOnColumns.indexOf(propertyName) > -1\r\n            : true;\r\n    }\r\n    constructRowKey(record) {\r\n        return jmixReactCore.toIdString(record.id);\r\n    }\r\n}\r\nDataTableComponent.defaultProps = {\r\n    rowSelectionMode: 'single',\r\n    canSelectRowByClick: true,\r\n    hideSelectionColumn: false,\r\n    hideClearFilters: false,\r\n};\r\nfunction columnDefToPropertyName(columnDef) {\r\n    return typeof columnDef === 'string' ? columnDef : columnDef.field;\r\n}\r\nconst dataTable = reactIntl.injectIntl(jmixReactCore.injectMainStore(jmixReactCore.injectMetadata(mobxReact.observer(DataTableComponent))));\n\nvar css_248z = \"/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\\n/* stylelint-disable no-duplicate-selectors */\\n/* stylelint-disable */\\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\\n.RetryDialog-module_retryBtn__394hR {\\n  display: block;\\n  margin-top: 12px;\\n}\\n\";\nvar styles = {\"retryBtn\":\"RetryDialog-module_retryBtn__394hR\"};\nstyleInject(css_248z);\n\nconst RetryDialog = (props) => {\r\n    const { onRetry, messageId = 'common.requestFailed' } = props;\r\n    return (React__namespace.createElement(React__namespace.Fragment, null,\r\n        React__namespace.createElement(reactIntl.FormattedMessage, { id: messageId }),\r\n        \".\",\r\n        React__namespace.createElement(antd.Button, { htmlType: \"button\", className: styles.retryBtn, icon: React__namespace.createElement(icons.RedoOutlined, null), onClick: onRetry },\r\n            React__namespace.createElement(\"span\", null,\r\n                React__namespace.createElement(reactIntl.FormattedMessage, { id: \"common.retry\" })))));\r\n};\n\nconst selectStepFieldErrors = (fieldErrors, fieldNames) => {\r\n    const stepFieldErrors = new Map();\r\n    fieldErrors.forEach((value, key) => {\r\n        if (fieldNames.includes(key)) {\r\n            stepFieldErrors.set(key, value);\r\n        }\r\n    });\r\n    return stepFieldErrors;\r\n};\r\nclass StepStore {\r\n    constructor(config) {\r\n        this.status = 'wait';\r\n        mobx.makeObservable(this, {\r\n            status: mobx.observable,\r\n            setStatus: mobx.action\r\n        });\r\n        this.fieldNames = config.fieldNames;\r\n        this.name = config.name;\r\n    }\r\n    setStatus(status) {\r\n        this.status = status;\r\n    }\r\n}\r\nclass FormWizardStore {\r\n    constructor() {\r\n        this.stepIndex = 0;\r\n        this.steps = [];\r\n        this.values = {};\r\n        this.validateMessages = undefined;\r\n        this.serverValidationErrors = undefined;\r\n        mobx.makeObservable(this, {\r\n            validateMessages: mobx.observable,\r\n            setValidateMessages: mobx.action,\r\n            stepIndex: mobx.observable,\r\n            steps: mobx.observable,\r\n            isFirstStep: mobx.computed,\r\n            isLastStep: mobx.computed,\r\n            currentStep: mobx.computed,\r\n            next: mobx.action,\r\n            prev: mobx.action,\r\n            setStepIndex: mobx.action,\r\n            values: mobx.observable,\r\n            setValues: mobx.action,\r\n            addStep: mobx.action,\r\n            serverValidationErrors: mobx.observable,\r\n            setServerValidationErrors: mobx.action,\r\n        });\r\n    }\r\n    get isFirstStep() {\r\n        return this.stepIndex === 0;\r\n    }\r\n    get isLastStep() {\r\n        return this.stepIndex === Object.keys(this.steps).length - 1;\r\n    }\r\n    get currentStep() {\r\n        return this.steps[this.stepIndex];\r\n    }\r\n    setServerValidationErrors(serverValidationErrors) {\r\n        this.serverValidationErrors = serverValidationErrors;\r\n    }\r\n    setValidateMessages(validateMessages) {\r\n        this.validateMessages = validateMessages;\r\n    }\r\n    addStep(stepStore) {\r\n        if (this.steps.find(step => step.name === stepStore.name) == null) {\r\n            this.steps.push(stepStore);\r\n        }\r\n        else {\r\n            this.steps.reduce(step => step.name === stepStore.name ? stepStore : step);\r\n        }\r\n    }\r\n    next() {\r\n        this.stepIndex += 1;\r\n    }\r\n    prev() {\r\n        this.stepIndex -= 1;\r\n    }\r\n    setStepIndex(stepIndex) {\r\n        this.stepIndex = stepIndex;\r\n    }\r\n    setValues(values) {\r\n        this.values = Object.assign({}, values);\r\n    }\r\n    // Helpers\r\n    getStepByName(stepName) {\r\n        return this.steps.find(step => step.name === stepName);\r\n    }\r\n}\n\nconst defaultFormWizardHelpers = {\r\n    current: {\r\n        validateFields: () => Promise.reject('validateCurrentFields function is undefinded'),\r\n        onFinish: () => new Error('validateCurrentFields function is undefinded'),\r\n        onFinishFailed: undefined,\r\n    }\r\n};\r\nconst FormWizardContext = React.createContext({\r\n    formWizardStore: new FormWizardStore(),\r\n    formWizardHelpersRef: defaultFormWizardHelpers,\r\n});\r\nconst FormWizardProvider = ({ children }) => {\r\n    const [formWizardStore] = React.useState(() => new FormWizardStore());\r\n    return (React__default['default'].createElement(FormWizardContext.Provider, { value: {\r\n            formWizardStore,\r\n            formWizardHelpersRef: defaultFormWizardHelpers,\r\n        } }, children));\r\n};\r\nconst useFormWizard = () => React.useContext(FormWizardContext);\r\nfunction withFormWizardProvider(Comp) {\r\n    return (props) => {\r\n        return (React__default['default'].createElement(FormWizardProvider, null,\r\n            React__default['default'].createElement(Comp, Object.assign({}, props))));\r\n    };\r\n}\n\nconst FormWizardManager = ({ onFinish, onFinishFailed, children, validateMessages, }) => {\r\n    const { formWizardStore, formWizardHelpersRef } = useFormWizard();\r\n    React.useEffect(() => {\r\n        formWizardStore.setValidateMessages(validateMessages);\r\n    }, [formWizardStore, validateMessages]);\r\n    React.useEffect(() => {\r\n        formWizardHelpersRef.current = Object.assign(Object.assign({}, formWizardHelpersRef.current), { onFinish,\r\n            onFinishFailed });\r\n    }, [onFinish, onFinishFailed, formWizardHelpersRef.current]);\r\n    return (React__default['default'].createElement(React__default['default'].Fragment, null, children));\r\n};\n\nconst useSetupStep = ({ formWizardStore, stepStore, fieldNames, form, stepName, }) => {\r\n    const intl = reactIntl.useIntl();\r\n    React.useEffect(() => {\r\n        const stepValues = Object.entries(formWizardStore.values)\r\n            .reduce((acc, [key, value]) => {\r\n            if (fieldNames.includes(key)) {\r\n                return Object.assign(Object.assign({}, acc), { [key]: value });\r\n            }\r\n            return acc;\r\n        }, {});\r\n        form.setFieldsValue(stepValues);\r\n    }, [form, formWizardStore.values]);\r\n    React.useEffect(() => {\r\n        var _a;\r\n        if (((_a = formWizardStore.currentStep) === null || _a === void 0 ? void 0 : _a.name) === stepName\r\n            && formWizardStore.currentStep.status !== 'error') {\r\n            stepStore === null || stepStore === void 0 ? void 0 : stepStore.setStatus('process');\r\n        }\r\n    }, [formWizardStore, formWizardStore.currentStep]);\r\n    const stepServerValidation = React.useMemo(() => {\r\n        var _a, _b;\r\n        const stepFieldErrors = new Map();\r\n        (_b = (_a = formWizardStore.serverValidationErrors) === null || _a === void 0 ? void 0 : _a.fieldErrors) === null || _b === void 0 ? void 0 : _b.forEach((fieldErrorValue, fieldErrorKey) => {\r\n            if (fieldNames.includes(fieldErrorKey)) {\r\n                stepFieldErrors.set(fieldErrorKey, fieldErrorValue);\r\n            }\r\n        });\r\n        if (stepFieldErrors.size > 0) {\r\n            stepStore === null || stepStore === void 0 ? void 0 : stepStore.setStatus('error');\r\n            antd.message.error(intl.formatMessage({ id: \"formWizard.serverValidationError\" }));\r\n        }\r\n        return Object.assign(Object.assign({}, formWizardStore.serverValidationErrors), { fieldErrors: stepFieldErrors.size > 0\r\n                ? stepFieldErrors\r\n                : undefined });\r\n    }, [form, stepStore, formWizardStore.serverValidationErrors]);\r\n    useAntdFormValidation(form, stepServerValidation);\r\n};\r\nconst FormWizardStep = mobxReact.observer(({ children, stepName, fieldNames, }) => {\r\n    const [form] = antd.Form.useForm();\r\n    const intl = reactIntl.useIntl();\r\n    const { formWizardStore, formWizardHelpersRef } = useFormWizard();\r\n    React.useEffect(() => {\r\n        formWizardStore.addStep(new StepStore({\r\n            name: stepName,\r\n            fieldNames,\r\n        }));\r\n    }, [formWizardStore, stepName, fieldNames]);\r\n    const stepStore = formWizardStore.getStepByName(stepName);\r\n    const validateCurrentStep = React.useCallback(async () => {\r\n        try {\r\n            await form.validateFields();\r\n            stepStore === null || stepStore === void 0 ? void 0 : stepStore.setStatus('finish');\r\n        }\r\n        catch (error) {\r\n            console.error(error);\r\n            stepStore === null || stepStore === void 0 ? void 0 : stepStore.setStatus('error');\r\n            antd.message.error(intl.formatMessage({ id: 'formWizard.currectStepValidationError' }));\r\n            throw error;\r\n        }\r\n    }, [form, formWizardStore.steps, formWizardStore.stepIndex]);\r\n    React.useEffect(() => {\r\n        var _a;\r\n        if (((_a = formWizardStore.currentStep) === null || _a === void 0 ? void 0 : _a.name) === stepName) {\r\n            formWizardHelpersRef.current = Object.assign(Object.assign({}, formWizardHelpersRef.current), { validateFields: validateCurrentStep });\r\n        }\r\n    }, [validateCurrentStep]);\r\n    const handlerValuesChange = React.useCallback((newValues) => {\r\n        formWizardStore.setValues(Object.assign(Object.assign({}, formWizardStore.values), newValues));\r\n    }, [formWizardStore, formWizardStore.values]);\r\n    useSetupStep({\r\n        formWizardStore,\r\n        stepStore,\r\n        stepName,\r\n        fieldNames,\r\n        form,\r\n    });\r\n    const style = React.useMemo(() => {\r\n        var _a;\r\n        return { display: ((_a = formWizardStore.currentStep) === null || _a === void 0 ? void 0 : _a.name) !== stepName ? 'none' : undefined };\r\n    }, [formWizardStore.currentStep, stepName]);\r\n    return (React__default['default'].createElement(antd.Form, { form: form, layout: \"vertical\", onValuesChange: handlerValuesChange, validateMessages: formWizardStore.validateMessages, style: style }, children));\r\n});\n\nconst FormWizardStepStatus = mobxReact.observer(({ onSelectStep }) => {\r\n    const { formWizardStore } = useFormWizard();\r\n    return (React__default['default'].createElement(antd.Steps, { style: { marginBottom: 12 }, size: \"small\", current: formWizardStore.stepIndex, onChange: onSelectStep }, formWizardStore.steps.map(step => (React__default['default'].createElement(antd.Steps.Step, { disabled: step.status === 'wait', key: step.name, title: step.name, status: step.status })))));\r\n});\n\nconst FormWizardButtons = mobxReact.observer(({ onNextStep, onPreviousStep, onSubmit, onCancel, }) => {\r\n    const { formWizardStore } = useFormWizard();\r\n    return (React__default['default'].createElement(antd.Space, null,\r\n        onCancel != null && (React__default['default'].createElement(antd.Button, { onClick: onCancel },\r\n            React__default['default'].createElement(reactIntl.FormattedMessage, { id: \"common.cancel\" }))),\r\n        !formWizardStore.isFirstStep && (React__default['default'].createElement(antd.Button, { onClick: onPreviousStep },\r\n            React__default['default'].createElement(reactIntl.FormattedMessage, { id: \"common.previous\" }))),\r\n        formWizardStore.isLastStep ? (React__default['default'].createElement(antd.Button, { onClick: onSubmit, type: \"primary\" },\r\n            React__default['default'].createElement(reactIntl.FormattedMessage, { id: \"common.submit\" }))) : (React__default['default'].createElement(antd.Button, { onClick: onNextStep, type: \"primary\" },\r\n            React__default['default'].createElement(reactIntl.FormattedMessage, { id: \"common.next\" })))));\r\n});\n\nfunction useEntityEditorFromWizard(options) {\r\n    const metadata = jmixReactCore.useMetadata();\r\n    const entityEditorData = jmixReactWeb.useEntityEditor(options);\r\n    const { formWizardStore, formWizardHelpersRef } = useFormWizard();\r\n    React.useEffect(() => {\r\n        formWizardStore.setServerValidationErrors(entityEditorData.serverValidationErrors);\r\n    }, [formWizardStore, entityEditorData.serverValidationErrors]);\r\n    React.useEffect(() => {\r\n        if (entityEditorData.item) {\r\n            formWizardStore.setValues(jmixFront_to_ant(entityEditorData.item, options.entityName, metadata));\r\n        }\r\n    }, [formWizardStore, metadata, entityEditorData.item, options.entityName]);\r\n    const handleSelectStep = React.useCallback(async (newStepIndex) => {\r\n        await formWizardHelpersRef.current.validateFields();\r\n        formWizardStore.setStepIndex(newStepIndex);\r\n    }, [formWizardStore, formWizardHelpersRef.current.validateFields]);\r\n    const handleNextStep = React.useCallback(async () => {\r\n        await formWizardHelpersRef.current.validateFields();\r\n        formWizardStore.next();\r\n    }, [formWizardStore, formWizardHelpersRef.current, formWizardHelpersRef.current.validateFields]);\r\n    const handlePreviousStep = React.useCallback(async () => {\r\n        await formWizardHelpersRef.current.validateFields();\r\n        formWizardStore.prev();\r\n    }, [formWizardStore, formWizardHelpersRef.current, formWizardHelpersRef.current.validateFields]);\r\n    const handleSubmitBtn = React.useCallback(async () => {\r\n        await formWizardHelpersRef.current.validateFields();\r\n        if (formWizardStore.steps.every(step => step.status === 'finish')) {\r\n            try {\r\n                const allValues = formWizardStore.values;\r\n                formWizardHelpersRef.current.onFinish(allValues);\r\n            }\r\n            catch (error) {\r\n                if (formWizardHelpersRef.current.onFinishFailed) {\r\n                    formWizardHelpersRef.current.onFinishFailed(error);\r\n                }\r\n            }\r\n        }\r\n    }, [formWizardHelpersRef.current, formWizardHelpersRef.current.validateFields, entityEditorData.handleSubmit, formWizardStore]);\r\n    return Object.assign(Object.assign({}, entityEditorData), { handleSelectStep,\r\n        handleNextStep,\r\n        handlePreviousStep,\r\n        handleSubmitBtn });\r\n}\n\nclass AntdLocalesStore {\r\n    constructor() {\r\n        this._antdLocaleMapping = {};\r\n        mobx.makeObservable(this, {\r\n            _antdLocaleMapping: mobx.observable,\r\n            addAntdLocale: mobx.action,\r\n            antdLocaleMapping: mobx.computed\r\n        });\r\n    }\r\n    addAntdLocale({ localeName, antdLocale }) {\r\n        this._antdLocaleMapping[localeName] = antdLocale;\r\n    }\r\n    get antdLocaleMapping() {\r\n        return this._antdLocaleMapping;\r\n    }\r\n}\r\nconst antdLocalesStore = new AntdLocalesStore();\n\nconst I18nProvider = mobxReact.observer(({ children, rtlLayout }) => {\r\n    const mainStore = jmixReactCore.getMainStore();\r\n    const getDirection = React.useCallback(() => {\r\n        const rtlCondition = rtlLayout\r\n            || jmixReactWeb.localesStore.isRtlLayout(mainStore.locale);\r\n        return rtlCondition ? 'rtl' : 'ltr';\r\n    }, [rtlLayout, mainStore.locale]);\r\n    if (!mainStore || !mainStore.locale) {\r\n        return null;\r\n    }\r\n    return (React__default['default'].createElement(reactIntl.IntlProvider, { locale: mainStore.locale, messages: jmixReactWeb.localesStore.messagesMapping[mainStore.locale] },\r\n        React__default['default'].createElement(antd.ConfigProvider, { locale: antdLocalesStore.antdLocaleMapping[mainStore.locale], direction: getDirection() }, children)));\r\n});\n\nfunction VerticalMenu(_a) {\r\n    var { children, style } = _a, restProps = __rest(_a, [\"children\", \"style\"]);\r\n    return (React__default['default'].createElement(antd.Menu, Object.assign({ mode: \"inline\", style: Object.assign({ height: \"100%\", borderRight: 0 }, style) }, restProps), children));\r\n}\n\nfunction HorizontalMenu(_a) {\r\n    var { children, style } = _a, restProps = __rest(_a, [\"children\", \"style\"]);\r\n    return (React__default['default'].createElement(antd.Menu, Object.assign({ mode: \"horizontal\", style: Object.assign({ height: \"100%\", borderRight: 0 }, style) }, restProps), children));\r\n}\n\nconst MenuItem = (_a) => {\r\n    var { screenId, caption, title, onClick, children } = _a, menuItemProps = __rest(_a, [\"screenId\", \"caption\", \"title\", \"onClick\", \"children\"]);\r\n    const [formattedCaption, childrenWithCaption, menuItemOnClick] = jmixReactWeb.useMenuItem({ screenId, caption, onClick, children });\r\n    return (React__default['default'].createElement(antd.Menu.Item, Object.assign({}, menuItemProps, { title: title !== null && title !== void 0 ? title : formattedCaption, onClick: menuItemOnClick }), childrenWithCaption));\r\n};\n\nconst SubMenuItem = (_a) => {\r\n    var { caption } = _a, subMenuItemProps = __rest(_a, [\"caption\"]);\r\n    const { formatMessage, locale } = reactIntl.useIntl();\r\n    const formattedCaption = React.useMemo(() => {\r\n        return formatMessage({ id: caption, defaultMessage: caption });\r\n    }, [caption, locale]);\r\n    return (React__default['default'].createElement(antd.Menu.SubMenu, Object.assign({}, subMenuItemProps, { title: formattedCaption })));\r\n};\n\nexports.ContentArea = ContentArea;\nexports.DataTable = dataTable;\nexports.DataTableCustomFilter = dataTableCustomFilter;\nexports.DatePicker = DatePicker;\nexports.EnumField = EnumField;\nexports.Field = Field;\nexports.FieldPermissionContainer = FieldPermissionContainer;\nexports.FileUpload = fileUpload;\nexports.FormField = FormField;\nexports.FormWizardButtons = FormWizardButtons;\nexports.FormWizardContext = FormWizardContext;\nexports.FormWizardManager = FormWizardManager;\nexports.FormWizardProvider = FormWizardProvider;\nexports.FormWizardStep = FormWizardStep;\nexports.FormWizardStepStatus = FormWizardStepStatus;\nexports.FormWizardStore = FormWizardStore;\nexports.GlobalErrorsAlert = GlobalErrorsAlert;\nexports.HorizontalMenu = HorizontalMenu;\nexports.I18nProvider = I18nProvider;\nexports.ImagePreview = component;\nexports.MasterDetailManager = MasterDetailManager;\nexports.MasterDetailManagerContext = MasterDetailManagerContext;\nexports.MasterDetailProvider = MasterDetailProvider;\nexports.MasterDetailStore = MasterDetailStore;\nexports.MenuItem = MenuItem;\nexports.Modals = Modals;\nexports.MultiSelectionTableStore = MultiSelectionTableStore;\nexports.MultiTabs = MultiTabs;\nexports.Paging = Paging;\nexports.RetryDialog = RetryDialog;\nexports.Spinner = Spinner;\nexports.StepStore = StepStore;\nexports.SubMenuItem = SubMenuItem;\nexports.TimePicker = TimePicker;\nexports.VerticalMenu = VerticalMenu;\nexports.addPagingParams = addPagingParams;\nexports.ant_to_jmixFront = ant_to_jmixFront;\nexports.antdLocalesStore = antdLocalesStore;\nexports.createPagingConfig = createPagingConfig;\nexports.createUseAntdForm = createUseAntdForm;\nexports.createUseAntdFormValidation = createUseAntdFormValidation;\nexports.generateCustomFilterDropdown = generateCustomFilterDropdown;\nexports.generateDataColumn = generateDataColumn;\nexports.generateEnumFilter = generateEnumFilter;\nexports.getDefaultFormItemProps = getDefaultFormItemProps;\nexports.getEntityProperties = getEntityProperties;\nexports.getPreservedConditions = getPreservedConditions;\nexports.graphqlFilterToTableFilters = graphqlFilterToTableFilters;\nexports.handleTableChange = handleTableChange;\nexports.jmixFront_to_ant = jmixFront_to_ant;\nexports.modals = modals;\nexports.notifications = notifications;\nexports.operatorToOptionClassName = operatorToOptionClassName;\nexports.parsePagingParams = parsePagingParams;\nexports.passthroughRule = passthroughRule;\nexports.saveHistory = saveHistory;\nexports.selectStepFieldErrors = selectStepFieldErrors;\nexports.setFilters = setFilters;\nexports.setPagination = setPagination;\nexports.setSorter = setSorter;\nexports.showDeleteEntityDialog = showDeleteEntityDialog;\nexports.useChangeConfirm = useChangeConfirm;\nexports.useCreateAntdResetForm = useCreateAntdResetForm;\nexports.useEntityDeleteCallback = useEntityDeleteCallback;\nexports.useEntityEditorFromWizard = useEntityEditorFromWizard;\nexports.useEntityPersistCallbacks = useEntityPersistCallbacks;\nexports.useFormWizard = useFormWizard;\nexports.useMasterDetailEditor = useMasterDetailEditor;\nexports.useMasterDetailList = useMasterDetailList;\nexports.useMasterDetailStore = useMasterDetailStore;\nexports.useMultiSelectionTable = useMultiSelectionTable;\nexports.useOpenScreenErrorCallback = useOpenScreenErrorCallback;\nexports.useSubmitFailedCallback = useSubmitFailedCallback;\nexports.withFormWizardProvider = withFormWizardProvider;\n"]}