@bigbinary/neeto-fields-frontend 1.4.0-beta2 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DeleteAlert-063eea87.js +764 -0
- package/dist/DeleteAlert-063eea87.js.map +1 -0
- package/dist/DeleteAlert-f2c5236d.js +781 -0
- package/dist/DeleteAlert-f2c5236d.js.map +1 -0
- package/dist/FieldDeleteAlert.js +23 -0
- package/dist/FieldDeleteAlert.js.map +1 -0
- package/dist/FieldInputs.js +58 -0
- package/dist/FieldInputs.js.map +1 -0
- package/dist/FieldValueInputWrapper-adbbc915.js +198 -0
- package/dist/FieldValueInputWrapper-adbbc915.js.map +1 -0
- package/dist/FieldValueInputWrapper-f1f2e095.js +189 -0
- package/dist/FieldValueInputWrapper-f1f2e095.js.map +1 -0
- package/dist/FieldValuesContainer.js +223 -0
- package/dist/FieldValuesContainer.js.map +1 -0
- package/dist/FieldsDashboard.js +5000 -0
- package/dist/FieldsDashboard.js.map +1 -0
- package/dist/FieldsPane.js +563 -0
- package/dist/FieldsPane.js.map +1 -0
- package/dist/InlineFieldValueInput.js +157 -0
- package/dist/InlineFieldValueInput.js.map +1 -0
- package/dist/_commonjsHelpers-1789f0cf.js +8 -0
- package/dist/_commonjsHelpers-1789f0cf.js.map +1 -0
- package/dist/_commonjsHelpers-b3309d7b.js +11 -0
- package/dist/_commonjsHelpers-b3309d7b.js.map +1 -0
- package/dist/cjs/FieldDeleteAlert.js +29 -0
- package/dist/cjs/FieldDeleteAlert.js.map +1 -0
- package/dist/cjs/FieldInputs.js +64 -0
- package/dist/cjs/FieldInputs.js.map +1 -0
- package/dist/cjs/FieldValuesContainer.js +232 -0
- package/dist/cjs/FieldValuesContainer.js.map +1 -0
- package/dist/cjs/FieldsDashboard.js +5020 -0
- package/dist/cjs/FieldsDashboard.js.map +1 -0
- package/dist/cjs/FieldsPane.js +598 -0
- package/dist/cjs/FieldsPane.js.map +1 -0
- package/dist/cjs/InlineFieldValueInput.js +164 -0
- package/dist/cjs/InlineFieldValueInput.js.map +1 -0
- package/dist/cjs/hooks.js +20 -0
- package/dist/cjs/hooks.js.map +1 -0
- package/dist/cjs/index.js +84 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/utils.js +34 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/constants-0e6017ea.js +57 -0
- package/dist/constants-0e6017ea.js.map +1 -0
- package/dist/constants-c71008a3.js +64 -0
- package/dist/constants-c71008a3.js.map +1 -0
- package/dist/hooks.js +8 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index-265f7913.js +117 -0
- package/dist/index-265f7913.js.map +1 -0
- package/dist/index-27e54c2c.js +130 -0
- package/dist/index-27e54c2c.js.map +1 -0
- package/dist/index.js +64 -8236
- package/dist/index.js.map +1 -1
- package/dist/query-0df5b2dd.js +13 -0
- package/dist/query-0df5b2dd.js.map +1 -0
- package/dist/query-1a62b3ac.js +10 -0
- package/dist/query-1a62b3ac.js.map +1 -0
- package/dist/slicedToArray-50f7cc19.js +46 -0
- package/dist/slicedToArray-50f7cc19.js.map +1 -0
- package/dist/slicedToArray-6198349b.js +44 -0
- package/dist/slicedToArray-6198349b.js.map +1 -0
- package/dist/useFieldsApi-14928ecf.js +161 -0
- package/dist/useFieldsApi-14928ecf.js.map +1 -0
- package/dist/useFieldsApi-5c114bac.js +149 -0
- package/dist/useFieldsApi-5c114bac.js.map +1 -0
- package/dist/utils-9f816116.js +1140 -0
- package/dist/utils-9f816116.js.map +1 -0
- package/dist/utils-a0333c9c.js +1180 -0
- package/dist/utils-a0333c9c.js.map +1 -0
- package/dist/utils.js +26 -0
- package/dist/utils.js.map +1 -0
- package/package.json +28 -14
- package/types.d.ts +1 -1
- package/dist/index.cjs.js +0 -8306
- package/dist/index.cjs.js.map +0 -1
|
@@ -0,0 +1,563 @@
|
|
|
1
|
+
import { _ as _defineProperty, b as _toConsumableArray, a as _objectWithoutProperties } from './index-265f7913.js';
|
|
2
|
+
import { useRef } from 'react';
|
|
3
|
+
import Pane from '@bigbinary/neetoui/Pane';
|
|
4
|
+
import { pick, values, isEmpty, omit, assoc } from 'ramda';
|
|
5
|
+
import Typography from '@bigbinary/neetoui/Typography';
|
|
6
|
+
import Form from '@bigbinary/neetoui/formik/Form';
|
|
7
|
+
import { useTranslation } from 'react-i18next';
|
|
8
|
+
import { A as ALL_KINDS } from './constants-0e6017ea.js';
|
|
9
|
+
import { c as useCreateField, d as useShowField, e as useUpdateField } from './useFieldsApi-5c114bac.js';
|
|
10
|
+
import { t } from 'i18next';
|
|
11
|
+
import { filterBy, toLabelAndValue, isNotEmpty } from '@bigbinary/neeto-cist';
|
|
12
|
+
import * as yup from 'yup';
|
|
13
|
+
import ActionBlock from '@bigbinary/neetoui/formik/ActionBlock';
|
|
14
|
+
import { v4 } from 'uuid';
|
|
15
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
16
|
+
import { useFormikContext, FieldArray } from 'formik';
|
|
17
|
+
import Label from '@bigbinary/neetoui/Label';
|
|
18
|
+
import Input from '@bigbinary/neetoui/formik/Input';
|
|
19
|
+
import Select from '@bigbinary/neetoui/formik/Select';
|
|
20
|
+
import Switch from '@bigbinary/neetoui/formik/Switch';
|
|
21
|
+
import { isMetaKeyPressed } from '@bigbinary/neeto-commons-frontend/react-utils';
|
|
22
|
+
import Delete from '@bigbinary/neeto-icons/Delete';
|
|
23
|
+
import Button from '@bigbinary/neetoui/Button';
|
|
24
|
+
import PageLoader from '@bigbinary/neeto-molecules/PageLoader';
|
|
25
|
+
import '@tanstack/react-query';
|
|
26
|
+
import 'axios';
|
|
27
|
+
import '@bigbinary/neeto-commons-frontend/utils';
|
|
28
|
+
import './query-1a62b3ac.js';
|
|
29
|
+
|
|
30
|
+
function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
31
|
+
function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
32
|
+
var arrangeOptionsDisplayOrder = function arrangeOptionsDisplayOrder(options) {
|
|
33
|
+
return options.map(function (option, index) {
|
|
34
|
+
return _objectSpread$3(_objectSpread$3({}, option), {}, {
|
|
35
|
+
displayOrder: index
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
var buildPayload = function buildPayload(_ref) {
|
|
40
|
+
var formValues = _ref.formValues,
|
|
41
|
+
_ref$resourceType = _ref.resourceType,
|
|
42
|
+
resourceType = _ref$resourceType === void 0 ? "" : _ref$resourceType,
|
|
43
|
+
_ref$ownerId = _ref.ownerId,
|
|
44
|
+
ownerId = _ref$ownerId === void 0 ? "" : _ref$ownerId;
|
|
45
|
+
var kind = formValues.kind.value;
|
|
46
|
+
var name = formValues.name.trim();
|
|
47
|
+
return {
|
|
48
|
+
ownerId: isEmpty(ownerId) ? undefined : ownerId,
|
|
49
|
+
field: _objectSpread$3(_objectSpread$3({}, omit(["createdAt", "id", "ownerId", "ownerType", "updatedAt"], formValues)), {}, {
|
|
50
|
+
kind: kind,
|
|
51
|
+
name: name,
|
|
52
|
+
resourceType: isEmpty(resourceType) ? undefined : resourceType,
|
|
53
|
+
data: isDropdown(kind) ? arrangeOptionsDisplayOrder(formValues.data) : formValues.data
|
|
54
|
+
})
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
var isDropdown = function isDropdown(kind) {
|
|
58
|
+
return ["single_option", "multi_option"].includes(kind);
|
|
59
|
+
};
|
|
60
|
+
var isRegex = function isRegex(kind) {
|
|
61
|
+
return kind === "regex";
|
|
62
|
+
};
|
|
63
|
+
var isAdditionalDataNeeded = function isAdditionalDataNeeded(kind) {
|
|
64
|
+
return ADDITIONAL_DATA_NEEDED_FIELD_KINDS.includes(kind);
|
|
65
|
+
};
|
|
66
|
+
var getPermittedKinds = function getPermittedKinds(_ref2) {
|
|
67
|
+
var allowedKinds = _ref2.allowedKinds,
|
|
68
|
+
selectedKind = _ref2.selectedKind;
|
|
69
|
+
var filteredKinds = pick(allowedKinds, FIELD_KINDS);
|
|
70
|
+
return filterBy({
|
|
71
|
+
group: selectedKind === null || selectedKind === void 0 ? void 0 : selectedKind.group
|
|
72
|
+
}, values(filteredKinds));
|
|
73
|
+
};
|
|
74
|
+
var generateValidationSchema = function generateValidationSchema(additionalValidations) {
|
|
75
|
+
return yup.object().shape(_objectSpread$3(_objectSpread$3({}, BASIC_FIELD_FORM_VALIDATIONS), additionalValidations));
|
|
76
|
+
};
|
|
77
|
+
var renderFormFooter = function renderFormFooter(_ref3) {
|
|
78
|
+
var onClose = _ref3.onClose,
|
|
79
|
+
loading = _ref3.loading;
|
|
80
|
+
return /*#__PURE__*/jsx(Pane.Footer, {
|
|
81
|
+
children: /*#__PURE__*/jsx(ActionBlock, {
|
|
82
|
+
cancelButtonProps: {
|
|
83
|
+
onClick: onClose
|
|
84
|
+
},
|
|
85
|
+
isSubmitting: loading
|
|
86
|
+
})
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
var getDefaultOption = function getDefaultOption() {
|
|
90
|
+
return {
|
|
91
|
+
id: v4(),
|
|
92
|
+
label: "",
|
|
93
|
+
displayOrder: 0
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
var PERMITTED_REGEX_PATTERN = /^\/.*\/[igmsyu]*$/;
|
|
98
|
+
var ADVANCED_REGEX_ASSERTION_PATTERN = /\(\?=[^)]*\)|\(\?![^)]*\)|\(\?<=[^)]*\)|\(\?<![^)]*\)/;
|
|
99
|
+
var regexValidationSchema = yup.object().shape({
|
|
100
|
+
condition: yup.string().required(t("neetoFields.validations.regexConditionIsRequired")).matches(PERMITTED_REGEX_PATTERN, t("neetoFields.validations.invalidRegexPattern")).test({
|
|
101
|
+
name: "test-regex-is-advanced",
|
|
102
|
+
message: t("neetoFields.validations.advancedRegexAssertionsNotSupported") || "",
|
|
103
|
+
test: function test(value) {
|
|
104
|
+
return !ADVANCED_REGEX_ASSERTION_PATTERN.test(value);
|
|
105
|
+
}
|
|
106
|
+
}).test({
|
|
107
|
+
name: "test-regex-condition-pattern",
|
|
108
|
+
message: t("neetoFields.validations.invalidRegexPattern") || "",
|
|
109
|
+
test: function test(value) {
|
|
110
|
+
try {
|
|
111
|
+
var lastIndex = value.lastIndexOf("/");
|
|
112
|
+
var condition = value.substring(1, lastIndex);
|
|
113
|
+
// Evaluating the regex to check if it is valid
|
|
114
|
+
new RegExp(condition);
|
|
115
|
+
"".search(condition);
|
|
116
|
+
return true;
|
|
117
|
+
} catch (_unused) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}),
|
|
122
|
+
helpMessage: yup.string().required(t("neetoFields.validations.regexHelpMessageIsRequired"))
|
|
123
|
+
});
|
|
124
|
+
var dropDownOptionsValidationSchema = yup.array().of(yup.object().shape({
|
|
125
|
+
label: yup.string().trim().required(t("neetoFields.validations.fieldOptionIsRequired")),
|
|
126
|
+
displayOrder: yup.number()
|
|
127
|
+
})).min(1, t("neetoFields.validations.atLeastFieldOptionIsRequired"));
|
|
128
|
+
var FIELD_KINDS = {
|
|
129
|
+
text: {
|
|
130
|
+
value: "text",
|
|
131
|
+
label: t("neetoFields.fields.kinds.text"),
|
|
132
|
+
group: 1
|
|
133
|
+
},
|
|
134
|
+
number: {
|
|
135
|
+
value: "number",
|
|
136
|
+
label: t("neetoFields.fields.kinds.number"),
|
|
137
|
+
group: 2
|
|
138
|
+
},
|
|
139
|
+
monetary: {
|
|
140
|
+
value: "monetary",
|
|
141
|
+
label: t("neetoFields.fields.kinds.monetary"),
|
|
142
|
+
group: 2
|
|
143
|
+
},
|
|
144
|
+
single_option: {
|
|
145
|
+
value: "single_option",
|
|
146
|
+
label: t("neetoFields.fields.kinds.singleOption"),
|
|
147
|
+
group: 12
|
|
148
|
+
},
|
|
149
|
+
multi_option: {
|
|
150
|
+
value: "multi_option",
|
|
151
|
+
label: t("neetoFields.fields.kinds.multiOption"),
|
|
152
|
+
group: 3
|
|
153
|
+
},
|
|
154
|
+
date: {
|
|
155
|
+
value: "date",
|
|
156
|
+
label: t("neetoFields.fields.kinds.date"),
|
|
157
|
+
group: 4
|
|
158
|
+
},
|
|
159
|
+
time: {
|
|
160
|
+
value: "time",
|
|
161
|
+
label: t("neetoFields.fields.kinds.time"),
|
|
162
|
+
group: 5
|
|
163
|
+
},
|
|
164
|
+
date_range: {
|
|
165
|
+
value: "date_range",
|
|
166
|
+
label: t("neetoFields.fields.kinds.dateRange"),
|
|
167
|
+
group: 6
|
|
168
|
+
},
|
|
169
|
+
time_range: {
|
|
170
|
+
value: "time_range",
|
|
171
|
+
label: t("neetoFields.fields.kinds.timeRange"),
|
|
172
|
+
group: 7
|
|
173
|
+
},
|
|
174
|
+
text_area: {
|
|
175
|
+
value: "text_area",
|
|
176
|
+
label: t("neetoFields.fields.kinds.textArea"),
|
|
177
|
+
group: 1
|
|
178
|
+
},
|
|
179
|
+
textarea: {
|
|
180
|
+
value: "textarea",
|
|
181
|
+
label: t("neetoFields.fields.kinds.textarea"),
|
|
182
|
+
group: 1
|
|
183
|
+
},
|
|
184
|
+
person: {
|
|
185
|
+
value: "person",
|
|
186
|
+
label: t("neetoFields.fields.kinds.person"),
|
|
187
|
+
group: 8
|
|
188
|
+
},
|
|
189
|
+
checkbox: {
|
|
190
|
+
value: "checkbox",
|
|
191
|
+
label: t("neetoFields.fields.kinds.checkbox"),
|
|
192
|
+
group: 9
|
|
193
|
+
},
|
|
194
|
+
regex: {
|
|
195
|
+
value: "regex",
|
|
196
|
+
label: t("neetoFields.fields.kinds.regex"),
|
|
197
|
+
group: 10
|
|
198
|
+
},
|
|
199
|
+
integer: {
|
|
200
|
+
value: "integer",
|
|
201
|
+
label: t("neetoFields.fields.kinds.integer"),
|
|
202
|
+
group: 2
|
|
203
|
+
},
|
|
204
|
+
decimal: {
|
|
205
|
+
value: "decimal",
|
|
206
|
+
label: t("neetoFields.fields.kinds.decimal"),
|
|
207
|
+
group: 2
|
|
208
|
+
},
|
|
209
|
+
datetime: {
|
|
210
|
+
value: "datetime",
|
|
211
|
+
label: t("neetoFields.fields.kinds.datetime"),
|
|
212
|
+
group: 11
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
var ADDITIONAL_DATA_NEEDED_FIELD_KINDS = ["single_option", "multi_option", "regex"];
|
|
216
|
+
var INITIAL_FIELDS = {
|
|
217
|
+
name: "",
|
|
218
|
+
kind: toLabelAndValue("text"),
|
|
219
|
+
isRequired: false
|
|
220
|
+
};
|
|
221
|
+
var DEFAULT_REGEX_DATA = {
|
|
222
|
+
condition: "",
|
|
223
|
+
helpMessage: ""
|
|
224
|
+
};
|
|
225
|
+
var BASIC_FIELD_FORM_VALIDATIONS = {
|
|
226
|
+
name: yup.string().trim().required(t("neetoFields.validations.fieldNameIsRequired")),
|
|
227
|
+
isRequired: yup["boolean"](),
|
|
228
|
+
kind: yup.object().shape({
|
|
229
|
+
value: yup.string().required()
|
|
230
|
+
}).required(t("neetoFields.validations.kindIsRequired")),
|
|
231
|
+
data: yup.mixed().when("kind", {
|
|
232
|
+
is: function is(kind) {
|
|
233
|
+
return isRegex(kind === null || kind === void 0 ? void 0 : kind.value);
|
|
234
|
+
},
|
|
235
|
+
then: regexValidationSchema
|
|
236
|
+
}).when("kind", {
|
|
237
|
+
is: function is(kind) {
|
|
238
|
+
return isDropdown(kind === null || kind === void 0 ? void 0 : kind.value);
|
|
239
|
+
},
|
|
240
|
+
then: dropDownOptionsValidationSchema
|
|
241
|
+
})
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
var AdditionalInputs = function AdditionalInputs() {
|
|
245
|
+
var _useTranslation = useTranslation(),
|
|
246
|
+
t = _useTranslation.t;
|
|
247
|
+
var _useFormikContext = useFormikContext(),
|
|
248
|
+
_useFormikContext$val = _useFormikContext.values,
|
|
249
|
+
kind = _useFormikContext$val.kind,
|
|
250
|
+
options = _useFormikContext$val.data,
|
|
251
|
+
isSystem = _useFormikContext$val.isSystem;
|
|
252
|
+
var removeOption = function removeOption(arrayHelpers, index) {
|
|
253
|
+
return arrayHelpers.remove(index);
|
|
254
|
+
};
|
|
255
|
+
var addOption = function addOption(arrayHelpers) {
|
|
256
|
+
return arrayHelpers.push(getDefaultOption());
|
|
257
|
+
};
|
|
258
|
+
var handleKeyDown = function handleKeyDown(event, arrayHelpers) {
|
|
259
|
+
var _inputs;
|
|
260
|
+
if (event.key !== "Enter" || isMetaKeyPressed(event)) return;
|
|
261
|
+
var form = event.target.form;
|
|
262
|
+
var inputs = _toConsumableArray(form.querySelectorAll("#neeto-fields-dropdown-options-wrapper input"));
|
|
263
|
+
var currentIndex = inputs.indexOf(event.target);
|
|
264
|
+
currentIndex >= inputs.length - 1 ? addOption(arrayHelpers) : (_inputs = inputs[currentIndex + 1]) === null || _inputs === void 0 ? void 0 : _inputs.focus();
|
|
265
|
+
event.preventDefault();
|
|
266
|
+
event.stopPropagation();
|
|
267
|
+
};
|
|
268
|
+
if (isDropdown(kind.value)) {
|
|
269
|
+
return /*#__PURE__*/jsx(FieldArray, {
|
|
270
|
+
name: "data",
|
|
271
|
+
children: function children(arrayHelpers) {
|
|
272
|
+
return /*#__PURE__*/jsxs("div", {
|
|
273
|
+
className: "flex w-full flex-col gap-y-4",
|
|
274
|
+
id: "neeto-fields-dropdown-options-wrapper",
|
|
275
|
+
children: [/*#__PURE__*/jsx(Label, {
|
|
276
|
+
required: true,
|
|
277
|
+
children: t("neetoFields.titles.dropdownOptions")
|
|
278
|
+
}), isNotEmpty(options) && Array.isArray(options) && options.map(function (_, index) {
|
|
279
|
+
return /*#__PURE__*/jsx("div", {
|
|
280
|
+
className: "flex w-full space-x-3",
|
|
281
|
+
children: /*#__PURE__*/jsx("div", {
|
|
282
|
+
className: "w-full",
|
|
283
|
+
children: /*#__PURE__*/jsx(Input, {
|
|
284
|
+
autoFocus: true,
|
|
285
|
+
"data-cy": "neeto-fields-dropdown-option-".concat(index),
|
|
286
|
+
disabled: isSystem,
|
|
287
|
+
name: "data.".concat(index, ".label"),
|
|
288
|
+
placeholder: t("neetoFields.placeholders.enterAnOption"),
|
|
289
|
+
suffix: options.length > 1 && /*#__PURE__*/jsx(Button, {
|
|
290
|
+
"data-cy": "neeto-fields-dropdown-option-delete-".concat(index),
|
|
291
|
+
icon: Delete,
|
|
292
|
+
style: "text",
|
|
293
|
+
onClick: function onClick() {
|
|
294
|
+
return removeOption(arrayHelpers, index);
|
|
295
|
+
}
|
|
296
|
+
}),
|
|
297
|
+
onKeyDown: function onKeyDown(event) {
|
|
298
|
+
return handleKeyDown(event, arrayHelpers);
|
|
299
|
+
}
|
|
300
|
+
})
|
|
301
|
+
})
|
|
302
|
+
}, index);
|
|
303
|
+
}), /*#__PURE__*/jsx(Button, {
|
|
304
|
+
fullWidth: true,
|
|
305
|
+
className: "mb-6 border-dashed text-xs uppercase",
|
|
306
|
+
"data-cy": "neeto-fields-add-more-option-button",
|
|
307
|
+
label: t("neetoFields.labels.addAnotherOption"),
|
|
308
|
+
style: "secondary",
|
|
309
|
+
onClick: function onClick() {
|
|
310
|
+
return addOption(arrayHelpers);
|
|
311
|
+
}
|
|
312
|
+
})]
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
});
|
|
316
|
+
} else if (isRegex(kind.value)) {
|
|
317
|
+
return /*#__PURE__*/jsxs("div", {
|
|
318
|
+
className: "flex w-full flex-col gap-y-4",
|
|
319
|
+
children: [/*#__PURE__*/jsx(Label, {
|
|
320
|
+
required: true,
|
|
321
|
+
children: t("neetoFields.titles.regexOptions")
|
|
322
|
+
}), /*#__PURE__*/jsx(Input, {
|
|
323
|
+
disabled: isSystem,
|
|
324
|
+
label: t("neetoFields.labels.regexCondition"),
|
|
325
|
+
name: "data.condition",
|
|
326
|
+
placeholder: t("neetoFields.placeholders.regexExample")
|
|
327
|
+
}), /*#__PURE__*/jsx(Input, {
|
|
328
|
+
disabled: isSystem,
|
|
329
|
+
label: t("neetoFields.labels.helpMessage"),
|
|
330
|
+
name: "data.helpMessage",
|
|
331
|
+
placeholder: t("neetoFields.placeholders.enterErrorMessage")
|
|
332
|
+
})]
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
return null;
|
|
336
|
+
};
|
|
337
|
+
|
|
338
|
+
var FieldForm = function FieldForm(_ref) {
|
|
339
|
+
var chosenKind = _ref.chosenKind,
|
|
340
|
+
_ref$kindSelectOption = _ref.kindSelectOptions,
|
|
341
|
+
kindSelectOptions = _ref$kindSelectOption === void 0 ? [] : _ref$kindSelectOption,
|
|
342
|
+
_ref$isSystem = _ref.isSystem,
|
|
343
|
+
isSystem = _ref$isSystem === void 0 ? false : _ref$isSystem,
|
|
344
|
+
_ref$hideRequiredSwit = _ref.hideRequiredSwitch,
|
|
345
|
+
hideRequiredSwitch = _ref$hideRequiredSwit === void 0 ? false : _ref$hideRequiredSwit,
|
|
346
|
+
children = _ref.children,
|
|
347
|
+
initialFocusField = _ref.initialFocusField;
|
|
348
|
+
var _useTranslation = useTranslation(),
|
|
349
|
+
t = _useTranslation.t;
|
|
350
|
+
var _useFormikContext = useFormikContext(),
|
|
351
|
+
options = _useFormikContext.values.data,
|
|
352
|
+
setFieldValue = _useFormikContext.setFieldValue;
|
|
353
|
+
var handleKindChange = function handleKindChange(kind) {
|
|
354
|
+
setFieldValue("kind", kind);
|
|
355
|
+
if (isDropdown(kind.value)) {
|
|
356
|
+
setFieldValue("data", options !== null && options !== void 0 ? options : [getDefaultOption()]);
|
|
357
|
+
} else if (isRegex(kind.value)) {
|
|
358
|
+
setFieldValue("data", options !== null && options !== void 0 ? options : DEFAULT_REGEX_DATA);
|
|
359
|
+
}
|
|
360
|
+
};
|
|
361
|
+
return /*#__PURE__*/jsx(Pane.Body, {
|
|
362
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
363
|
+
className: "w-full space-y-4",
|
|
364
|
+
children: [/*#__PURE__*/jsx(Input, {
|
|
365
|
+
required: true,
|
|
366
|
+
"data-cy": "name-text-field",
|
|
367
|
+
disabled: isSystem,
|
|
368
|
+
label: t("neetoFields.labels.fieldName"),
|
|
369
|
+
name: "name",
|
|
370
|
+
placeholder: t("neetoFields.placeholders.enterFieldName"),
|
|
371
|
+
ref: initialFocusField
|
|
372
|
+
}), /*#__PURE__*/jsx(Select, {
|
|
373
|
+
isSearchable: true,
|
|
374
|
+
isDisabled: isSystem,
|
|
375
|
+
label: t("neetoFields.labels.fieldKind"),
|
|
376
|
+
name: "kind",
|
|
377
|
+
options: kindSelectOptions,
|
|
378
|
+
onChange: handleKindChange
|
|
379
|
+
}), isAdditionalDataNeeded(chosenKind) && /*#__PURE__*/jsx(AdditionalInputs, {}), !hideRequiredSwitch && /*#__PURE__*/jsxs(Label, {
|
|
380
|
+
className: "flex items-center gap-2",
|
|
381
|
+
"data-cy": "is-required-switch-container",
|
|
382
|
+
children: [/*#__PURE__*/jsx(Switch, {
|
|
383
|
+
"data-cy": "is-required-switch",
|
|
384
|
+
name: "isRequired"
|
|
385
|
+
}), /*#__PURE__*/jsx(Typography, {
|
|
386
|
+
className: "leading-4",
|
|
387
|
+
component: "span",
|
|
388
|
+
"data-cy": "is-required-switch-label",
|
|
389
|
+
style: "body2",
|
|
390
|
+
children: t("neetoFields.labels.isRequired")
|
|
391
|
+
})]
|
|
392
|
+
}), children]
|
|
393
|
+
})
|
|
394
|
+
});
|
|
395
|
+
};
|
|
396
|
+
|
|
397
|
+
var _excluded$2 = ["resourceType", "allowedKinds", "ownerId", "additionalValidations", "initialValues", "onClose", "onMutationSuccess"];
|
|
398
|
+
function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
399
|
+
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
400
|
+
var Add = function Add(_ref) {
|
|
401
|
+
var resourceType = _ref.resourceType,
|
|
402
|
+
_ref$allowedKinds = _ref.allowedKinds,
|
|
403
|
+
allowedKinds = _ref$allowedKinds === void 0 ? ALL_KINDS : _ref$allowedKinds,
|
|
404
|
+
ownerId = _ref.ownerId,
|
|
405
|
+
additionalValidations = _ref.additionalValidations,
|
|
406
|
+
initialValues = _ref.initialValues,
|
|
407
|
+
onClose = _ref.onClose,
|
|
408
|
+
onMutationSuccess = _ref.onMutationSuccess,
|
|
409
|
+
props = _objectWithoutProperties(_ref, _excluded$2);
|
|
410
|
+
var _useTranslation = useTranslation(),
|
|
411
|
+
t = _useTranslation.t;
|
|
412
|
+
var _useCreateField = useCreateField({
|
|
413
|
+
onSuccess: onMutationSuccess
|
|
414
|
+
}),
|
|
415
|
+
createField = _useCreateField.mutate,
|
|
416
|
+
isSubmitting = _useCreateField.isPending;
|
|
417
|
+
var filteredKinds = values(pick(allowedKinds, FIELD_KINDS));
|
|
418
|
+
var handleSubmit = function handleSubmit(formValues) {
|
|
419
|
+
var payload = buildPayload({
|
|
420
|
+
formValues: formValues,
|
|
421
|
+
resourceType: resourceType,
|
|
422
|
+
ownerId: ownerId
|
|
423
|
+
});
|
|
424
|
+
createField(payload, {
|
|
425
|
+
onSuccess: onClose
|
|
426
|
+
});
|
|
427
|
+
};
|
|
428
|
+
return /*#__PURE__*/jsxs(Fragment, {
|
|
429
|
+
children: [/*#__PURE__*/jsx(Pane.Header, {
|
|
430
|
+
children: /*#__PURE__*/jsx(Typography, {
|
|
431
|
+
"data-cy": "add-pane-header",
|
|
432
|
+
style: "h2",
|
|
433
|
+
children: t("neetoFields.titles.addField")
|
|
434
|
+
})
|
|
435
|
+
}), /*#__PURE__*/jsx(Form, {
|
|
436
|
+
formikProps: {
|
|
437
|
+
initialValues: _objectSpread$2(_objectSpread$2({}, initialValues), INITIAL_FIELDS),
|
|
438
|
+
validationSchema: generateValidationSchema(additionalValidations),
|
|
439
|
+
onSubmit: handleSubmit
|
|
440
|
+
},
|
|
441
|
+
children: function children(_ref2) {
|
|
442
|
+
var kind = _ref2.values.kind;
|
|
443
|
+
return /*#__PURE__*/jsxs(Fragment, {
|
|
444
|
+
children: [/*#__PURE__*/jsx(FieldForm, _objectSpread$2({
|
|
445
|
+
chosenKind: kind.value,
|
|
446
|
+
kindSelectOptions: filteredKinds
|
|
447
|
+
}, props)), renderFormFooter({
|
|
448
|
+
onClose: onClose,
|
|
449
|
+
loading: isSubmitting
|
|
450
|
+
})]
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
})]
|
|
454
|
+
});
|
|
455
|
+
};
|
|
456
|
+
|
|
457
|
+
var _excluded$1 = ["fieldId", "allowedKinds", "ownerId", "additionalValidations", "initialValues", "onClose", "onMutationSuccess"];
|
|
458
|
+
function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
459
|
+
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
460
|
+
var Edit = function Edit(_ref) {
|
|
461
|
+
var fieldId = _ref.fieldId,
|
|
462
|
+
_ref$allowedKinds = _ref.allowedKinds,
|
|
463
|
+
allowedKinds = _ref$allowedKinds === void 0 ? ALL_KINDS : _ref$allowedKinds,
|
|
464
|
+
ownerId = _ref.ownerId,
|
|
465
|
+
_ref$additionalValida = _ref.additionalValidations,
|
|
466
|
+
additionalValidations = _ref$additionalValida === void 0 ? {} : _ref$additionalValida,
|
|
467
|
+
_ref$initialValues = _ref.initialValues,
|
|
468
|
+
initialValues = _ref$initialValues === void 0 ? {} : _ref$initialValues,
|
|
469
|
+
onClose = _ref.onClose,
|
|
470
|
+
onMutationSuccess = _ref.onMutationSuccess,
|
|
471
|
+
props = _objectWithoutProperties(_ref, _excluded$1);
|
|
472
|
+
var _useTranslation = useTranslation(),
|
|
473
|
+
t = _useTranslation.t;
|
|
474
|
+
var _useShowField = useShowField({
|
|
475
|
+
fieldId: fieldId,
|
|
476
|
+
ownerId: ownerId
|
|
477
|
+
}),
|
|
478
|
+
_useShowField$data = _useShowField.data,
|
|
479
|
+
_useShowField$data2 = _useShowField$data === void 0 ? {} : _useShowField$data,
|
|
480
|
+
_useShowField$data2$f = _useShowField$data2.field,
|
|
481
|
+
field = _useShowField$data2$f === void 0 ? {} : _useShowField$data2$f,
|
|
482
|
+
isLoading = _useShowField.isLoading;
|
|
483
|
+
var _useUpdateField = useUpdateField({
|
|
484
|
+
onSuccess: function onSuccess() {
|
|
485
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
486
|
+
args[_key] = arguments[_key];
|
|
487
|
+
}
|
|
488
|
+
onMutationSuccess === null || onMutationSuccess === void 0 || onMutationSuccess.apply(void 0, args);
|
|
489
|
+
onClose();
|
|
490
|
+
}
|
|
491
|
+
}),
|
|
492
|
+
updateField = _useUpdateField.mutate,
|
|
493
|
+
isSubmitting = _useUpdateField.isPending;
|
|
494
|
+
var handleSubmit = function handleSubmit(formValues) {
|
|
495
|
+
var payload = buildPayload({
|
|
496
|
+
formValues: formValues,
|
|
497
|
+
ownerId: ownerId
|
|
498
|
+
});
|
|
499
|
+
updateField({
|
|
500
|
+
fieldId: fieldId,
|
|
501
|
+
payload: payload
|
|
502
|
+
});
|
|
503
|
+
};
|
|
504
|
+
return /*#__PURE__*/jsxs(Fragment, {
|
|
505
|
+
children: [/*#__PURE__*/jsx(Pane.Header, {
|
|
506
|
+
children: /*#__PURE__*/jsx(Typography, {
|
|
507
|
+
"data-cy": "edit-pane-header",
|
|
508
|
+
style: "h2",
|
|
509
|
+
children: t("neetoFields.titles.editField")
|
|
510
|
+
})
|
|
511
|
+
}), isLoading ? /*#__PURE__*/jsx(PageLoader, {}) : /*#__PURE__*/jsx(Form, {
|
|
512
|
+
formikProps: {
|
|
513
|
+
initialValues: _objectSpread$1(_objectSpread$1({}, initialValues), assoc("kind", FIELD_KINDS[field.kind], field)),
|
|
514
|
+
validationSchema: generateValidationSchema(additionalValidations),
|
|
515
|
+
enableReinitialize: true,
|
|
516
|
+
onSubmit: handleSubmit
|
|
517
|
+
},
|
|
518
|
+
children: function children(_ref2) {
|
|
519
|
+
var kind = _ref2.values.kind;
|
|
520
|
+
var permittedKinds = getPermittedKinds({
|
|
521
|
+
allowedKinds: allowedKinds,
|
|
522
|
+
selectedKind: kind
|
|
523
|
+
});
|
|
524
|
+
return /*#__PURE__*/jsxs(Fragment, {
|
|
525
|
+
children: [/*#__PURE__*/jsx(FieldForm, _objectSpread$1({
|
|
526
|
+
chosenKind: kind === null || kind === void 0 ? void 0 : kind.value,
|
|
527
|
+
isSystem: field.isSystem,
|
|
528
|
+
kindSelectOptions: permittedKinds
|
|
529
|
+
}, props)), renderFormFooter({
|
|
530
|
+
onClose: onClose,
|
|
531
|
+
loading: isSubmitting
|
|
532
|
+
})]
|
|
533
|
+
});
|
|
534
|
+
}
|
|
535
|
+
})]
|
|
536
|
+
});
|
|
537
|
+
};
|
|
538
|
+
|
|
539
|
+
var _excluded = ["isOpen", "selectedField"];
|
|
540
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
541
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
542
|
+
var FieldsPane = function FieldsPane(_ref) {
|
|
543
|
+
var isOpen = _ref.isOpen,
|
|
544
|
+
_ref$selectedField = _ref.selectedField,
|
|
545
|
+
selectedField = _ref$selectedField === void 0 ? {} : _ref$selectedField,
|
|
546
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
547
|
+
var initialFocusField = useRef(null);
|
|
548
|
+
return /*#__PURE__*/jsx(Pane, {
|
|
549
|
+
isOpen: isOpen,
|
|
550
|
+
initialFocusRef: initialFocusField,
|
|
551
|
+
onClose: props.onClose,
|
|
552
|
+
children: isEmpty(selectedField) ? /*#__PURE__*/jsx(Add, _objectSpread({}, _objectSpread(_objectSpread({}, props), {}, {
|
|
553
|
+
initialFocusField: initialFocusField
|
|
554
|
+
}))) : /*#__PURE__*/jsx(Edit, _objectSpread({
|
|
555
|
+
fieldId: selectedField === null || selectedField === void 0 ? void 0 : selectedField.id
|
|
556
|
+
}, _objectSpread(_objectSpread({}, props), {}, {
|
|
557
|
+
initialFocusField: initialFocusField
|
|
558
|
+
})))
|
|
559
|
+
});
|
|
560
|
+
};
|
|
561
|
+
|
|
562
|
+
export { FieldsPane as default };
|
|
563
|
+
//# sourceMappingURL=FieldsPane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FieldsPane.js","sources":["../app/javascript/src/components/FieldsPane/utils.jsx","../app/javascript/src/components/FieldsPane/constants.js","../app/javascript/src/components/FieldsPane/AdditionalInputs.jsx","../app/javascript/src/components/FieldsPane/FieldForm.jsx","../app/javascript/src/components/FieldsPane/Add.jsx","../app/javascript/src/components/FieldsPane/Edit.jsx","../app/javascript/src/components/FieldsPane/index.jsx"],"sourcesContent":["import React from \"react\";\n\nimport { filterBy } from \"neetocist\";\nimport { Pane } from \"neetoui\";\nimport { ActionBlock } from \"neetoui/formik\";\nimport { isEmpty, omit, pick, values } from \"ramda\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport * as yup from \"yup\";\n\nimport {\n ADDITIONAL_DATA_NEEDED_FIELD_KINDS,\n FIELD_KINDS,\n BASIC_FIELD_FORM_VALIDATIONS,\n} from \"./constants\";\n\nconst arrangeOptionsDisplayOrder = options =>\n options.map((option, index) => ({ ...option, displayOrder: index }));\n\nexport const buildPayload = ({\n formValues,\n resourceType = \"\",\n ownerId = \"\",\n}) => {\n const kind = formValues.kind.value;\n const name = formValues.name.trim();\n\n return {\n ownerId: isEmpty(ownerId) ? undefined : ownerId,\n field: {\n ...omit(\n [\"createdAt\", \"id\", \"ownerId\", \"ownerType\", \"updatedAt\"],\n formValues\n ),\n kind,\n name,\n resourceType: isEmpty(resourceType) ? undefined : resourceType,\n data: isDropdown(kind)\n ? arrangeOptionsDisplayOrder(formValues.data)\n : formValues.data,\n },\n };\n};\n\nexport const isDropdown = kind =>\n [\"single_option\", \"multi_option\"].includes(kind);\n\nexport const isRegex = kind => kind === \"regex\";\n\nexport const isAdditionalDataNeeded = kind =>\n ADDITIONAL_DATA_NEEDED_FIELD_KINDS.includes(kind);\n\nexport const getPermittedKinds = ({ allowedKinds, selectedKind }) => {\n const filteredKinds = pick(allowedKinds, FIELD_KINDS);\n\n return filterBy({ group: selectedKind?.group }, values(filteredKinds));\n};\n\nexport const generateValidationSchema = additionalValidations =>\n yup\n .object()\n .shape({ ...BASIC_FIELD_FORM_VALIDATIONS, ...additionalValidations });\n\nexport const renderFormFooter = ({ onClose, loading }) => (\n <Pane.Footer>\n <ActionBlock\n cancelButtonProps={{ onClick: onClose }}\n isSubmitting={loading}\n />\n </Pane.Footer>\n);\n\nexport const getDefaultOption = () => ({\n id: uuidv4(),\n label: \"\",\n displayOrder: 0,\n});\n","import { t } from \"i18next\";\nimport { toLabelAndValue } from \"neetocist\";\nimport * as yup from \"yup\";\n\nimport { isDropdown, isRegex } from \"./utils\";\n\nconst PERMITTED_REGEX_PATTERN = /^\\/.*\\/[igmsyu]*$/;\nconst ADVANCED_REGEX_ASSERTION_PATTERN =\n /\\(\\?=[^)]*\\)|\\(\\?![^)]*\\)|\\(\\?<=[^)]*\\)|\\(\\?<![^)]*\\)/;\n\nconst regexValidationSchema = yup.object().shape({\n condition: yup\n .string()\n .required(t(\"neetoFields.validations.regexConditionIsRequired\"))\n .matches(\n PERMITTED_REGEX_PATTERN,\n t(\"neetoFields.validations.invalidRegexPattern\")\n )\n .test({\n name: \"test-regex-is-advanced\",\n message:\n t(\"neetoFields.validations.advancedRegexAssertionsNotSupported\") || \"\",\n test: value => !ADVANCED_REGEX_ASSERTION_PATTERN.test(value),\n })\n .test({\n name: \"test-regex-condition-pattern\",\n message: t(\"neetoFields.validations.invalidRegexPattern\") || \"\",\n test: value => {\n try {\n const lastIndex = value.lastIndexOf(\"/\");\n const condition = value.substring(1, lastIndex);\n // Evaluating the regex to check if it is valid\n new RegExp(condition);\n \"\".search(condition);\n\n return true;\n } catch {\n return false;\n }\n },\n }),\n helpMessage: yup\n .string()\n .required(t(\"neetoFields.validations.regexHelpMessageIsRequired\")),\n});\n\nconst dropDownOptionsValidationSchema = yup\n .array()\n .of(\n yup.object().shape({\n label: yup\n .string()\n .trim()\n .required(t(\"neetoFields.validations.fieldOptionIsRequired\")),\n displayOrder: yup.number(),\n })\n )\n .min(1, t(\"neetoFields.validations.atLeastFieldOptionIsRequired\"));\n\nexport const FIELD_KINDS = {\n text: { value: \"text\", label: t(\"neetoFields.fields.kinds.text\"), group: 1 },\n number: {\n value: \"number\",\n label: t(\"neetoFields.fields.kinds.number\"),\n group: 2,\n },\n monetary: {\n value: \"monetary\",\n label: t(\"neetoFields.fields.kinds.monetary\"),\n group: 2,\n },\n single_option: {\n value: \"single_option\",\n label: t(\"neetoFields.fields.kinds.singleOption\"),\n group: 12,\n },\n multi_option: {\n value: \"multi_option\",\n label: t(\"neetoFields.fields.kinds.multiOption\"),\n group: 3,\n },\n date: { value: \"date\", label: t(\"neetoFields.fields.kinds.date\"), group: 4 },\n time: { value: \"time\", label: t(\"neetoFields.fields.kinds.time\"), group: 5 },\n date_range: {\n value: \"date_range\",\n label: t(\"neetoFields.fields.kinds.dateRange\"),\n group: 6,\n },\n time_range: {\n value: \"time_range\",\n label: t(\"neetoFields.fields.kinds.timeRange\"),\n group: 7,\n },\n text_area: {\n value: \"text_area\",\n label: t(\"neetoFields.fields.kinds.textArea\"),\n group: 1,\n },\n textarea: {\n value: \"textarea\",\n label: t(\"neetoFields.fields.kinds.textarea\"),\n group: 1,\n },\n person: {\n value: \"person\",\n label: t(\"neetoFields.fields.kinds.person\"),\n group: 8,\n },\n checkbox: {\n value: \"checkbox\",\n label: t(\"neetoFields.fields.kinds.checkbox\"),\n group: 9,\n },\n regex: {\n value: \"regex\",\n label: t(\"neetoFields.fields.kinds.regex\"),\n group: 10,\n },\n integer: {\n value: \"integer\",\n label: t(\"neetoFields.fields.kinds.integer\"),\n group: 2,\n },\n decimal: {\n value: \"decimal\",\n label: t(\"neetoFields.fields.kinds.decimal\"),\n group: 2,\n },\n datetime: {\n value: \"datetime\",\n label: t(\"neetoFields.fields.kinds.datetime\"),\n group: 11,\n },\n};\n\nexport const ADDITIONAL_DATA_NEEDED_FIELD_KINDS = [\n \"single_option\",\n \"multi_option\",\n \"regex\",\n];\n\nexport const INITIAL_FIELDS = {\n name: \"\",\n kind: toLabelAndValue(\"text\"),\n isRequired: false,\n};\n\nexport const DEFAULT_REGEX_DATA = { condition: \"\", helpMessage: \"\" };\n\nexport const BASIC_FIELD_FORM_VALIDATIONS = {\n name: yup\n .string()\n .trim()\n .required(t(\"neetoFields.validations.fieldNameIsRequired\")),\n isRequired: yup.boolean(),\n kind: yup\n .object()\n .shape({ value: yup.string().required() })\n .required(t(\"neetoFields.validations.kindIsRequired\")),\n data: yup\n .mixed()\n .when(\"kind\", {\n is: kind => isRegex(kind?.value),\n then: regexValidationSchema,\n })\n .when(\"kind\", {\n is: kind => isDropdown(kind?.value),\n then: dropDownOptionsValidationSchema,\n }),\n};\n","import React from \"react\";\n\nimport { FieldArray, useFormikContext } from \"formik\";\nimport { isNotEmpty } from \"neetocist\";\nimport { isMetaKeyPressed } from \"neetocommons/react-utils\";\nimport { Delete } from \"neetoicons\";\nimport { Label, Button } from \"neetoui\";\nimport { Input } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { getDefaultOption, isDropdown, isRegex } from \"./utils\";\n\nconst AdditionalInputs = () => {\n const { t } = useTranslation();\n\n const {\n values: { kind, data: options, isSystem },\n } = useFormikContext();\n\n const removeOption = (arrayHelpers, index) => arrayHelpers.remove(index);\n\n const addOption = arrayHelpers => arrayHelpers.push(getDefaultOption());\n\n const handleKeyDown = (event, arrayHelpers) => {\n if (event.key !== \"Enter\" || isMetaKeyPressed(event)) return;\n\n const form = event.target.form;\n const inputs = [\n ...form.querySelectorAll(\"#neeto-fields-dropdown-options-wrapper input\"),\n ];\n\n const currentIndex = inputs.indexOf(event.target);\n\n currentIndex >= inputs.length - 1\n ? addOption(arrayHelpers)\n : inputs[currentIndex + 1]?.focus();\n\n event.preventDefault();\n event.stopPropagation();\n };\n\n if (isDropdown(kind.value)) {\n return (\n <FieldArray name=\"data\">\n {arrayHelpers => (\n <div\n className=\"flex w-full flex-col gap-y-4\"\n id=\"neeto-fields-dropdown-options-wrapper\"\n >\n <Label required>{t(\"neetoFields.titles.dropdownOptions\")}</Label>\n {isNotEmpty(options) &&\n Array.isArray(options) &&\n options.map((_, index) => (\n <div className=\"flex w-full space-x-3\" key={index}>\n <div className=\"w-full\">\n <Input\n autoFocus\n data-cy={`neeto-fields-dropdown-option-${index}`}\n disabled={isSystem}\n name={`data.${index}.label`}\n placeholder={t(\"neetoFields.placeholders.enterAnOption\")}\n suffix={\n options.length > 1 && (\n <Button\n data-cy={`neeto-fields-dropdown-option-delete-${index}`}\n icon={Delete}\n style=\"text\"\n onClick={() => removeOption(arrayHelpers, index)}\n />\n )\n }\n onKeyDown={event => handleKeyDown(event, arrayHelpers)}\n />\n </div>\n </div>\n ))}\n <Button\n fullWidth\n className=\"mb-6 border-dashed text-xs uppercase\"\n data-cy=\"neeto-fields-add-more-option-button\"\n label={t(\"neetoFields.labels.addAnotherOption\")}\n style=\"secondary\"\n onClick={() => addOption(arrayHelpers)}\n />\n </div>\n )}\n </FieldArray>\n );\n } else if (isRegex(kind.value)) {\n return (\n <div className=\"flex w-full flex-col gap-y-4\">\n <Label required>{t(\"neetoFields.titles.regexOptions\")}</Label>\n <Input\n disabled={isSystem}\n label={t(\"neetoFields.labels.regexCondition\")}\n name=\"data.condition\"\n placeholder={t(\"neetoFields.placeholders.regexExample\")}\n />\n <Input\n disabled={isSystem}\n label={t(\"neetoFields.labels.helpMessage\")}\n name=\"data.helpMessage\"\n placeholder={t(\"neetoFields.placeholders.enterErrorMessage\")}\n />\n </div>\n );\n }\n\n return null;\n};\n\nexport default AdditionalInputs;\n","import React from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport { Label, Pane, Typography } from \"neetoui\";\nimport { Input, Select, Switch } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport AdditionalInputs from \"./AdditionalInputs\";\nimport { DEFAULT_REGEX_DATA } from \"./constants\";\nimport {\n getDefaultOption,\n isAdditionalDataNeeded,\n isDropdown,\n isRegex,\n} from \"./utils\";\n\n/** @type {React.FC<import(\"types\").FieldFormProps>} */\n\nconst FieldForm = ({\n chosenKind,\n kindSelectOptions = [],\n isSystem = false,\n hideRequiredSwitch = false,\n children,\n initialFocusField,\n}) => {\n const { t } = useTranslation();\n\n const {\n values: { data: options },\n setFieldValue,\n } = useFormikContext();\n\n const handleKindChange = kind => {\n setFieldValue(\"kind\", kind);\n if (isDropdown(kind.value)) {\n setFieldValue(\"data\", options ?? [getDefaultOption()]);\n } else if (isRegex(kind.value)) {\n setFieldValue(\"data\", options ?? DEFAULT_REGEX_DATA);\n }\n };\n\n return (\n <Pane.Body>\n <div className=\"w-full space-y-4\">\n <Input\n required\n data-cy=\"name-text-field\"\n disabled={isSystem}\n label={t(\"neetoFields.labels.fieldName\")}\n name=\"name\"\n placeholder={t(\"neetoFields.placeholders.enterFieldName\")}\n ref={initialFocusField}\n />\n <Select\n isSearchable\n isDisabled={isSystem}\n label={t(\"neetoFields.labels.fieldKind\")}\n name=\"kind\"\n options={kindSelectOptions}\n onChange={handleKindChange}\n />\n {isAdditionalDataNeeded(chosenKind) && <AdditionalInputs />}\n {!hideRequiredSwitch && (\n <Label\n className=\"flex items-center gap-2\"\n data-cy=\"is-required-switch-container\"\n >\n <Switch data-cy=\"is-required-switch\" name=\"isRequired\" />\n <Typography\n className=\"leading-4\"\n component=\"span\"\n data-cy=\"is-required-switch-label\"\n style=\"body2\"\n >\n {t(\"neetoFields.labels.isRequired\")}\n </Typography>\n </Label>\n )}\n {children}\n </div>\n </Pane.Body>\n );\n};\n\nexport default FieldForm;\n","import React from \"react\";\n\nimport { Pane, Typography } from \"neetoui\";\nimport { Form } from \"neetoui/formik\";\nimport { pick, values } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { ALL_KINDS } from \"components/FieldsDashBoard/constants\";\nimport { useCreateField } from \"hooks/reactQuery/useFieldsApi\";\n\nimport { FIELD_KINDS, INITIAL_FIELDS } from \"./constants\";\nimport FieldForm from \"./FieldForm\";\nimport {\n buildPayload,\n generateValidationSchema,\n renderFormFooter,\n} from \"./utils\";\n\n/** @type {React.FC<import(\"types\").AddProps>} */\n\nconst Add = ({\n resourceType,\n allowedKinds = ALL_KINDS,\n ownerId,\n additionalValidations,\n initialValues,\n onClose,\n onMutationSuccess,\n ...props\n}) => {\n const { t } = useTranslation();\n\n const { mutate: createField, isPending: isSubmitting } = useCreateField({\n onSuccess: onMutationSuccess,\n });\n\n const filteredKinds = values(pick(allowedKinds, FIELD_KINDS));\n\n const handleSubmit = formValues => {\n const payload = buildPayload({ formValues, resourceType, ownerId });\n createField(payload, { onSuccess: onClose });\n };\n\n return (\n <>\n <Pane.Header>\n <Typography data-cy=\"add-pane-header\" style=\"h2\">\n {t(\"neetoFields.titles.addField\")}\n </Typography>\n </Pane.Header>\n <Form\n formikProps={{\n initialValues: { ...initialValues, ...INITIAL_FIELDS },\n validationSchema: generateValidationSchema(additionalValidations),\n onSubmit: handleSubmit,\n }}\n >\n {({ values: { kind } }) => (\n <>\n <FieldForm\n chosenKind={kind.value}\n kindSelectOptions={filteredKinds}\n {...props}\n />\n {renderFormFooter({ onClose, loading: isSubmitting })}\n </>\n )}\n </Form>\n </>\n );\n};\n\nexport default Add;\n","import React from \"react\";\n\nimport PageLoader from \"neetomolecules/PageLoader\";\nimport { Pane, Typography } from \"neetoui\";\nimport { Form } from \"neetoui/formik\";\nimport { assoc } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { ALL_KINDS } from \"components/FieldsDashBoard/constants\";\nimport { useShowField, useUpdateField } from \"hooks/reactQuery/useFieldsApi\";\n\nimport { FIELD_KINDS } from \"./constants\";\nimport FieldForm from \"./FieldForm\";\nimport {\n buildPayload,\n generateValidationSchema,\n getPermittedKinds,\n renderFormFooter,\n} from \"./utils\";\n\n/** @type {React.FC<import(\"types\").EditProps>} */\n\nconst Edit = ({\n fieldId,\n allowedKinds = ALL_KINDS,\n ownerId,\n additionalValidations = {},\n initialValues = {},\n onClose,\n onMutationSuccess,\n ...props\n}) => {\n const { t } = useTranslation();\n\n const { data: { field = {} } = {}, isLoading } = useShowField({\n fieldId,\n ownerId,\n });\n\n const { mutate: updateField, isPending: isSubmitting } = useUpdateField({\n onSuccess: (...args) => {\n onMutationSuccess?.(...args);\n onClose();\n },\n });\n\n const handleSubmit = formValues => {\n const payload = buildPayload({ formValues, ownerId });\n updateField({ fieldId, payload });\n };\n\n return (\n <>\n <Pane.Header>\n <Typography data-cy=\"edit-pane-header\" style=\"h2\">\n {t(\"neetoFields.titles.editField\")}\n </Typography>\n </Pane.Header>\n {isLoading ? (\n <PageLoader />\n ) : (\n <Form\n formikProps={{\n initialValues: {\n ...initialValues,\n ...assoc(\"kind\", FIELD_KINDS[field.kind], field),\n },\n validationSchema: generateValidationSchema(additionalValidations),\n enableReinitialize: true,\n onSubmit: handleSubmit,\n }}\n >\n {({ values: { kind } }) => {\n const permittedKinds = getPermittedKinds({\n allowedKinds,\n selectedKind: kind,\n });\n\n return (\n <>\n <FieldForm\n chosenKind={kind?.value}\n isSystem={field.isSystem}\n kindSelectOptions={permittedKinds}\n {...props}\n />\n {renderFormFooter({ onClose, loading: isSubmitting })}\n </>\n );\n }}\n </Form>\n )}\n </>\n );\n};\n\nexport default Edit;\n","import React, { useRef } from \"react\";\n\nimport { Pane } from \"neetoui\";\nimport { isEmpty } from \"ramda\";\n\nimport Add from \"./Add\";\nimport Edit from \"./Edit\";\n\n/** @type {React.FC<import(\"types\").FieldsPaneProps>} */\n\nconst FieldsPane = ({ isOpen, selectedField = {}, ...props }) => {\n const initialFocusField = useRef(null);\n\n return (\n <Pane\n {...{ isOpen }}\n initialFocusRef={initialFocusField}\n onClose={props.onClose}\n >\n {isEmpty(selectedField) ? (\n <Add {...{ ...props, initialFocusField }} />\n ) : (\n <Edit\n fieldId={selectedField?.id}\n {...{ ...props, initialFocusField }}\n />\n )}\n </Pane>\n );\n};\n\nexport default FieldsPane;\n"],"names":["arrangeOptionsDisplayOrder","options","map","option","index","_objectSpread","displayOrder","buildPayload","_ref","formValues","_ref$resourceType","resourceType","_ref$ownerId","ownerId","kind","value","name","trim","isEmpty","undefined","field","omit","data","isDropdown","includes","isRegex","isAdditionalDataNeeded","ADDITIONAL_DATA_NEEDED_FIELD_KINDS","getPermittedKinds","_ref2","allowedKinds","selectedKind","filteredKinds","pick","FIELD_KINDS","filterBy","group","values","generateValidationSchema","additionalValidations","yup","object","shape","BASIC_FIELD_FORM_VALIDATIONS","renderFormFooter","_ref3","onClose","loading","_jsx","Pane","Footer","children","ActionBlock","cancelButtonProps","onClick","isSubmitting","getDefaultOption","id","uuidv4","label","PERMITTED_REGEX_PATTERN","ADVANCED_REGEX_ASSERTION_PATTERN","regexValidationSchema","condition","string","required","t","matches","test","message","lastIndex","lastIndexOf","substring","RegExp","search","_unused","helpMessage","dropDownOptionsValidationSchema","array","of","number","min","text","monetary","single_option","multi_option","date","time","date_range","time_range","text_area","textarea","person","checkbox","regex","integer","decimal","datetime","INITIAL_FIELDS","toLabelAndValue","isRequired","DEFAULT_REGEX_DATA","mixed","when","is","then","AdditionalInputs","_useTranslation","useTranslation","_useFormikContext","useFormikContext","_useFormikContext$val","isSystem","removeOption","arrayHelpers","remove","addOption","push","handleKeyDown","event","_inputs","key","isMetaKeyPressed","form","target","inputs","_toConsumableArray","querySelectorAll","currentIndex","indexOf","length","focus","preventDefault","stopPropagation","FieldArray","_jsxs","className","Label","isNotEmpty","Array","isArray","_","Input","autoFocus","concat","disabled","placeholder","suffix","Button","icon","Delete","style","onKeyDown","fullWidth","FieldForm","chosenKind","_ref$kindSelectOption","kindSelectOptions","_ref$isSystem","_ref$hideRequiredSwit","hideRequiredSwitch","initialFocusField","setFieldValue","handleKindChange","Body","ref","Select","isSearchable","isDisabled","onChange","Switch","Typography","component","Add","_ref$allowedKinds","ALL_KINDS","initialValues","onMutationSuccess","props","_objectWithoutProperties","_excluded","_useCreateField","useCreateField","onSuccess","createField","mutate","isPending","handleSubmit","payload","_Fragment","Header","Form","formikProps","validationSchema","onSubmit","Edit","fieldId","_ref$additionalValida","_ref$initialValues","_useShowField","useShowField","_useShowField$data","_useShowField$data2","_useShowField$data2$f","isLoading","_useUpdateField","useUpdateField","_len","arguments","args","_key","apply","updateField","PageLoader","assoc","enableReinitialize","permittedKinds","FieldsPane","isOpen","_ref$selectedField","selectedField","useRef","initialFocusRef"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,IAAMA,0BAA0B,GAAG,SAA7BA,0BAA0BA,CAAGC,OAAO,EAAA;AAAA,EAAA,OACxCA,OAAO,CAACC,GAAG,CAAC,UAACC,MAAM,EAAEC,KAAK,EAAA;AAAA,IAAA,OAAAC,eAAA,CAAAA,eAAA,CAAA,EAAA,EAAWF,MAAM,CAAA,EAAA,EAAA,EAAA;AAAEG,MAAAA,YAAY,EAAEF,KAAAA;AAAK,KAAA,CAAA,CAAA;AAAA,GAAG,CAAC,CAAA;AAAA,CAAA,CAAA;AAE/D,IAAMG,YAAY,GAAG,SAAfA,YAAYA,CAAAC,IAAA,EAInB;AAAA,EAAA,IAHJC,UAAU,GAAAD,IAAA,CAAVC,UAAU;IAAAC,iBAAA,GAAAF,IAAA,CACVG,YAAY;AAAZA,IAAAA,YAAY,GAAAD,iBAAA,KAAG,KAAA,CAAA,GAAA,EAAE,GAAAA,iBAAA;IAAAE,YAAA,GAAAJ,IAAA,CACjBK,OAAO;AAAPA,IAAAA,OAAO,GAAAD,YAAA,KAAG,KAAA,CAAA,GAAA,EAAE,GAAAA,YAAA,CAAA;AAEZ,EAAA,IAAME,IAAI,GAAGL,UAAU,CAACK,IAAI,CAACC,KAAK,CAAA;EAClC,IAAMC,IAAI,GAAGP,UAAU,CAACO,IAAI,CAACC,IAAI,EAAE,CAAA;EAEnC,OAAO;IACLJ,OAAO,EAAEK,OAAO,CAACL,OAAO,CAAC,GAAGM,SAAS,GAAGN,OAAO;IAC/CO,KAAK,EAAAf,eAAA,CAAAA,eAAA,KACAgB,IAAI,CACL,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,EACxDZ,UACF,CAAC,CAAA,EAAA,EAAA,EAAA;AACDK,MAAAA,IAAI,EAAJA,IAAI;AACJE,MAAAA,IAAI,EAAJA,IAAI;MACJL,YAAY,EAAEO,OAAO,CAACP,YAAY,CAAC,GAAGQ,SAAS,GAAGR,YAAY;AAC9DW,MAAAA,IAAI,EAAEC,UAAU,CAACT,IAAI,CAAC,GAClBd,0BAA0B,CAACS,UAAU,CAACa,IAAI,CAAC,GAC3Cb,UAAU,CAACa,IAAAA;AAAI,KAAA,CAAA;GAEtB,CAAA;AACH,CAAC,CAAA;AAEM,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAGT,IAAI,EAAA;EAAA,OAC5B,CAAC,eAAe,EAAE,cAAc,CAAC,CAACU,QAAQ,CAACV,IAAI,CAAC,CAAA;AAAA,CAAA,CAAA;AAE3C,IAAMW,OAAO,GAAG,SAAVA,OAAOA,CAAGX,IAAI,EAAA;EAAA,OAAIA,IAAI,KAAK,OAAO,CAAA;AAAA,CAAA,CAAA;AAExC,IAAMY,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAGZ,IAAI,EAAA;AAAA,EAAA,OACxCa,kCAAkC,CAACH,QAAQ,CAACV,IAAI,CAAC,CAAA;AAAA,CAAA,CAAA;AAE5C,IAAMc,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAAC,KAAA,EAAuC;AAAA,EAAA,IAAjCC,YAAY,GAAAD,KAAA,CAAZC,YAAY;IAAEC,YAAY,GAAAF,KAAA,CAAZE,YAAY,CAAA;AAC5D,EAAA,IAAMC,aAAa,GAAGC,IAAI,CAACH,YAAY,EAAEI,WAAW,CAAC,CAAA;AAErD,EAAA,OAAOC,QAAQ,CAAC;AAAEC,IAAAA,KAAK,EAAEL,YAAY,KAAA,IAAA,IAAZA,YAAY,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZA,YAAY,CAAEK,KAAAA;AAAM,GAAC,EAAEC,MAAM,CAACL,aAAa,CAAC,CAAC,CAAA;AACxE,CAAC,CAAA;AAEM,IAAMM,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAAGC,qBAAqB,EAAA;AAAA,EAAA,OAC3DC,GAAG,CACAC,MAAM,EAAE,CACRC,KAAK,CAAArC,eAAA,CAAAA,eAAA,CAAMsC,EAAAA,EAAAA,4BAA4B,CAAKJ,EAAAA,qBAAqB,CAAE,CAAC,CAAA;AAAA,CAAA,CAAA;AAElE,IAAMK,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAAC,KAAA,EAAA;AAAA,EAAA,IAAMC,OAAO,GAAAD,KAAA,CAAPC,OAAO;IAAEC,OAAO,GAAAF,KAAA,CAAPE,OAAO,CAAA;AAAA,EAAA,oBACjDC,GAAA,CAACC,IAAI,CAACC,MAAM,EAAA;IAAAC,QAAA,eACVH,GAAA,CAACI,WAAW,EAAA;AACVC,MAAAA,iBAAiB,EAAE;AAAEC,QAAAA,OAAO,EAAER,OAAAA;OAAU;AACxCS,MAAAA,YAAY,EAAER,OAAAA;KACf,CAAA;AAAC,GACS,CAAC,CAAA;AAAA,CACf,CAAA;AAEM,IAAMS,gBAAgB,GAAG,SAAnBA,gBAAgBA,GAAA;EAAA,OAAU;IACrCC,EAAE,EAAEC,EAAM,EAAE;AACZC,IAAAA,KAAK,EAAE,EAAE;AACTrD,IAAAA,YAAY,EAAE,CAAA;GACf,CAAA;AAAA,CAAC;;ACrEF,IAAMsD,uBAAuB,GAAG,mBAAmB,CAAA;AACnD,IAAMC,gCAAgC,GACpC,uDAAuD,CAAA;AAEzD,IAAMC,qBAAqB,GAAGtB,GAAG,CAACC,MAAM,EAAE,CAACC,KAAK,CAAC;EAC/CqB,SAAS,EAAEvB,GAAG,CACXwB,MAAM,EAAE,CACRC,QAAQ,CAACC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAC/DC,OAAO,CACNP,uBAAuB,EACvBM,CAAC,CAAC,6CAA6C,CACjD,CAAC,CACAE,IAAI,CAAC;AACJpD,IAAAA,IAAI,EAAE,wBAAwB;AAC9BqD,IAAAA,OAAO,EACLH,CAAC,CAAC,6DAA6D,CAAC,IAAI,EAAE;IACxEE,IAAI,EAAE,SAAAA,IAAAA,CAAArD,KAAK,EAAA;AAAA,MAAA,OAAI,CAAC8C,gCAAgC,CAACO,IAAI,CAACrD,KAAK,CAAC,CAAA;AAAA,KAAA;GAC7D,CAAC,CACDqD,IAAI,CAAC;AACJpD,IAAAA,IAAI,EAAE,8BAA8B;AACpCqD,IAAAA,OAAO,EAAEH,CAAC,CAAC,6CAA6C,CAAC,IAAI,EAAE;AAC/DE,IAAAA,IAAI,EAAE,SAAAA,IAAArD,CAAAA,KAAK,EAAI;MACb,IAAI;AACF,QAAA,IAAMuD,SAAS,GAAGvD,KAAK,CAACwD,WAAW,CAAC,GAAG,CAAC,CAAA;QACxC,IAAMR,SAAS,GAAGhD,KAAK,CAACyD,SAAS,CAAC,CAAC,EAAEF,SAAS,CAAC,CAAA;AAC/C;QACA,IAAIG,MAAM,CAACV,SAAS,CAAC,CAAA;AACrB,QAAA,EAAE,CAACW,MAAM,CAACX,SAAS,CAAC,CAAA;AAEpB,QAAA,OAAO,IAAI,CAAA;OACZ,CAAC,OAAAY,OAAA,EAAM;AACN,QAAA,OAAO,KAAK,CAAA;AACd,OAAA;AACF,KAAA;AACF,GAAC,CAAC;AACJC,EAAAA,WAAW,EAAEpC,GAAG,CACbwB,MAAM,EAAE,CACRC,QAAQ,CAACC,CAAC,CAAC,oDAAoD,CAAC,CAAA;AACrE,CAAC,CAAC,CAAA;AAEF,IAAMW,+BAA+B,GAAGrC,GAAG,CACxCsC,KAAK,EAAE,CACPC,EAAE,CACDvC,GAAG,CAACC,MAAM,EAAE,CAACC,KAAK,CAAC;AACjBiB,EAAAA,KAAK,EAAEnB,GAAG,CACPwB,MAAM,EAAE,CACR/C,IAAI,EAAE,CACNgD,QAAQ,CAACC,CAAC,CAAC,+CAA+C,CAAC,CAAC;AAC/D5D,EAAAA,YAAY,EAAEkC,GAAG,CAACwC,MAAM,EAAC;AAC3B,CAAC,CACH,CAAC,CACAC,GAAG,CAAC,CAAC,EAAEf,CAAC,CAAC,sDAAsD,CAAC,CAAC,CAAA;AAE7D,IAAMhC,WAAW,GAAG;AACzBgD,EAAAA,IAAI,EAAE;AAAEnE,IAAAA,KAAK,EAAE,MAAM;AAAE4C,IAAAA,KAAK,EAAEO,CAAC,CAAC,+BAA+B,CAAC;AAAE9B,IAAAA,KAAK,EAAE,CAAA;GAAG;AAC5E4C,EAAAA,MAAM,EAAE;AACNjE,IAAAA,KAAK,EAAE,QAAQ;AACf4C,IAAAA,KAAK,EAAEO,CAAC,CAAC,iCAAiC,CAAC;AAC3C9B,IAAAA,KAAK,EAAE,CAAA;GACR;AACD+C,EAAAA,QAAQ,EAAE;AACRpE,IAAAA,KAAK,EAAE,UAAU;AACjB4C,IAAAA,KAAK,EAAEO,CAAC,CAAC,mCAAmC,CAAC;AAC7C9B,IAAAA,KAAK,EAAE,CAAA;GACR;AACDgD,EAAAA,aAAa,EAAE;AACbrE,IAAAA,KAAK,EAAE,eAAe;AACtB4C,IAAAA,KAAK,EAAEO,CAAC,CAAC,uCAAuC,CAAC;AACjD9B,IAAAA,KAAK,EAAE,EAAA;GACR;AACDiD,EAAAA,YAAY,EAAE;AACZtE,IAAAA,KAAK,EAAE,cAAc;AACrB4C,IAAAA,KAAK,EAAEO,CAAC,CAAC,sCAAsC,CAAC;AAChD9B,IAAAA,KAAK,EAAE,CAAA;GACR;AACDkD,EAAAA,IAAI,EAAE;AAAEvE,IAAAA,KAAK,EAAE,MAAM;AAAE4C,IAAAA,KAAK,EAAEO,CAAC,CAAC,+BAA+B,CAAC;AAAE9B,IAAAA,KAAK,EAAE,CAAA;GAAG;AAC5EmD,EAAAA,IAAI,EAAE;AAAExE,IAAAA,KAAK,EAAE,MAAM;AAAE4C,IAAAA,KAAK,EAAEO,CAAC,CAAC,+BAA+B,CAAC;AAAE9B,IAAAA,KAAK,EAAE,CAAA;GAAG;AAC5EoD,EAAAA,UAAU,EAAE;AACVzE,IAAAA,KAAK,EAAE,YAAY;AACnB4C,IAAAA,KAAK,EAAEO,CAAC,CAAC,oCAAoC,CAAC;AAC9C9B,IAAAA,KAAK,EAAE,CAAA;GACR;AACDqD,EAAAA,UAAU,EAAE;AACV1E,IAAAA,KAAK,EAAE,YAAY;AACnB4C,IAAAA,KAAK,EAAEO,CAAC,CAAC,oCAAoC,CAAC;AAC9C9B,IAAAA,KAAK,EAAE,CAAA;GACR;AACDsD,EAAAA,SAAS,EAAE;AACT3E,IAAAA,KAAK,EAAE,WAAW;AAClB4C,IAAAA,KAAK,EAAEO,CAAC,CAAC,mCAAmC,CAAC;AAC7C9B,IAAAA,KAAK,EAAE,CAAA;GACR;AACDuD,EAAAA,QAAQ,EAAE;AACR5E,IAAAA,KAAK,EAAE,UAAU;AACjB4C,IAAAA,KAAK,EAAEO,CAAC,CAAC,mCAAmC,CAAC;AAC7C9B,IAAAA,KAAK,EAAE,CAAA;GACR;AACDwD,EAAAA,MAAM,EAAE;AACN7E,IAAAA,KAAK,EAAE,QAAQ;AACf4C,IAAAA,KAAK,EAAEO,CAAC,CAAC,iCAAiC,CAAC;AAC3C9B,IAAAA,KAAK,EAAE,CAAA;GACR;AACDyD,EAAAA,QAAQ,EAAE;AACR9E,IAAAA,KAAK,EAAE,UAAU;AACjB4C,IAAAA,KAAK,EAAEO,CAAC,CAAC,mCAAmC,CAAC;AAC7C9B,IAAAA,KAAK,EAAE,CAAA;GACR;AACD0D,EAAAA,KAAK,EAAE;AACL/E,IAAAA,KAAK,EAAE,OAAO;AACd4C,IAAAA,KAAK,EAAEO,CAAC,CAAC,gCAAgC,CAAC;AAC1C9B,IAAAA,KAAK,EAAE,EAAA;GACR;AACD2D,EAAAA,OAAO,EAAE;AACPhF,IAAAA,KAAK,EAAE,SAAS;AAChB4C,IAAAA,KAAK,EAAEO,CAAC,CAAC,kCAAkC,CAAC;AAC5C9B,IAAAA,KAAK,EAAE,CAAA;GACR;AACD4D,EAAAA,OAAO,EAAE;AACPjF,IAAAA,KAAK,EAAE,SAAS;AAChB4C,IAAAA,KAAK,EAAEO,CAAC,CAAC,kCAAkC,CAAC;AAC5C9B,IAAAA,KAAK,EAAE,CAAA;GACR;AACD6D,EAAAA,QAAQ,EAAE;AACRlF,IAAAA,KAAK,EAAE,UAAU;AACjB4C,IAAAA,KAAK,EAAEO,CAAC,CAAC,mCAAmC,CAAC;AAC7C9B,IAAAA,KAAK,EAAE,EAAA;AACT,GAAA;AACF,CAAC,CAAA;AAEM,IAAMT,kCAAkC,GAAG,CAChD,eAAe,EACf,cAAc,EACd,OAAO,CACR,CAAA;AAEM,IAAMuE,cAAc,GAAG;AAC5BlF,EAAAA,IAAI,EAAE,EAAE;AACRF,EAAAA,IAAI,EAAEqF,eAAe,CAAC,MAAM,CAAC;AAC7BC,EAAAA,UAAU,EAAE,KAAA;AACd,CAAC,CAAA;AAEM,IAAMC,kBAAkB,GAAG;AAAEtC,EAAAA,SAAS,EAAE,EAAE;AAAEa,EAAAA,WAAW,EAAE,EAAA;AAAG,CAAC,CAAA;AAE7D,IAAMjC,4BAA4B,GAAG;AAC1C3B,EAAAA,IAAI,EAAEwB,GAAG,CACNwB,MAAM,EAAE,CACR/C,IAAI,EAAE,CACNgD,QAAQ,CAACC,CAAC,CAAC,6CAA6C,CAAC,CAAC;AAC7DkC,EAAAA,UAAU,EAAE5D,GAAG,CAAQ,SAAA,CAAA,EAAE;EACzB1B,IAAI,EAAE0B,GAAG,CACNC,MAAM,EAAE,CACRC,KAAK,CAAC;IAAE3B,KAAK,EAAEyB,GAAG,CAACwB,MAAM,EAAE,CAACC,QAAQ,EAAC;GAAG,CAAC,CACzCA,QAAQ,CAACC,CAAC,CAAC,wCAAwC,CAAC,CAAC;EACxD5C,IAAI,EAAEkB,GAAG,CACN8D,KAAK,EAAE,CACPC,IAAI,CAAC,MAAM,EAAE;IACZC,EAAE,EAAE,SAAAA,EAAAA,CAAA1F,IAAI,EAAA;MAAA,OAAIW,OAAO,CAACX,IAAI,KAAA,IAAA,IAAJA,IAAI,KAAJA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAEC,KAAK,CAAC,CAAA;AAAA,KAAA;AAChC0F,IAAAA,IAAI,EAAE3C,qBAAAA;AACR,GAAC,CAAC,CACDyC,IAAI,CAAC,MAAM,EAAE;IACZC,EAAE,EAAE,SAAAA,EAAAA,CAAA1F,IAAI,EAAA;MAAA,OAAIS,UAAU,CAACT,IAAI,KAAA,IAAA,IAAJA,IAAI,KAAJA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAEC,KAAK,CAAC,CAAA;AAAA,KAAA;AACnC0F,IAAAA,IAAI,EAAE5B,+BAAAA;GACP,CAAA;AACL,CAAC;;AC7JD,IAAM6B,gBAAgB,GAAG,SAAnBA,gBAAgBA,GAAS;AAC7B,EAAA,IAAAC,eAAA,GAAcC,cAAc,EAAE;IAAtB1C,CAAC,GAAAyC,eAAA,CAADzC,CAAC,CAAA;AAET,EAAA,IAAA2C,iBAAA,GAEIC,gBAAgB,EAAE;IAAAC,qBAAA,GAAAF,iBAAA,CADpBxE,MAAM;IAAIvB,IAAI,GAAAiG,qBAAA,CAAJjG,IAAI;IAAQb,OAAO,GAAA8G,qBAAA,CAAbzF,IAAI;IAAW0F,QAAQ,GAAAD,qBAAA,CAARC,QAAQ,CAAA;AAGzC,EAAA,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAIC,YAAY,EAAE9G,KAAK,EAAA;AAAA,IAAA,OAAK8G,YAAY,CAACC,MAAM,CAAC/G,KAAK,CAAC,CAAA;AAAA,GAAA,CAAA;AAExE,EAAA,IAAMgH,SAAS,GAAG,SAAZA,SAASA,CAAGF,YAAY,EAAA;AAAA,IAAA,OAAIA,YAAY,CAACG,IAAI,CAAC7D,gBAAgB,EAAE,CAAC,CAAA;AAAA,GAAA,CAAA;EAEvE,IAAM8D,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,KAAK,EAAEL,YAAY,EAAK;AAAA,IAAA,IAAAM,OAAA,CAAA;IAC7C,IAAID,KAAK,CAACE,GAAG,KAAK,OAAO,IAAIC,gBAAgB,CAACH,KAAK,CAAC,EAAE,OAAA;AAEtD,IAAA,IAAMI,IAAI,GAAGJ,KAAK,CAACK,MAAM,CAACD,IAAI,CAAA;IAC9B,IAAME,MAAM,GAAAC,kBAAA,CACPH,IAAI,CAACI,gBAAgB,CAAC,8CAA8C,CAAC,CACzE,CAAA;IAED,IAAMC,YAAY,GAAGH,MAAM,CAACI,OAAO,CAACV,KAAK,CAACK,MAAM,CAAC,CAAA;IAEjDI,YAAY,IAAIH,MAAM,CAACK,MAAM,GAAG,CAAC,GAC7Bd,SAAS,CAACF,YAAY,CAAC,GAAAM,CAAAA,OAAA,GACvBK,MAAM,CAACG,YAAY,GAAG,CAAC,CAAC,MAAA,IAAA,IAAAR,OAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAxBA,OAAA,CAA0BW,KAAK,EAAE,CAAA;IAErCZ,KAAK,CAACa,cAAc,EAAE,CAAA;IACtBb,KAAK,CAACc,eAAe,EAAE,CAAA;GACxB,CAAA;AAED,EAAA,IAAI9G,UAAU,CAACT,IAAI,CAACC,KAAK,CAAC,EAAE;IAC1B,oBACEiC,GAAA,CAACsF,UAAU,EAAA;AAACtH,MAAAA,IAAI,EAAC,MAAM;MAAAmC,QAAA,EACpB,SAAAA,QAAAA,CAAA+D,YAAY,EAAA;AAAA,QAAA,oBACXqB,IAAA,CAAA,KAAA,EAAA;AACEC,UAAAA,SAAS,EAAC,8BAA8B;AACxC/E,UAAAA,EAAE,EAAC,uCAAuC;UAAAN,QAAA,EAAA,cAE1CH,GAAA,CAACyF,KAAK,EAAA;YAACxE,QAAQ,EAAA,IAAA;YAAAd,QAAA,EAAEe,CAAC,CAAC,oCAAoC,CAAA;WAAS,CAAC,EAChEwE,UAAU,CAACzI,OAAO,CAAC,IAClB0I,KAAK,CAACC,OAAO,CAAC3I,OAAO,CAAC,IACtBA,OAAO,CAACC,GAAG,CAAC,UAAC2I,CAAC,EAAEzI,KAAK,EAAA;AAAA,YAAA,oBACnB4C,GAAA,CAAA,KAAA,EAAA;AAAKwF,cAAAA,SAAS,EAAC,uBAAuB;AAAArF,cAAAA,QAAA,eACpCH,GAAA,CAAA,KAAA,EAAA;AAAKwF,gBAAAA,SAAS,EAAC,QAAQ;gBAAArF,QAAA,eACrBH,GAAA,CAAC8F,KAAK,EAAA;kBACJC,SAAS,EAAA,IAAA;kBACT,SAAAC,EAAAA,+BAAAA,CAAAA,MAAA,CAAyC5I,KAAK,CAAG;AACjD6I,kBAAAA,QAAQ,EAAEjC,QAAS;AACnBhG,kBAAAA,IAAI,EAAAgI,OAAAA,CAAAA,MAAA,CAAU5I,KAAK,EAAS,QAAA,CAAA;AAC5B8I,kBAAAA,WAAW,EAAEhF,CAAC,CAAC,wCAAwC,CAAE;kBACzDiF,MAAM,EACJlJ,OAAO,CAACiI,MAAM,GAAG,CAAC,iBAChBlF,GAAA,CAACoG,MAAM,EAAA;oBACL,SAAAJ,EAAAA,sCAAAA,CAAAA,MAAA,CAAgD5I,KAAK,CAAG;AACxDiJ,oBAAAA,IAAI,EAAEC,MAAO;AACbC,oBAAAA,KAAK,EAAC,MAAM;oBACZjG,OAAO,EAAE,SAAAA,OAAA,GAAA;AAAA,sBAAA,OAAM2D,YAAY,CAACC,YAAY,EAAE9G,KAAK,CAAC,CAAA;AAAA,qBAAA;AAAC,mBAClD,CAEJ;kBACDoJ,SAAS,EAAE,SAAAA,SAAAA,CAAAjC,KAAK,EAAA;AAAA,oBAAA,OAAID,aAAa,CAACC,KAAK,EAAEL,YAAY,CAAC,CAAA;AAAA,mBAAA;iBACvD,CAAA;eACE,CAAA;AAAC,aAAA,EApBoC9G,KAqBvC,CAAC,CAAA;AAAA,WACP,CAAC,eACJ4C,GAAA,CAACoG,MAAM,EAAA;YACLK,SAAS,EAAA,IAAA;AACTjB,YAAAA,SAAS,EAAC,sCAAsC;AAChD,YAAA,SAAA,EAAQ,qCAAqC;AAC7C7E,YAAAA,KAAK,EAAEO,CAAC,CAAC,qCAAqC,CAAE;AAChDqF,YAAAA,KAAK,EAAC,WAAW;YACjBjG,OAAO,EAAE,SAAAA,OAAA,GAAA;cAAA,OAAM8D,SAAS,CAACF,YAAY,CAAC,CAAA;AAAA,aAAA;AAAC,WACxC,CAAC,CAAA;AAAA,SACC,CAAC,CAAA;AAAA,OAAA;AACP,KACS,CAAC,CAAA;GAEhB,MAAM,IAAIzF,OAAO,CAACX,IAAI,CAACC,KAAK,CAAC,EAAE;AAC9B,IAAA,oBACEwH,IAAA,CAAA,KAAA,EAAA;AAAKC,MAAAA,SAAS,EAAC,8BAA8B;MAAArF,QAAA,EAAA,cAC3CH,GAAA,CAACyF,KAAK,EAAA;QAACxE,QAAQ,EAAA,IAAA;QAAAd,QAAA,EAAEe,CAAC,CAAC,iCAAiC,CAAA;AAAC,OAAQ,CAAC,eAC9DlB,GAAA,CAAC8F,KAAK,EAAA;AACJG,QAAAA,QAAQ,EAAEjC,QAAS;AACnBrD,QAAAA,KAAK,EAAEO,CAAC,CAAC,mCAAmC,CAAE;AAC9ClD,QAAAA,IAAI,EAAC,gBAAgB;QACrBkI,WAAW,EAAEhF,CAAC,CAAC,uCAAuC,CAAA;AAAE,OACzD,CAAC,eACFlB,GAAA,CAAC8F,KAAK,EAAA;AACJG,QAAAA,QAAQ,EAAEjC,QAAS;AACnBrD,QAAAA,KAAK,EAAEO,CAAC,CAAC,gCAAgC,CAAE;AAC3ClD,QAAAA,IAAI,EAAC,kBAAkB;QACvBkI,WAAW,EAAEhF,CAAC,CAAC,4CAA4C,CAAA;AAAE,OAC9D,CAAC,CAAA;AAAA,KACC,CAAC,CAAA;AAEV,GAAA;AAEA,EAAA,OAAO,IAAI,CAAA;AACb,CAAC;;AC3FD,IAAMwF,SAAS,GAAG,SAAZA,SAASA,CAAAlJ,IAAA,EAOT;AAAA,EAAA,IANJmJ,UAAU,GAAAnJ,IAAA,CAAVmJ,UAAU;IAAAC,qBAAA,GAAApJ,IAAA,CACVqJ,iBAAiB;AAAjBA,IAAAA,iBAAiB,GAAAD,qBAAA,KAAG,KAAA,CAAA,GAAA,EAAE,GAAAA,qBAAA;IAAAE,aAAA,GAAAtJ,IAAA,CACtBwG,QAAQ;AAARA,IAAAA,QAAQ,GAAA8C,aAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,aAAA;IAAAC,qBAAA,GAAAvJ,IAAA,CAChBwJ,kBAAkB;AAAlBA,IAAAA,kBAAkB,GAAAD,qBAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,qBAAA;IAC1B5G,QAAQ,GAAA3C,IAAA,CAAR2C,QAAQ;IACR8G,iBAAiB,GAAAzJ,IAAA,CAAjByJ,iBAAiB,CAAA;AAEjB,EAAA,IAAAtD,eAAA,GAAcC,cAAc,EAAE;IAAtB1C,CAAC,GAAAyC,eAAA,CAADzC,CAAC,CAAA;AAET,EAAA,IAAA2C,iBAAA,GAGIC,gBAAgB,EAAE;AAFJ7G,IAAAA,OAAO,GAAA4G,iBAAA,CAAvBxE,MAAM,CAAIf,IAAI;IACd4I,aAAa,GAAArD,iBAAA,CAAbqD,aAAa,CAAA;AAGf,EAAA,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAGrJ,IAAI,EAAI;AAC/BoJ,IAAAA,aAAa,CAAC,MAAM,EAAEpJ,IAAI,CAAC,CAAA;AAC3B,IAAA,IAAIS,UAAU,CAACT,IAAI,CAACC,KAAK,CAAC,EAAE;AAC1BmJ,MAAAA,aAAa,CAAC,MAAM,EAAEjK,OAAO,aAAPA,OAAO,KAAA,KAAA,CAAA,GAAPA,OAAO,GAAI,CAACuD,gBAAgB,EAAE,CAAC,CAAC,CAAA;KACvD,MAAM,IAAI/B,OAAO,CAACX,IAAI,CAACC,KAAK,CAAC,EAAE;MAC9BmJ,aAAa,CAAC,MAAM,EAAEjK,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAPA,KAAAA,CAAAA,GAAAA,OAAO,GAAIoG,kBAAkB,CAAC,CAAA;AACtD,KAAA;GACD,CAAA;AAED,EAAA,oBACErD,GAAA,CAACC,IAAI,CAACmH,IAAI,EAAA;AAAAjH,IAAAA,QAAA,eACRoF,IAAA,CAAA,KAAA,EAAA;AAAKC,MAAAA,SAAS,EAAC,kBAAkB;MAAArF,QAAA,EAAA,cAC/BH,GAAA,CAAC8F,KAAK,EAAA;QACJ7E,QAAQ,EAAA,IAAA;AACR,QAAA,SAAA,EAAQ,iBAAiB;AACzBgF,QAAAA,QAAQ,EAAEjC,QAAS;AACnBrD,QAAAA,KAAK,EAAEO,CAAC,CAAC,8BAA8B,CAAE;AACzClD,QAAAA,IAAI,EAAC,MAAM;AACXkI,QAAAA,WAAW,EAAEhF,CAAC,CAAC,yCAAyC,CAAE;AAC1DmG,QAAAA,GAAG,EAAEJ,iBAAAA;AAAkB,OACxB,CAAC,eACFjH,GAAA,CAACsH,MAAM,EAAA;QACLC,YAAY,EAAA,IAAA;AACZC,QAAAA,UAAU,EAAExD,QAAS;AACrBrD,QAAAA,KAAK,EAAEO,CAAC,CAAC,8BAA8B,CAAE;AACzClD,QAAAA,IAAI,EAAC,MAAM;AACXf,QAAAA,OAAO,EAAE4J,iBAAkB;AAC3BY,QAAAA,QAAQ,EAAEN,gBAAAA;AAAiB,OAC5B,CAAC,EACDzI,sBAAsB,CAACiI,UAAU,CAAC,iBAAI3G,GAAA,CAAC0D,gBAAgB,EAAA,EAAE,CAAC,EAC1D,CAACsD,kBAAkB,iBAClBzB,IAAA,CAACE,KAAK,EAAA;AACJD,QAAAA,SAAS,EAAC,yBAAyB;AACnC,QAAA,SAAA,EAAQ,8BAA8B;QAAArF,QAAA,EAAA,cAEtCH,GAAA,CAAC0H,MAAM,EAAA;AAAC,UAAA,SAAA,EAAQ,oBAAoB;AAAC1J,UAAAA,IAAI,EAAC,YAAA;AAAY,SAAE,CAAC,eACzDgC,GAAA,CAAC2H,UAAU,EAAA;AACTnC,UAAAA,SAAS,EAAC,WAAW;AACrBoC,UAAAA,SAAS,EAAC,MAAM;AAChB,UAAA,SAAA,EAAQ,0BAA0B;AAClCrB,UAAAA,KAAK,EAAC,OAAO;UAAApG,QAAA,EAEZe,CAAC,CAAC,+BAA+B,CAAA;AAAC,SACzB,CAAC,CAAA;OACR,CACR,EACAf,QAAQ,CAAA;KACN,CAAA;AAAC,GACG,CAAC,CAAA;AAEhB,CAAC;;;;;AC/DD,IAAM0H,GAAG,GAAG,SAANA,GAAGA,CAAArK,IAAA,EASH;AAAA,EAAA,IARJG,YAAY,GAAAH,IAAA,CAAZG,YAAY;IAAAmK,iBAAA,GAAAtK,IAAA,CACZsB,YAAY;AAAZA,IAAAA,YAAY,GAAAgJ,iBAAA,KAAGC,KAAAA,CAAAA,GAAAA,SAAS,GAAAD,iBAAA;IACxBjK,OAAO,GAAAL,IAAA,CAAPK,OAAO;IACP0B,qBAAqB,GAAA/B,IAAA,CAArB+B,qBAAqB;IACrByI,aAAa,GAAAxK,IAAA,CAAbwK,aAAa;IACblI,OAAO,GAAAtC,IAAA,CAAPsC,OAAO;IACPmI,iBAAiB,GAAAzK,IAAA,CAAjByK,iBAAiB;AACdC,IAAAA,KAAK,GAAAC,wBAAA,CAAA3K,IAAA,EAAA4K,WAAA,CAAA,CAAA;AAER,EAAA,IAAAzE,eAAA,GAAcC,cAAc,EAAE;IAAtB1C,CAAC,GAAAyC,eAAA,CAADzC,CAAC,CAAA;EAET,IAAAmH,eAAA,GAAyDC,cAAc,CAAC;AACtEC,MAAAA,SAAS,EAAEN,iBAAAA;AACb,KAAC,CAAC;IAFcO,WAAW,GAAAH,eAAA,CAAnBI,MAAM;IAA0BlI,YAAY,GAAA8H,eAAA,CAAvBK,SAAS,CAAA;EAItC,IAAM1J,aAAa,GAAGK,MAAM,CAACJ,IAAI,CAACH,YAAY,EAAEI,WAAW,CAAC,CAAC,CAAA;AAE7D,EAAA,IAAMyJ,YAAY,GAAG,SAAfA,YAAYA,CAAGlL,UAAU,EAAI;IACjC,IAAMmL,OAAO,GAAGrL,YAAY,CAAC;AAAEE,MAAAA,UAAU,EAAVA,UAAU;AAAEE,MAAAA,YAAY,EAAZA,YAAY;AAAEE,MAAAA,OAAO,EAAPA,OAAAA;AAAQ,KAAC,CAAC,CAAA;IACnE2K,WAAW,CAACI,OAAO,EAAE;AAAEL,MAAAA,SAAS,EAAEzI,OAAAA;AAAQ,KAAC,CAAC,CAAA;GAC7C,CAAA;EAED,oBACEyF,IAAA,CAAAsD,QAAA,EAAA;AAAA1I,IAAAA,QAAA,EACEH,cAAAA,GAAA,CAACC,IAAI,CAAC6I,MAAM,EAAA;MAAA3I,QAAA,eACVH,GAAA,CAAC2H,UAAU,EAAA;AAAC,QAAA,SAAA,EAAQ,iBAAiB;AAACpB,QAAAA,KAAK,EAAC,IAAI;QAAApG,QAAA,EAC7Ce,CAAC,CAAC,6BAA6B,CAAA;OACtB,CAAA;AAAC,KACF,CAAC,eACdlB,GAAA,CAAC+I,IAAI,EAAA;AACHC,MAAAA,WAAW,EAAE;QACXhB,aAAa,EAAA3K,eAAA,CAAAA,eAAA,KAAO2K,aAAa,CAAA,EAAK9E,cAAc,CAAE;AACtD+F,QAAAA,gBAAgB,EAAE3J,wBAAwB,CAACC,qBAAqB,CAAC;AACjE2J,QAAAA,QAAQ,EAAEP,YAAAA;OACV;MAAAxI,QAAA,EAED,SAAAA,QAAAA,CAAAtB,KAAA,EAAA;AAAA,QAAA,IAAaf,IAAI,GAAAe,KAAA,CAAdQ,MAAM,CAAIvB,IAAI,CAAA;QAAA,oBAChByH,IAAA,CAAAsD,QAAA,EAAA;AAAA1I,UAAAA,QAAA,EACEH,cAAAA,GAAA,CAAC0G,SAAS,EAAArJ,eAAA,CAAA;YACRsJ,UAAU,EAAE7I,IAAI,CAACC,KAAM;AACvB8I,YAAAA,iBAAiB,EAAE7H,aAAAA;AAAc,WAAA,EAC7BkJ,KAAK,CACV,CAAC,EACDtI,gBAAgB,CAAC;AAAEE,YAAAA,OAAO,EAAPA,OAAO;AAAEC,YAAAA,OAAO,EAAEQ,YAAAA;AAAa,WAAC,CAAC,CAAA;AAAA,SACrD,CAAC,CAAA;AAAA,OAAA;AACJ,KACG,CAAC,CAAA;AAAA,GACP,CAAC,CAAA;AAEP,CAAC;;;;;AChDD,IAAM4I,IAAI,GAAG,SAAPA,IAAIA,CAAA3L,IAAA,EASJ;AAAA,EAAA,IARJ4L,OAAO,GAAA5L,IAAA,CAAP4L,OAAO;IAAAtB,iBAAA,GAAAtK,IAAA,CACPsB,YAAY;AAAZA,IAAAA,YAAY,GAAAgJ,iBAAA,KAAGC,KAAAA,CAAAA,GAAAA,SAAS,GAAAD,iBAAA;IACxBjK,OAAO,GAAAL,IAAA,CAAPK,OAAO;IAAAwL,qBAAA,GAAA7L,IAAA,CACP+B,qBAAqB;AAArBA,IAAAA,qBAAqB,GAAA8J,qBAAA,KAAA,KAAA,CAAA,GAAG,EAAE,GAAAA,qBAAA;IAAAC,kBAAA,GAAA9L,IAAA,CAC1BwK,aAAa;AAAbA,IAAAA,aAAa,GAAAsB,kBAAA,KAAA,KAAA,CAAA,GAAG,EAAE,GAAAA,kBAAA;IAClBxJ,OAAO,GAAAtC,IAAA,CAAPsC,OAAO;IACPmI,iBAAiB,GAAAzK,IAAA,CAAjByK,iBAAiB;AACdC,IAAAA,KAAK,GAAAC,wBAAA,CAAA3K,IAAA,EAAA4K,WAAA,CAAA,CAAA;AAER,EAAA,IAAAzE,eAAA,GAAcC,cAAc,EAAE;IAAtB1C,CAAC,GAAAyC,eAAA,CAADzC,CAAC,CAAA;EAET,IAAAqI,aAAA,GAAiDC,YAAY,CAAC;AAC5DJ,MAAAA,OAAO,EAAPA,OAAO;AACPvL,MAAAA,OAAO,EAAPA,OAAAA;AACF,KAAC,CAAC;IAAA4L,kBAAA,GAAAF,aAAA,CAHMjL,IAAI;AAAAoL,IAAAA,mBAAA,GAAAD,kBAAA,KAAA,KAAA,CAAA,GAAmB,EAAE,GAAAA,kBAAA;IAAAE,qBAAA,GAAAD,mBAAA,CAAjBtL,KAAK;AAALA,IAAAA,KAAK,GAAAuL,qBAAA,KAAA,KAAA,CAAA,GAAG,EAAE,GAAAA,qBAAA;IAASC,SAAS,GAAAL,aAAA,CAATK,SAAS,CAAA;EAK5C,IAAAC,eAAA,GAAyDC,cAAc,CAAC;MACtEvB,SAAS,EAAE,SAAAA,SAAAA,GAAa;AAAA,QAAA,KAAA,IAAAwB,IAAA,GAAAC,SAAA,CAAA9E,MAAA,EAAT+E,IAAI,GAAAtE,IAAAA,KAAA,CAAAoE,IAAA,GAAAG,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA,EAAA,EAAA;AAAJD,UAAAA,IAAI,CAAAC,IAAA,CAAAF,GAAAA,SAAA,CAAAE,IAAA,CAAA,CAAA;AAAA,SAAA;QACjBjC,iBAAiB,KAAA,IAAA,IAAjBA,iBAAiB,KAAjBA,KAAAA,CAAAA,IAAAA,iBAAiB,CAAAkC,KAAA,CAAA,KAAA,CAAA,EAAMF,IAAI,CAAC,CAAA;AAC5BnK,QAAAA,OAAO,EAAE,CAAA;AACX,OAAA;AACF,KAAC,CAAC;IALcsK,WAAW,GAAAP,eAAA,CAAnBpB,MAAM;IAA0BlI,YAAY,GAAAsJ,eAAA,CAAvBnB,SAAS,CAAA;AAOtC,EAAA,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAGlL,UAAU,EAAI;IACjC,IAAMmL,OAAO,GAAGrL,YAAY,CAAC;AAAEE,MAAAA,UAAU,EAAVA,UAAU;AAAEI,MAAAA,OAAO,EAAPA,OAAAA;AAAQ,KAAC,CAAC,CAAA;AACrDuM,IAAAA,WAAW,CAAC;AAAEhB,MAAAA,OAAO,EAAPA,OAAO;AAAER,MAAAA,OAAO,EAAPA,OAAAA;AAAQ,KAAC,CAAC,CAAA;GAClC,CAAA;EAED,oBACErD,IAAA,CAAAsD,QAAA,EAAA;AAAA1I,IAAAA,QAAA,EACEH,cAAAA,GAAA,CAACC,IAAI,CAAC6I,MAAM,EAAA;MAAA3I,QAAA,eACVH,GAAA,CAAC2H,UAAU,EAAA;AAAC,QAAA,SAAA,EAAQ,kBAAkB;AAACpB,QAAAA,KAAK,EAAC,IAAI;QAAApG,QAAA,EAC9Ce,CAAC,CAAC,8BAA8B,CAAA;OACvB,CAAA;AAAC,KACF,CAAC,EACb0I,SAAS,gBACR5J,GAAA,CAACqK,UAAU,EAAA,EAAE,CAAC,gBAEdrK,GAAA,CAAC+I,IAAI,EAAA;AACHC,MAAAA,WAAW,EAAE;QACXhB,aAAa,EAAA3K,eAAA,CAAAA,eAAA,KACR2K,aAAa,CAAA,EACbsC,KAAK,CAAC,MAAM,EAAEpL,WAAW,CAACd,KAAK,CAACN,IAAI,CAAC,EAAEM,KAAK,CAAC,CACjD;AACD6K,QAAAA,gBAAgB,EAAE3J,wBAAwB,CAACC,qBAAqB,CAAC;AACjEgL,QAAAA,kBAAkB,EAAE,IAAI;AACxBrB,QAAAA,QAAQ,EAAEP,YAAAA;OACV;AAAAxI,MAAAA,QAAA,EAED,SAAAA,QAAAtB,CAAAA,KAAA,EAA0B;AAAA,QAAA,IAAbf,IAAI,GAAAe,KAAA,CAAdQ,MAAM,CAAIvB,IAAI,CAAA;QAChB,IAAM0M,cAAc,GAAG5L,iBAAiB,CAAC;AACvCE,UAAAA,YAAY,EAAZA,YAAY;AACZC,UAAAA,YAAY,EAAEjB,IAAAA;AAChB,SAAC,CAAC,CAAA;QAEF,oBACEyH,IAAA,CAAAsD,QAAA,EAAA;AAAA1I,UAAAA,QAAA,EACEH,cAAAA,GAAA,CAAC0G,SAAS,EAAArJ,eAAA,CAAA;AACRsJ,YAAAA,UAAU,EAAE7I,IAAI,KAAA,IAAA,IAAJA,IAAI,KAAJA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAEC,KAAM;YACxBiG,QAAQ,EAAE5F,KAAK,CAAC4F,QAAS;AACzB6C,YAAAA,iBAAiB,EAAE2D,cAAAA;AAAe,WAAA,EAC9BtC,KAAK,CACV,CAAC,EACDtI,gBAAgB,CAAC;AAAEE,YAAAA,OAAO,EAAPA,OAAO;AAAEC,YAAAA,OAAO,EAAEQ,YAAAA;AAAa,WAAC,CAAC,CAAA;AAAA,SACrD,CAAC,CAAA;AAEP,OAAA;AAAC,KACG,CACP,CAAA;AAAA,GACD,CAAC,CAAA;AAEP,CAAC;;;;;ACpFD,IAAMkK,UAAU,GAAG,SAAbA,UAAUA,CAAAjN,IAAA,EAAiD;AAAA,EAAA,IAA3CkN,MAAM,GAAAlN,IAAA,CAANkN,MAAM;IAAAC,kBAAA,GAAAnN,IAAA,CAAEoN,aAAa;AAAbA,IAAAA,aAAa,GAAAD,kBAAA,KAAA,KAAA,CAAA,GAAG,EAAE,GAAAA,kBAAA;AAAKzC,IAAAA,KAAK,GAAAC,wBAAA,CAAA3K,IAAA,EAAA4K,SAAA,CAAA,CAAA;AACxD,EAAA,IAAMnB,iBAAiB,GAAG4D,MAAM,CAAC,IAAI,CAAC,CAAA;EAEtC,oBACE7K,GAAA,CAACC,IAAI,EAAA;AACGyK,IAAAA,MAAM,EAANA,MAAM;AACZI,IAAAA,eAAe,EAAE7D,iBAAkB;IACnCnH,OAAO,EAAEoI,KAAK,CAACpI,OAAQ;AAAAK,IAAAA,QAAA,EAEtBjC,OAAO,CAAC0M,aAAa,CAAC,gBACrB5K,GAAA,CAAC6H,GAAG,EAAAxK,aAAA,CAAAA,EAAAA,EAAAA,aAAA,CAAAA,aAAA,KAAU6K,KAAK,CAAA,EAAA,EAAA,EAAA;AAAEjB,MAAAA,iBAAiB,EAAjBA,iBAAAA;AAAiB,KAAA,CAAA,CAAK,CAAC,gBAE5CjH,GAAA,CAACmJ,IAAI,EAAA9L,aAAA,CAAA;AACH+L,MAAAA,OAAO,EAAEwB,aAAa,KAAA,IAAA,IAAbA,aAAa,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAbA,aAAa,CAAEnK,EAAAA;AAAG,KAAA,EAAApD,aAAA,CAAAA,aAAA,CAAA,EAAA,EAClB6K,KAAK,CAAA,EAAA,EAAA,EAAA;AAAEjB,MAAAA,iBAAiB,EAAjBA,iBAAAA;KACjB,CAAA,CAAA,CAAA;AACF,GACG,CAAC,CAAA;AAEX;;;;"}
|