@solidxai/core-ui 0.1.5-beta.11 → 0.1.5-beta.13
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/components/auth/GoogleAuthChecking.d.ts.map +1 -1
- package/dist/components/auth/GoogleAuthChecking.js +10 -10
- package/dist/components/auth/GoogleAuthChecking.js.map +1 -1
- package/dist/components/auth/GoogleAuthChecking.tsx +8 -9
- package/dist/components/auth/SolidChangeForcePassword.d.ts.map +1 -1
- package/dist/components/auth/SolidChangeForcePassword.js +9 -10
- package/dist/components/auth/SolidChangeForcePassword.js.map +1 -1
- package/dist/components/auth/SolidChangeForcePassword.tsx +6 -9
- package/dist/components/auth/SolidForgotPassword.d.ts.map +1 -1
- package/dist/components/auth/SolidForgotPassword.js +8 -8
- package/dist/components/auth/SolidForgotPassword.js.map +1 -1
- package/dist/components/auth/SolidForgotPassword.tsx +6 -8
- package/dist/components/auth/SolidInitialLoginOtp.d.ts.map +1 -1
- package/dist/components/auth/SolidInitialLoginOtp.js +57 -57
- package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
- package/dist/components/auth/SolidInitialLoginOtp.tsx +10 -11
- package/dist/components/auth/SolidInitiateRegisterOtp.d.ts.map +1 -1
- package/dist/components/auth/SolidInitiateRegisterOtp.js +57 -57
- package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
- package/dist/components/auth/SolidInitiateRegisterOtp.tsx +10 -11
- package/dist/components/auth/SolidLogin.d.ts.map +1 -1
- package/dist/components/auth/SolidLogin.js +12 -12
- package/dist/components/auth/SolidLogin.js.map +1 -1
- package/dist/components/auth/SolidLogin.tsx +11 -16
- package/dist/components/auth/SolidRegister.d.ts.map +1 -1
- package/dist/components/auth/SolidRegister.js +19 -19
- package/dist/components/auth/SolidRegister.js.map +1 -1
- package/dist/components/auth/SolidRegister.tsx +18 -23
- package/dist/components/auth/SolidResetPassword.d.ts.map +1 -1
- package/dist/components/auth/SolidResetPassword.js +15 -15
- package/dist/components/auth/SolidResetPassword.js.map +1 -1
- package/dist/components/auth/SolidResetPassword.tsx +7 -8
- package/dist/components/common/GeneralSettings.d.ts.map +1 -1
- package/dist/components/common/GeneralSettings.js +87 -120
- package/dist/components/common/GeneralSettings.js.map +1 -1
- package/dist/components/common/GeneralSettings.tsx +12 -42
- package/dist/components/common/GlobalToast.d.ts +2 -0
- package/dist/components/common/GlobalToast.d.ts.map +1 -0
- package/dist/components/common/GlobalToast.js +25 -0
- package/dist/components/common/GlobalToast.js.map +1 -0
- package/dist/components/common/GlobalToast.tsx +25 -0
- package/dist/components/common/SolidExport.d.ts.map +1 -1
- package/dist/components/common/SolidExport.js +19 -31
- package/dist/components/common/SolidExport.js.map +1 -1
- package/dist/components/common/SolidExport.tsx +7 -19
- package/dist/components/common/SolidFormStepper.d.ts.map +1 -1
- package/dist/components/common/SolidFormStepper.js +41 -41
- package/dist/components/common/SolidFormStepper.js.map +1 -1
- package/dist/components/common/SolidFormStepper.tsx +5 -6
- package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.d.ts.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.js +9 -9
- package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.js.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.tsx +8 -9
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.d.ts.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js +8 -8
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.tsx +7 -9
- package/dist/components/core/common/SolidAccountSettings/SolidPersonalInfo.d.ts.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidPersonalInfo.js +11 -11
- package/dist/components/core/common/SolidAccountSettings/SolidPersonalInfo.js.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidPersonalInfo.tsx +10 -11
- package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.d.ts.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js +9 -9
- package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.tsx +8 -9
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.d.ts.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js +7 -7
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.tsx +6 -7
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +78 -21
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +65 -10
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js +6 -8
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +5 -9
- package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js +9 -11
- package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.tsx +5 -10
- package/dist/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.js +5 -6
- package/dist/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.tsx +5 -8
- package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js +10 -12
- package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.tsx +6 -11
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js +11 -6
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -1
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +13 -1
- package/dist/components/core/form/SolidFormUserViewLayout.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormUserViewLayout.js +7 -8
- package/dist/components/core/form/SolidFormUserViewLayout.js.map +1 -1
- package/dist/components/core/form/SolidFormUserViewLayout.tsx +5 -7
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +12 -21
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +11 -33
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +37 -26
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +38 -5
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +11 -11
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +9 -11
- package/dist/components/core/kanban/KanbanUserViewLayout.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanUserViewLayout.js +7 -8
- package/dist/components/core/kanban/KanbanUserViewLayout.js.map +1 -1
- package/dist/components/core/kanban/KanbanUserViewLayout.tsx +4 -6
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +5 -7
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +4 -9
- package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.d.ts.map +1 -1
- package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js +13 -13
- package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js.map +1 -1
- package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.tsx +5 -6
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +20 -67
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +9 -76
- package/dist/components/core/model/CreateModel.d.ts.map +1 -1
- package/dist/components/core/model/CreateModel.js +15 -25
- package/dist/components/core/model/CreateModel.js.map +1 -1
- package/dist/components/core/model/CreateModel.tsx +12 -32
- package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaData.js +6 -17
- package/dist/components/core/model/FieldMetaData.js.map +1 -1
- package/dist/components/core/model/FieldMetaData.tsx +5 -26
- package/dist/components/core/model/ModelMetaData.d.ts.map +1 -1
- package/dist/components/core/model/ModelMetaData.js +48 -55
- package/dist/components/core/model/ModelMetaData.js.map +1 -1
- package/dist/components/core/model/ModelMetaData.tsx +4 -22
- package/dist/components/core/module/CreateModule.d.ts.map +1 -1
- package/dist/components/core/module/CreateModule.js +42 -44
- package/dist/components/core/module/CreateModule.js.map +1 -1
- package/dist/components/core/module/CreateModule.tsx +13 -27
- package/dist/components/core/module/ModuleListViewData.d.ts.map +1 -1
- package/dist/components/core/module/ModuleListViewData.js +11 -7
- package/dist/components/core/module/ModuleListViewData.js.map +1 -1
- package/dist/components/core/module/ModuleListViewData.tsx +10 -8
- package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
- package/dist/components/core/tree/SolidTreeView.js +32 -69
- package/dist/components/core/tree/SolidTreeView.js.map +1 -1
- package/dist/components/core/tree/SolidTreeView.tsx +8 -47
- package/dist/components/core/users/CreateUser.d.ts.map +1 -1
- package/dist/components/core/users/CreateUser.js +24 -37
- package/dist/components/core/users/CreateUser.js.map +1 -1
- package/dist/components/core/users/CreateUser.tsx +8 -46
- package/dist/components/core/users/UserListView.d.ts.map +1 -1
- package/dist/components/core/users/UserListView.js +9 -16
- package/dist/components/core/users/UserListView.js.map +1 -1
- package/dist/components/core/users/UserListView.tsx +5 -21
- package/dist/components/layout/AdminLayout.d.ts.map +1 -1
- package/dist/components/layout/AdminLayout.js +4 -2
- package/dist/components/layout/AdminLayout.js.map +1 -1
- package/dist/components/layout/AdminLayout.tsx +4 -2
- package/dist/components/layout/AppSidebar.d.ts.map +1 -1
- package/dist/components/layout/AppSidebar.js +1 -2
- package/dist/components/layout/AppSidebar.js.map +1 -1
- package/dist/components/layout/AppSidebar.tsx +0 -2
- package/dist/components/layout/Layout.d.ts.map +1 -1
- package/dist/components/layout/Layout.js +2 -1
- package/dist/components/layout/Layout.js.map +1 -1
- package/dist/components/layout/Layout.tsx +2 -0
- package/dist/components/layout/navbar-one.d.ts.map +1 -1
- package/dist/components/layout/navbar-one.js +1 -2
- package/dist/components/layout/navbar-one.js.map +1 -1
- package/dist/components/layout/navbar-one.tsx +0 -2
- package/dist/components/layout/navbar-two-menu.d.ts.map +1 -1
- package/dist/components/layout/navbar-two-menu.js +50 -24
- package/dist/components/layout/navbar-two-menu.js.map +1 -1
- package/dist/components/layout/navbar-two-menu.tsx +48 -30
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/index.ts +4 -0
- package/dist/redux/features/toastSlice.d.ts +15 -0
- package/dist/redux/features/toastSlice.d.ts.map +1 -0
- package/dist/redux/features/toastSlice.js +20 -0
- package/dist/redux/features/toastSlice.js.map +1 -0
- package/dist/redux/features/toastSlice.ts +35 -0
- package/dist/redux/store/defaultStoreConfig.d.ts +1 -0
- package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
- package/dist/redux/store/defaultStoreConfig.js +2 -1
- package/dist/redux/store/defaultStoreConfig.js.map +1 -1
- package/dist/redux/store/defaultStoreConfig.ts +2 -0
- package/package.json +1 -1
|
@@ -187,6 +187,9 @@ export const DefaultRelationManyToManyAutoCompleteFormEditWidget = ({ formik, fi
|
|
|
187
187
|
}
|
|
188
188
|
};
|
|
189
189
|
|
|
190
|
+
const isUnsaved = fieldContext.data?.id === undefined || fieldContext.data?.id === "new";
|
|
191
|
+
const entityName = fieldContext.solidFormViewMetaData?.data?.solidView?.model?.displayName || capitalize(fieldContext.modelName);
|
|
192
|
+
|
|
190
193
|
return (
|
|
191
194
|
<div className="relative">
|
|
192
195
|
<div className="flex flex-column gap-2 mt-1 sm:mt-2 md:mt-3 lg:mt-4">
|
|
@@ -197,15 +200,20 @@ export const DefaultRelationManyToManyAutoCompleteFormEditWidget = ({ formik, fi
|
|
|
197
200
|
<SolidFieldTooltip fieldContext={fieldContext} />
|
|
198
201
|
</label>
|
|
199
202
|
)}
|
|
203
|
+
{isUnsaved && (
|
|
204
|
+
<div className="mb-2">
|
|
205
|
+
<Message severity="warn" text={`Please save the ${entityName} first to assign ${fieldLabel}.`} className="w-full justify-content-start" />
|
|
206
|
+
</div>
|
|
207
|
+
)}
|
|
200
208
|
<div className="flex align-items-center gap-3">
|
|
201
209
|
<AutoComplete
|
|
202
|
-
readOnly={readOnly || readOnlyPermission}
|
|
203
|
-
disabled={disabled || readOnlyPermission}
|
|
210
|
+
readOnly={readOnly || readOnlyPermission || isUnsaved}
|
|
211
|
+
disabled={disabled || readOnlyPermission || isUnsaved}
|
|
204
212
|
multiple
|
|
205
213
|
id={fieldLayoutInfo.attrs.name}
|
|
206
214
|
field="label"
|
|
207
215
|
value={currentValues}
|
|
208
|
-
dropdown={!readOnlyPermission}
|
|
216
|
+
dropdown={!readOnlyPermission && !isUnsaved}
|
|
209
217
|
suggestions={suggestions}
|
|
210
218
|
completeMethod={autoCompleteSearch}
|
|
211
219
|
onChange={() => {
|
|
@@ -227,6 +235,7 @@ export const DefaultRelationManyToManyAutoCompleteFormEditWidget = ({ formik, fi
|
|
|
227
235
|
size="small"
|
|
228
236
|
onClick={() => setVisibleCreateDialog(true)}
|
|
229
237
|
className="custom-add-button"
|
|
238
|
+
disabled={isUnsaved}
|
|
230
239
|
/>
|
|
231
240
|
</div>
|
|
232
241
|
<InlineRelationEntityDialog
|
|
@@ -265,6 +274,7 @@ export const DefaultRelationManyToManyAutoCompleteFormEditWidget = ({ formik, fi
|
|
|
265
274
|
export const DefaultRelationManyToManyCheckBoxFormEditWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {
|
|
266
275
|
const fieldMetadata = fieldContext.fieldMetadata;
|
|
267
276
|
const fieldLayoutInfo = fieldContext.field;
|
|
277
|
+
const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;
|
|
268
278
|
const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
|
|
269
279
|
const readOnlyPermission = fieldContext.readOnly;
|
|
270
280
|
|
|
@@ -285,6 +295,11 @@ export const DefaultRelationManyToManyCheckBoxFormEditWidget = ({ formik, fieldC
|
|
|
285
295
|
fetchCurrentValues();
|
|
286
296
|
}, [fieldContext.data?.id]);
|
|
287
297
|
|
|
298
|
+
// Sync currentValues to Formik state for validation
|
|
299
|
+
useEffect(() => {
|
|
300
|
+
formik.setFieldValue(fieldLayoutInfo.attrs.name, currentValues);
|
|
301
|
+
}, [currentValues]);
|
|
302
|
+
|
|
288
303
|
useEffect(() => {
|
|
289
304
|
const queryData: any = {
|
|
290
305
|
offset: 0,
|
|
@@ -325,6 +340,9 @@ export const DefaultRelationManyToManyCheckBoxFormEditWidget = ({ formik, fieldC
|
|
|
325
340
|
}
|
|
326
341
|
}, [fieldContext, formik.values]);
|
|
327
342
|
|
|
343
|
+
const isUnsaved = fieldContext.data?.id === undefined || fieldContext.data?.id === "new";
|
|
344
|
+
const entityName = fieldContext.solidFormViewMetaData?.data?.solidView?.model?.displayName || capitalize(fieldContext.modelName);
|
|
345
|
+
|
|
328
346
|
const handleCheckboxChange = (item: any) => {
|
|
329
347
|
const isCurrentlyLinked = currentValues.some((s) => s.value === item.value);
|
|
330
348
|
if (isCurrentlyLinked) {
|
|
@@ -339,7 +357,7 @@ export const DefaultRelationManyToManyCheckBoxFormEditWidget = ({ formik, fieldC
|
|
|
339
357
|
<div className="flex align-items-center gap-3">
|
|
340
358
|
{showFieldLabel !== false && (
|
|
341
359
|
<label className="form-field-label">
|
|
342
|
-
{
|
|
360
|
+
{fieldLabel}
|
|
343
361
|
{fieldMetadata.required && <span className="text-red-500"> *</span>}
|
|
344
362
|
<SolidFieldTooltip fieldContext={fieldContext} />
|
|
345
363
|
</label>
|
|
@@ -355,6 +373,7 @@ export const DefaultRelationManyToManyCheckBoxFormEditWidget = ({ formik, fieldC
|
|
|
355
373
|
size="small"
|
|
356
374
|
onClick={() => setVisibleCreateDialog(true)}
|
|
357
375
|
className="custom-add-button"
|
|
376
|
+
disabled={isUnsaved}
|
|
358
377
|
/>
|
|
359
378
|
<InlineRelationEntityDialog
|
|
360
379
|
visible={visibleCreateDialog}
|
|
@@ -371,12 +390,18 @@ export const DefaultRelationManyToManyCheckBoxFormEditWidget = ({ formik, fieldC
|
|
|
371
390
|
|
|
372
391
|
return (
|
|
373
392
|
<div>
|
|
393
|
+
{isUnsaved && (
|
|
394
|
+
<div className="mb-2">
|
|
395
|
+
<Message severity="warn" text={`Please save the ${entityName} first to assign ${fieldLabel}.`} className="w-full justify-content-start" />
|
|
396
|
+
</div>
|
|
397
|
+
)}
|
|
374
398
|
<Panel toggleable headerTemplate={headerTemplate}>
|
|
375
399
|
<div className="formgrid grid">
|
|
376
400
|
{allOptions.map((item: any, i: number) => (
|
|
377
401
|
<div key={item.value} className={`field col-6 flex gap-2 ${i >= 2 ? 'mt-3' : ''}`}>
|
|
378
402
|
<Checkbox
|
|
379
|
-
readOnly={readOnlyPermission}
|
|
403
|
+
readOnly={readOnlyPermission || isUnsaved}
|
|
404
|
+
disabled={isUnsaved}
|
|
380
405
|
inputId={item.label}
|
|
381
406
|
checked={currentValues.some((s) => s.value === item.value)}
|
|
382
407
|
onChange={() => handleCheckboxChange(item)}
|
|
@@ -569,6 +594,9 @@ export const DefaultRelationManyToManyListFormEditWidget = ({ formik, fieldConte
|
|
|
569
594
|
setShowSaveParentEntityConfirmationPopup(false);
|
|
570
595
|
};
|
|
571
596
|
|
|
597
|
+
const isUnsaved = fieldContext.data?.id === undefined || fieldContext.data?.id === "new";
|
|
598
|
+
const entityName = fieldContext.solidFormViewMetaData?.data?.solidView?.model?.displayName || capitalize(fieldContext.modelName);
|
|
599
|
+
|
|
572
600
|
return (
|
|
573
601
|
<div>
|
|
574
602
|
{showFieldLabel !== false && (
|
|
@@ -578,6 +606,11 @@ export const DefaultRelationManyToManyListFormEditWidget = ({ formik, fieldConte
|
|
|
578
606
|
<SolidFieldTooltip fieldContext={fieldContext} />
|
|
579
607
|
</label>
|
|
580
608
|
)}
|
|
609
|
+
{isUnsaved && (
|
|
610
|
+
<div className="mb-2">
|
|
611
|
+
<Message severity="warn" text={`Please save the ${entityName} first to assign ${fieldLabel}.`} className="w-full justify-content-start" />
|
|
612
|
+
</div>
|
|
613
|
+
)}
|
|
581
614
|
{listViewParams && (
|
|
582
615
|
<SolidListView key={refreshList.toString()} {...listViewParams} embededFieldRelationType="many-to-many" handleAddClickForEmbeddedView={handleAddClickForEmbeddedView} handleEditClickForEmbeddedView={handleEditClickForEmbeddedView} handleDeleteClick={handleDeleteClick} />
|
|
583
616
|
)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidRelationManyToOneField.d.ts","sourceRoot":"","sources":["../../../../../../src/components/core/form/fields/relations/SolidRelationManyToOneField.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAM5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAU5E,MAAM,MAAM,cAAc,GAAG;IACzB,UAAU,EAAE,GAAG,CAAC;IAChB,SAAS,EAAE,GAAG,CAAC;IACf,EAAE,EAAE,GAAG,CAAC;IACR,OAAO,EAAE,GAAG,CAAC;IACb,oBAAoB,EAAE,GAAG,CAAC;IAC1B,MAAM,EAAE,GAAG,CAAC;CACf,CAAA;AAED,qBAAa,2BAA4B,YAAW,WAAW;IAE3D,OAAO,CAAC,YAAY,CAAkB;gBAE1B,YAAY,EAAE,eAAe;IAIzC,YAAY,IAAI,GAAG;IAqBnB,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,GAAG,GAAG;IAOnD,gBAAgB,IAAI,GAAG,CAAC,MAAM;IA2D9B,MAAM,CAAC,MAAM,EAAE,YAAY;IAoC3B,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;CAYjE;AAED,eAAO,MAAM,sCAAsC,6BAA8B,yBAAyB,
|
|
1
|
+
{"version":3,"file":"SolidRelationManyToOneField.d.ts","sourceRoot":"","sources":["../../../../../../src/components/core/form/fields/relations/SolidRelationManyToOneField.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAM5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAU5E,MAAM,MAAM,cAAc,GAAG;IACzB,UAAU,EAAE,GAAG,CAAC;IAChB,SAAS,EAAE,GAAG,CAAC;IACf,EAAE,EAAE,GAAG,CAAC;IACR,OAAO,EAAE,GAAG,CAAC;IACb,oBAAoB,EAAE,GAAG,CAAC;IAC1B,MAAM,EAAE,GAAG,CAAC;CACf,CAAA;AAED,qBAAa,2BAA4B,YAAW,WAAW;IAE3D,OAAO,CAAC,YAAY,CAAkB;gBAE1B,YAAY,EAAE,eAAe;IAIzC,YAAY,IAAI,GAAG;IAqBnB,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,GAAG,GAAG;IAOnD,gBAAgB,IAAI,GAAG,CAAC,MAAM;IA2D9B,MAAM,CAAC,MAAM,EAAE,YAAY;IAoC3B,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;CAYjE;AAED,eAAO,MAAM,sCAAsC,6BAA8B,yBAAyB,4CAoSzG,CAAA;AAED,eAAO,MAAM,0BAA0B,+HAAgI,GAAG,4CA8DzK,CAAA;AAGD,eAAO,MAAM,sCAAsC,6BAA8B,yBAAyB,4CAiBzG,CAAA;AAMD,eAAO,MAAM,iCAAiC,6BAA8B,yBAAyB,4CA8bpG,CAAA"}
|
|
@@ -59,17 +59,17 @@ import { createSolidEntityApi } from "../../../../../redux/api/solidEntityApi";
|
|
|
59
59
|
import { AutoComplete } from "primereact/autocomplete";
|
|
60
60
|
import { Message } from "primereact/message";
|
|
61
61
|
import qs from "qs";
|
|
62
|
-
import { useEffect,
|
|
62
|
+
import { useEffect, useState } from "react";
|
|
63
63
|
import * as Yup from 'yup';
|
|
64
64
|
import { camelCase } from "lodash";
|
|
65
65
|
import { Button } from "primereact/button";
|
|
66
66
|
import { Dialog } from "primereact/dialog";
|
|
67
67
|
import SolidFormView from '../../../../../components/core/form/SolidFormView';
|
|
68
68
|
import { getExtensionComponent } from "../../../../../helpers/registry";
|
|
69
|
-
import
|
|
69
|
+
import { useDispatch } from 'react-redux';
|
|
70
|
+
import { showToast } from '../../../../../redux/features/toastSlice';
|
|
70
71
|
// import Handlebars from "handlebars/dist/handlebars";
|
|
71
72
|
import * as Handlebars from "handlebars";
|
|
72
|
-
import { Toast } from "primereact/toast";
|
|
73
73
|
import { SolidFieldTooltip } from "../../../../../components/common/SolidFieldTooltip";
|
|
74
74
|
import { ERROR_MESSAGES } from "../../../../../constants/error-messages";
|
|
75
75
|
import { getVirtualScrollerOptions } from "../../../../../helpers/autoCompleteVirtualScroll";
|
|
@@ -215,7 +215,7 @@ export { SolidRelationManyToOneField };
|
|
|
215
215
|
export var DefaultRelationManyToOneFormEditWidget = function (_a) {
|
|
216
216
|
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
217
217
|
var formik = _a.formik, fieldContext = _a.fieldContext;
|
|
218
|
-
var
|
|
218
|
+
var dispatch = useDispatch();
|
|
219
219
|
var fieldMetadata = fieldContext.fieldMetadata;
|
|
220
220
|
var fieldLayoutInfo = fieldContext.field;
|
|
221
221
|
var className = ((_b = fieldLayoutInfo.attrs) === null || _b === void 0 ? void 0 : _b.className) || 'field col-12';
|
|
@@ -319,7 +319,7 @@ export var DefaultRelationManyToOneFormEditWidget = function (_a) {
|
|
|
319
319
|
encodeValuesOnly: true,
|
|
320
320
|
});
|
|
321
321
|
if (!(fixedFilterToBeApplied && !fixedFilterParsed)) return [3 /*break*/, 1];
|
|
322
|
-
showToast(
|
|
322
|
+
dispatch(showToast({ severity: "error", summary: ERROR_MESSAGES.SELECT_RELEVANT_FIELD, detail: ERROR_MESSAGES.FIELD_NOT_SELECT }));
|
|
323
323
|
return [3 /*break*/, 4];
|
|
324
324
|
case 1:
|
|
325
325
|
_m.trys.push([1, , 3, 4]);
|
|
@@ -411,7 +411,7 @@ export var DefaultRelationManyToOneFormEditWidget = function (_a) {
|
|
|
411
411
|
}
|
|
412
412
|
autocompleteQs = qs.stringify(queryData, { encodeValuesOnly: true });
|
|
413
413
|
if (!(fixedFilterToBeApplied && !fixedFilterParsed)) return [3 /*break*/, 1];
|
|
414
|
-
showToast(
|
|
414
|
+
dispatch(showToast({ severity: "error", summary: ERROR_MESSAGES.SELECT_RELEVANT_FIELD, detail: ERROR_MESSAGES.FIELD_NOT_SELECT }));
|
|
415
415
|
return [3 /*break*/, 4];
|
|
416
416
|
case 1:
|
|
417
417
|
_o.trys.push([1, , 3, 4]);
|
|
@@ -449,7 +449,7 @@ export var DefaultRelationManyToOneFormEditWidget = function (_a) {
|
|
|
449
449
|
], false);
|
|
450
450
|
formik.setFieldValue(fieldLayoutInfo.attrs.name, updatedRelationData);
|
|
451
451
|
};
|
|
452
|
-
return (_jsxs("div", { className: "relative", children: [
|
|
452
|
+
return (_jsxs("div", { className: "relative", children: [_jsxs("div", { className: "flex flex-column gap-2 mt-1 sm:mt-2 md:mt-3 lg:mt-4", children: [showFieldLabel != false &&
|
|
453
453
|
_jsxs("label", { htmlFor: fieldLayoutInfo.attrs.name, className: "form-field-label", children: [fieldLabel, fieldMetadata.required && _jsx("span", { className: "text-red-500", children: " *" }), _jsx(SolidFieldTooltip, { fieldContext: fieldContext })] }), _jsxs("div", { className: "flex align-items-center gap-3", children: [_jsx(AutoComplete, __assign({ readOnly: formReadonly || fieldReadonly || readOnlyPermission, disabled: formDisabled || fieldDisabled || readOnlyPermission }, formik.getFieldProps(fieldLayoutInfo.attrs.name), { id: fieldLayoutInfo.attrs.name, field: "solidManyToOneLabel", value: formik.values[fieldLayoutInfo.attrs.name] || '', dropdown: !readOnlyPermission, suggestions: autoCompleteItems, completeMethod: autoCompleteSearch, onChange: function (e) { return fieldContext.onChange(e, 'onFieldChange'); }, onFocus: function (e) { return e.target.select(); }, className: "w-full solid-standard-autocomplete",
|
|
454
454
|
// virtualScrollerOptions={{
|
|
455
455
|
// itemSize: 38,
|
|
@@ -514,7 +514,7 @@ export var DefaultRelationManyToOneFormViewWidget = function (_a) {
|
|
|
514
514
|
export var PseudoRelationManyToOneFormWidget = function (_a) {
|
|
515
515
|
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
|
|
516
516
|
var formik = _a.formik, fieldContext = _a.fieldContext;
|
|
517
|
-
var
|
|
517
|
+
var dispatch = useDispatch();
|
|
518
518
|
var fieldMetadata = fieldContext.fieldMetadata;
|
|
519
519
|
var fieldLayoutInfo = fieldContext.field;
|
|
520
520
|
var className = ((_b = fieldLayoutInfo.attrs) === null || _b === void 0 ? void 0 : _b.className) || 'field col-12';
|
|
@@ -737,7 +737,7 @@ export var PseudoRelationManyToOneFormWidget = function (_a) {
|
|
|
737
737
|
encodeValuesOnly: true,
|
|
738
738
|
});
|
|
739
739
|
if (!(fixedFilterToBeApplied && !fixedFilterParsed)) return [3 /*break*/, 1];
|
|
740
|
-
showToast(
|
|
740
|
+
dispatch(showToast({ severity: "error", summary: ERROR_MESSAGES.SELECT_RELEVANT_FIELD, detail: ERROR_MESSAGES.FIELD_NOT_SELECT }));
|
|
741
741
|
return [3 /*break*/, 4];
|
|
742
742
|
case 1:
|
|
743
743
|
_k.trys.push([1, , 3, 4]);
|
|
@@ -844,7 +844,7 @@ export var PseudoRelationManyToOneFormWidget = function (_a) {
|
|
|
844
844
|
}
|
|
845
845
|
autocompleteQs = qs.stringify(queryData, { encodeValuesOnly: true });
|
|
846
846
|
if (!(fixedFilterToBeApplied && !fixedFilterParsed)) return [3 /*break*/, 1];
|
|
847
|
-
showToast(
|
|
847
|
+
dispatch(showToast({ severity: "error", summary: ERROR_MESSAGES.SELECT_RELEVANT_FIELD, detail: ERROR_MESSAGES.FIELD_NOT_SELECT }));
|
|
848
848
|
return [3 /*break*/, 4];
|
|
849
849
|
case 1:
|
|
850
850
|
_l.trys.push([1, , 3, 4]);
|
|
@@ -884,7 +884,7 @@ export var PseudoRelationManyToOneFormWidget = function (_a) {
|
|
|
884
884
|
], false);
|
|
885
885
|
formik.setFieldValue(fieldLayoutInfo.attrs.name, updatedRelationData);
|
|
886
886
|
};
|
|
887
|
-
return (_jsxs("div", { className: "relative", children: [
|
|
887
|
+
return (_jsxs("div", { className: "relative", children: [_jsxs("div", { className: "flex flex-column gap-2 mt-1 sm:mt-2 md:mt-3 lg:mt-4", children: [showFieldLabel != false &&
|
|
888
888
|
_jsxs("label", { htmlFor: fieldLayoutInfo.attrs.name, className: "form-field-label", children: [fieldLabel, fieldMetadata.required && _jsx("span", { className: "text-red-500", children: " * " }), _jsx(SolidFieldTooltip, { fieldContext: fieldContext })] }), _jsxs("div", { className: "flex align-items-center gap-3", children: [_jsx(AutoComplete, __assign({ readOnly: formReadonly || fieldReadonly || readOnlyPermission, disabled: formDisabled || fieldDisabled || readOnlyPermission || viewMode === "view", field: "solidManyToOneLabel" }, formik.getFieldProps(fieldLayoutInfo.attrs.name), { id: fieldLayoutInfo.attrs.name, value: resolvedValue || null, dropdown: !readOnlyPermission, suggestions: autoCompleteItems, completeMethod: autoCompleteSearch, onChange: function (e) { return fieldContext.onChange(e, 'onFieldChange'); }, onFocus: function (e) { return e.target.select(); }, className: "w-full solid-standard-autocomplete",
|
|
889
889
|
// virtualScrollerOptions={{
|
|
890
890
|
// itemSize: 38,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidRelationManyToOneField.js","sourceRoot":"","sources":["../../../../../../src/components/core/form/fields/relations/SolidRelationManyToOneField.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,YAAY,EAA6B,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAE3B,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,aAAa,MAAM,mDAAmD,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAExE,OAAO,SAAS,MAAM,kCAAkC,CAAC;AACzD,uDAAuD;AACvD,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kDAAkD,CAAC;AAY7F;IAII,qCAAY,YAA6B;QAFjC;;;;;WAA8B;QAGlC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;;;;;eAED;;YAEI,IAAM,kBAAkB,GAAG,MAAA,IAAI,CAAC,YAAY,0CAAE,IAAI,CAAC,MAAA,MAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,KAAK,0CAAE,KAAK,0CAAE,IAAI,CAAC,CAAC;YAC1F,IAAM,aAAa,GAAG,MAAA,IAAI,CAAC,YAAY,0CAAE,aAAa,CAAC;YACvD,IAAM,YAAY,GAAG,MAAA,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,aAAa,0CAAE,YAAY,0CAAE,IAAI,CAAC;YACtE,IAAM,eAAe,GAAG,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnF,IAAI,eAAe,EAAE;gBACjB,kBAAS,mBAAmB,EAAE,eAAe,IAAI,EAAE,EAAE,mBAAmB,EAAE,CAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,EAAE,KAAI,EAAE,IAAK,kBAAkB,EAAG;aACnI;YACD,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;gBAC9B,IAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;gBACpE,IAAI,gBAAgB,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE;oBACpD,IAAA,KAAoB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAxE,GAAG,QAAA,EAAE,KAAK,QAA8D,CAAC;oBAChF,IAAI,GAAG,IAAI,KAAK,KAAK,SAAS,EAAE;wBAC5B,OAAO,EAAE,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC;qBAC7G;iBACJ;aACJ;YACD,OAAO,EAAE,CAAA;QACb,CAAC;;;;;;eAED,UAAe,KAAU,EAAE,QAAkB;YACzC,IAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAChD,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,mBAAmB,EAAE;gBAC5B,QAAQ,CAAC,MAAM,CAAC,UAAG,eAAe,CAAC,KAAK,CAAC,IAAI,OAAI,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;aACjF;QACL,CAAC;;;;;;eAED;;YACI,IAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YACtD,IAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAChD,IAAM,UAAU,GAAG,MAAA,eAAe,CAAC,KAAK,CAAC,KAAK,mCAAI,aAAa,CAAC,WAAW,CAAC;YAE5E,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;YACzB,uCAAuC;YACvC,IAAI,aAAa,CAAC,QAAQ,EAAE;gBACxB,MAAM,GAAG,MAAM,CAAC,IAAI,CAChB,cAAc,CAAC,iBAAiB,EAChC,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC,EACzC,UAAU,KAAU;oBAChB,sBAAsB;oBACtB,IAAI,CAAC,KAAK;wBAAE,OAAO,KAAK,CAAC;oBAEzB,kEAAkE;oBAClE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAK,KAAa,CAAC,mBAAmB,EAAE;wBACnF,OAAO,IAAI,CAAC;qBACf;oBAED,mFAAmF;oBACnF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;wBAC3B,OAAO,KAAK,CAAC;qBAChB;oBAED,OAAO,KAAK,CAAC;gBACjB,CAAC,CACJ,CAAC;aACL;YAED,2CAA2C;YAC3C,MAAM,GAAG,MAAM,CAAC,IAAI,CAChB,cAAc,CAAC,kBAAkB,EACjC,cAAc,CAAC,0BAA0B,CAAC,UAAU,CAAC,EACrD,UAAU,KAAU;gBAChB,wCAAwC;gBACxC,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,KAAK,EAAE,CAAC,EAAE;oBACrD,OAAO,IAAI,CAAC;iBACf;gBAED,qEAAqE;gBACrE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAK,KAAa,CAAC,mBAAmB,EAAE;oBACnF,OAAO,IAAI,CAAC;iBACf;gBAED,gEAAgE;gBAChE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAClD,OAAO,KAAK,CAAC;iBAChB;gBAED,qCAAqC;gBACrC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC;YACnC,CAAC,CACJ,CAAC;YAEF,OAAO,MAAM,CAAC;QAClB,CAAC;;;;;;eAGD,UAAO,MAAoB;;YACvB,IAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YACtD,IAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAChD,IAAM,gBAAgB,GAAG,UAAC,MAAW,EAAE,SAAiB,IAAK,OAAA,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAArD,CAAqD,CAAC;YACnH,IAAM,SAAS,GAAG,CAAA,MAAA,eAAe,CAAC,KAAK,0CAAE,SAAS,KAAI,cAAc,CAAC;YAErE,IAAI,SAAS,GAAG,CAAA,MAAA,eAAe,CAAC,KAAK,0CAAE,OAAO,KAAI,IAAI,CAAC;YACvD,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,KAAK,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE;gBAClG,SAAS,GAAG,KAAK,CAAC;aACrB;YAED,uIAAuI;YAEvI,IAAI,CAAC,SAAS,EAAE;gBACZ,OAAO,IAAI,CAAC;aACf;YAED,IAAI,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC;YAClD,IAAI,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC;YAClD,IAAI,CAAC,UAAU,EAAE;gBACb,UAAU,GAAG,wCAAwC,CAAC;aACzD;YACD,IAAI,CAAC,UAAU,EAAE;gBACb,UAAU,GAAG,wCAAwC,CAAC;aACzD;YACD,IAAM,QAAQ,GAAW,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;YACpD,OAAO,CACH,4BACI,eAAK,SAAS,EAAE,SAAS,aACpB,QAAQ,KAAK,MAAM,IAAI,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,MAAM,CAAC,EACzE,QAAQ,KAAK,MAAM,IAAI,CAAC,4BAAG,UAAU,IAAI,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,MAAM,CAAC,GAAI,CAAC,IAC/F,GACP,CACN,CAAC;QACN,CAAC;;;;;;eAED,UAA0B,MAAc,EAAE,MAAoB;YAC1D,IAAI,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAClD,IAAM,WAAW,GAA8B;gBAC3C,MAAM,EAAE,MAAM;gBACd,YAAY,EAAE,IAAI,CAAC,YAAY;aAClC,CAAA;YACD,OAAO,CACH,4BACK,aAAa,IAAI,KAAC,aAAa,eAAK,WAAW,EAAI,GACrD,CACN,CAAA;QACL,CAAC;;IACL,kCAAC;AAAD,CAAC,AA/ID,IA+IC;;AAED,MAAM,CAAC,IAAM,sCAAsC,GAAG,UAAC,EAAmD;;QAAjD,MAAM,YAAA,EAAE,YAAY,kBAAA;IACzE,IAAM,KAAK,GAAG,MAAM,CAAQ,IAAI,CAAC,CAAC;IAElC,IAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;IACjD,IAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC;IAC3C,IAAM,SAAS,GAAG,CAAA,MAAA,eAAe,CAAC,KAAK,0CAAE,SAAS,KAAI,cAAc,CAAC;IACrE,IAAM,UAAU,GAAG,MAAA,eAAe,CAAC,KAAK,CAAC,KAAK,mCAAI,aAAa,CAAC,WAAW,CAAC;IAC5E,IAAM,qBAAqB,GAAG,YAAY,CAAC,qBAAqB,CAAC;IACjE,IAAM,cAAc,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,SAAS,CAAC;IACzD,IAAM,kBAAkB,GAAG,YAAY,CAAC,QAAQ,CAAC;IAC3C,IAAA,KAAgE,QAAQ,CAAC,KAAK,CAAC,EAA9E,2BAA2B,QAAA,EAAE,8BAA8B,QAAmB,CAAC;IAChF,IAAA,KAAsC,QAAQ,EAAkB,EAA/D,cAAc,QAAA,EAAE,iBAAiB,QAA8B,CAAA;IACtE,gCAAgC;IAChC,IAAM,SAAS,GAAG,oBAAoB,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC;IAC1E,IAAA,4BAA4B,GAAK,SAAS,6BAAd,CAAe;IAC5C,IAAA,uBAAuB,GAAI,4BAA4B,EAAE,GAAlC,CAAmC;IAEjE,IAAM,aAAa,GAAG,MAAA,eAAe,CAAC,KAAK,0CAAE,QAAQ,CAAC;IACtD,IAAM,aAAa,GAAG,MAAA,eAAe,CAAC,KAAK,0CAAE,QAAQ,CAAC;IAEtD,IAAM,YAAY,GAAG,MAAA,MAAA,MAAA,qBAAqB,CAAC,IAAI,CAAC,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,QAAQ,CAAC;IACnF,IAAM,YAAY,GAAG,MAAA,MAAA,MAAA,qBAAqB,CAAC,IAAI,CAAC,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,QAAQ,CAAC;IACnF,IAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC;IAEhD,IAAA,KAA4C,QAAQ,CAAQ,EAAE,CAAC,EAA9D,iBAAiB,QAAA,EAAE,oBAAoB,QAAuB,CAAC;IAChE,IAAA,KAAsB,QAAQ,CAAC,CAAC,CAAC,EAAhC,MAAM,QAAA,EAAE,SAAS,QAAe,CAAC;IAClC,IAAA,KAAwB,QAAQ,CAAC,IAAI,CAAC,EAArC,OAAO,QAAA,EAAE,UAAU,QAAkB,CAAC;IACvC,IAAA,KAAkC,QAAQ,CAAC,EAAE,CAAC,EAA7C,YAAY,QAAA,EAAE,eAAe,QAAgB,CAAC;IACrD,IAAM,KAAK,GAAG,EAAE,CAAC;IACX,IAAA,KAAwB,QAAQ,CAAC,KAAK,CAAC,EAAtC,OAAO,QAAA,EAAE,UAAU,QAAmB,CAAC;IAE9C,SAAS,CAAC;;QACN,IAAM,cAAc,GAAmB;YACnC,UAAU,EAAE,YAAY,CAAC,aAAa,CAAC,uBAAuB;YAC9D,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,aAAa,CAAC,2BAA2B,CAAC;YAC5E,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,IAAI;YACb,oBAAoB,EAAE,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,oBAAoB;YAClE,MAAM,EAAE,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,kBAAkB;SACrD,CAAA;QACD,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,IAAM,kBAAkB,GAAG,UAAO,KAAgC;;;;;;;oBAC9D,SAAS,CAAC,CAAC,CAAC,CAAC;oBACb,eAAe,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;oBACnC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAEX,SAAS,GAAG;wBACd,MAAM,EAAE,CAAC;wBACT,KAAK,EAAE,KAAK;wBACZ,OAAO,EAAE;4BACL,IAAI,EAAE;;oCAEE,GAAC,MAAA,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,aAAa,0CAAE,YAAY,0CAAE,IAAI;wCAC7C,GAAC,CAAA,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,qBAAqB,KAAI,YAAY,IAAG,KAAK,CAAC,KAAK;2CAC/E;;6BAER;yBACJ;qBACJ,CAAC;oBACE,sBAAsB,GAAG,KAAK,CAAC;oBAC/B,iBAAiB,GAAG,KAAK,CAAC;oBAC9B,IAAI,CAAA,MAAA,MAAA,MAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,IAAI,0CAAE,SAAS,0CAAE,KAAK,0CAAE,YAAY,MAAK,cAAc,IAAI,YAAY,CAAC,aAAa,CAAC,2BAA2B,KAAK,gBAAgB,EAAE;wBAC/J,sBAAsB,GAAG,IAAI,CAAC;qBACjC;oBACD,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,wBAAwB,MAAI,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,WAAW,CAAA,EAAE;wBAC1E,oBAAoB,GAAG,CAAA,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,WAAW,EAAC,CAAC,CAAC,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,WAAW,CAAC,CAAC,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,wBAAwB,CAAC;wBACjJ,sBAAsB,GAAG,IAAI,CAAC;wBACxB,mBAAmB,GAAG,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;wBAC/D,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBAGtD,YAAY,SAAA,CAAC;wBACjB,IAAI;4BACA,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;4BACpC,OAAO,GAAG,UAAC,GAAQ;gCACrB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;oCAAE,OAAO,KAAK,CAAC;gCAElD,sCAAsC;gCACtC,IAAM,aAAa,GAAG,UAAC,GAAQ;oCAC3B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;wCAAE,OAAO,KAAK,CAAC;oCAClE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;wCACzB,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;qCACjD;oCACD,OAAO,IAAI,CAAC;gCAChB,CAAC,CAAC;gCAEF,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;4BAC9B,CAAC,CAAC;4BAEF,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;gCACvB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gCAC1C,iBAAiB,GAAG,IAAI,CAAC;6BAC5B;iCAAM;gCACH,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,2BAA2B,EAAE,YAAY,CAAC,CAAC;6BAC1E;yBACJ;wBAAC,OAAO,CAAC,EAAE;4BACR,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,wBAAwB,EAAE,cAAc,CAAC,CAAC;4BACvE,YAAY,GAAG,EAAE,CAAC,CAAC,oCAAoC;yBAC1D;qBAEJ;oBAEG,cAAc,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;wBACzC,gBAAgB,EAAE,IAAI;qBACzB,CAAC,CAAC;yBAMC,CAAA,sBAAsB,IAAI,CAAC,iBAAiB,CAAA,EAA5C,wBAA4C;oBAC5C,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,qBAAqB,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;;;;oBAI7F,UAAU,CAAC,IAAI,CAAC,CAAC;oBAEY,qBAAM,uBAAuB,CAAC,cAAc,CAAC,EAAA;;oBAApE,oBAAoB,GAAG,SAA6C;oBAGpE,gBAAgB,GAAG,oBAAoB,CAAC,IAAI,CAAC;oBAEnD,IAAI,gBAAgB,EAAE;wBACZ,sBAAoB,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,IAAS;;4BAC7D,kBACI,mBAAmB,EAAE,IAAI,CAAC,MAAA,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,aAAa,0CAAE,YAAY,0CAAE,IAAI,CAAC,EAC3E,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,IAC5B,IAAI,EACV;wBACL,CAAC,CAAC,CAAC;wBACH,oBAAoB,CAAC,mBAAiB,CAAC,CAAC;wBACxC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;wBAC3C,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;qBACzD;;;oBAGD,UAAU,CAAC,KAAK,CAAC,CAAC;;;;;SAK7B,CAAA;IAED,IAAM,UAAU,GAAG,UAAO,KAAsC;;;;;;;oBAC5D,IAAI,CAAC,OAAO,IAAI,OAAO;wBAAE,sBAAO;oBAChC,IAAI,KAAK,CAAC,IAAI,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC;wBAAE,sBAAO,CAAC,mCAAmC;oBAEpF,SAAS,GAAG;wBACd,MAAM,EAAE,MAAM;wBACd,KAAK,EAAE,KAAK;wBACZ,OAAO,EAAE;4BACL,IAAI,EAAE;;oCAEE,GAAC,MAAA,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,aAAa,0CAAE,YAAY,0CAAE,IAAI;wCAC7C,GAAC,CAAA,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,qBAAqB,KAAI,YAAY,IAAG,YAAY;2CAChF;;6BAER;yBACJ;qBACJ,CAAC;oBAEE,sBAAsB,GAAG,KAAK,CAAC;oBAC/B,iBAAiB,GAAG,KAAK,CAAC;oBAC9B,IAAI,CAAA,MAAA,MAAA,MAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,IAAI,0CAAE,SAAS,0CAAE,KAAK,0CAAE,YAAY,MAAK,cAAc,IAAI,YAAY,CAAC,aAAa,CAAC,2BAA2B,KAAK,gBAAgB,EAAE;wBAC/J,sBAAsB,GAAG,IAAI,CAAC;qBACjC;oBACD,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,wBAAwB,MAAI,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,WAAW,CAAA,EAAE;wBAC1E,oBAAoB,GAAG,CAAA,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,WAAW,EAAC,CAAC,CAAC,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,WAAW,CAAC,CAAC,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,wBAAwB,CAAC;wBACjJ,sBAAsB,GAAG,IAAI,CAAC;wBACxB,mBAAmB,GAAG,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;wBAC/D,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBAGtD,YAAY,SAAA,CAAC;wBACjB,IAAI;4BACA,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;4BACpC,OAAO,GAAG,UAAC,GAAQ;gCACrB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;oCAAE,OAAO,KAAK,CAAC;gCAElD,sCAAsC;gCACtC,IAAM,aAAa,GAAG,UAAC,GAAQ;oCAC3B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;wCAAE,OAAO,KAAK,CAAC;oCAClE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;wCACzB,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;qCACjD;oCACD,OAAO,IAAI,CAAC;gCAChB,CAAC,CAAC;gCAEF,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;4BAC9B,CAAC,CAAC;4BAEF,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;gCACvB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gCAC1C,iBAAiB,GAAG,IAAI,CAAC;6BAC5B;iCAAM;gCACH,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,2BAA2B,EAAE,YAAY,CAAC,CAAC;6BAC1E;yBACJ;wBAAC,OAAO,CAAC,EAAE;4BACR,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,wBAAwB,EAAE,cAAc,CAAC,CAAC;4BACvE,YAAY,GAAG,EAAE,CAAC,CAAC,oCAAoC;yBAC1D;qBAEJ;oBAEK,cAAc,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;yBACvE,CAAA,sBAAsB,IAAI,CAAC,iBAAiB,CAAA,EAA5C,wBAA4C;oBAC5C,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,qBAAqB,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;;;;oBAI7F,UAAU,CAAC,IAAI,CAAC,CAAC;oBACA,qBAAM,uBAAuB,CAAC,cAAc,CAAC,EAAA;;oBAAxD,QAAQ,GAAG,SAA6C;oBACxD,YAAU,CAAA,MAAA,QAAQ,CAAC,IAAI,0CAAE,OAAO,KAAI,EAAE,CAAC;oBAC7C,IAAI,SAAO,CAAC,MAAM,GAAG,KAAK;wBAAE,UAAU,CAAC,KAAK,CAAC,CAAC;oBAC9C,oBAAoB,CAAC,UAAA,IAAI,IAAI,uCAAI,IAAI,SAAK,SAAO,CAAC,GAAG,CAAC,UAAC,IAAS;;wBAAK,OAAA,YACjE,mBAAmB,EAAE,IAAI,CAAC,MAAA,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,aAAa,0CAAE,YAAY,0CAAE,IAAI,CAAC,EAC3E,mBAAmB,EAAE,IAAI,CAAC,EAAE,IACzB,IAAI,EACT,CAAA;qBAAA,CAAC,SAJ0B,CAIzB,CAAC,CAAC;oBACN,SAAS,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,GAAG,SAAO,CAAC,MAAM,EAArB,CAAqB,CAAC,CAAC;;;oBAEzC,UAAU,CAAC,KAAK,CAAC,CAAC;;;;;SAG7B,CAAC;IAEF,IAAM,gBAAgB,GAAG,UAAC,MAAW,EAAE,SAAiB,IAAK,OAAA,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAArD,CAAqD,CAAC;IAEnH,IAAM,mBAAmB,GAAG,UAAC,MAAW;;QACpC,IAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5E,IAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,IAAM,mBAAmB,mCAClB,mBAAmB;YACtB;gBACI,mBAAmB,EAAE,UAAU,CAAC,MAAA,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,aAAa,0CAAE,YAAY,0CAAE,IAAI,CAAC;gBACjF,mBAAmB,EAAE,KAAK;gBAC1B,QAAQ,EAAE,UAAU;aACvB;iBACJ,CAAC;QAEF,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IAE1E,CAAC,CAAA;IACD,OAAO,CACH,eAAK,SAAS,EAAC,UAAU,aACrB,KAAC,KAAK,IAAC,GAAG,EAAE,KAAK,GAAI,EACrB,eAAK,SAAS,EAAC,qDAAqD,aAC/D,cAAc,IAAI,KAAK;wBACpB,iBAAO,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAC,kBAAkB,aACnE,UAAU,EACV,aAAa,CAAC,QAAQ,IAAI,eAAM,SAAS,EAAC,cAAc,mBAAU,EACnE,KAAC,iBAAiB,IAAC,YAAY,EAAE,YAAY,GAAI,IAC7C,EAEZ,eAAK,SAAS,EAAC,+BAA+B,aAC1C,KAAC,YAAY,aACT,QAAQ,EAAE,YAAY,IAAI,aAAa,IAAI,kBAAkB,EAC7D,QAAQ,EAAE,YAAY,IAAI,aAAa,IAAI,kBAAkB,IACzD,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IACpD,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,EAC9B,KAAK,EAAC,qBAAqB,EAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EACtD,QAAQ,EAAE,CAAC,kBAAkB,EAC7B,WAAW,EAAE,iBAAiB,EAC9B,cAAc,EAAE,kBAAkB,EAClC,QAAQ,EAAE,UAAC,CAAC,IAAK,OAAA,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,eAAe,CAAC,EAAzC,CAAyC,EAC1D,OAAO,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAjB,CAAiB,EACjC,SAAS,EAAC,oCAAoC;gCAC9C,4BAA4B;gCAC5B,oBAAoB;gCACpB,kBAAkB;gCAClB,iBAAiB;gCACjB,KAAK;gCACL,sBAAsB,EAAE,yBAAyB,CAAC;oCAC9C,WAAW,EAAE,iBAAiB,CAAC,MAAM;oCACrC,IAAI,EAAE,IAAI;oCACV,UAAU,YAAA;iCACb,CAAC,IACJ,EACD,eAAe,CAAC,KAAK,CAAC,YAAY,KAAK,MAAM,IAAI,kBAAkB,KAAK,KAAK,IAAI,cAAc;gCAC5F,KAAC,0BAA0B,IAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,cAAc,EAAE,cAAc,GAA+B,IAE3S,IACJ,EACL,gBAAgB,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CACrD,cAAK,SAAS,EAAC,eAAe,YAC1B,KAAC,OAAO,IAAC,QAAQ,EAAC,OAAO,EAAC,IAAI,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,0CAAE,QAAQ,EAAE,GAAI,GACxF,CACT,IACC,CACT,CAAC;AACN,CAAC,CAAA;AAED,MAAM,CAAC,IAAM,0BAA0B,GAAG,UAAC,EAA+H;;QAA7H,MAAM,YAAA,EAAE,YAAY,kBAAA,EAAE,mBAAmB,yBAAA,EAAE,2BAA2B,iCAAA,EAAE,8BAA8B,oCAAA,EAAE,cAAc,oBAAA;IAC/J,IAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;IACjD,IAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC;IAC3C,IAAM,SAAS,GAAG,CAAA,MAAA,eAAe,CAAC,KAAK,0CAAE,SAAS,KAAI,iEAAiE,CAAC;IACxH,IAAM,UAAU,GAAG,MAAA,eAAe,CAAC,KAAK,CAAC,KAAK,mCAAI,aAAa,CAAC,WAAW,CAAC;IAC5E,IAAM,eAAe,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,eAAe,CAAC;IAChE,IAAM,cAAc,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,cAAc,CAAC;IAC9D,IAAM,eAAe,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,eAAe,CAAC;IAChE,IAAM,cAAc,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,cAAc,CAAC;IAC9D,IAAM,gBAAgB,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,gBAAgB,CAAC;IAGlE,IAAM,MAAM,GAAG;QACX,UAAU,EAAE,cAAc,CAAC,UAAU;QACrC,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC;QAC9C,EAAE,EAAE,cAAc,CAAC,EAAE;QACrB,OAAO,EAAE,cAAc,CAAC,OAAO;QAC/B,oBAAoB,EAAE,cAAc,CAAC,oBAAoB;QACzD,MAAM,EAAE,cAAc,CAAC,MAAM;QAC7B,mBAAmB,EAAE,CAAC,UAAC,MAAW;YAC9B,8BAA8B,CAAC,KAAK,CAAC,CAAC;YACtC,mBAAmB,CAAC,MAAM,CAAC,CAAA;QAC/B,CAAC,CAAC;QACF,gBAAgB,EAAE,CAAC;YACf,8BAA8B,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC;KACL,CAAA;IACD,OAAO,CACH,0BACI,wBACI,KAAC,MAAM,IACH,IAAI,EAAC,YAAY,EACjB,OAAO,QACP,QAAQ,sBACG,QAAQ,EACnB,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,cAAM,OAAA,8BAA8B,CAAC,IAAI,CAAC,EAApC,CAAoC,EACnD,SAAS,EAAC,mBAAmB,GAC/B,GACA,EACN,KAAC,MAAM,IACH,MAAM,EAAC,EAAE,EACT,UAAU,EAAE,KAAK,EACjB,OAAO,EAAE,2BAA2B,EACpC,KAAK,EAAE;oBACH,KAAK,EAAE,MAAA,MAAA,MAAA,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,kBAAkB,0CAAE,KAAK,0CAAE,KAAK,mCAAI,MAAM;oBACzE,MAAM,EAAE,MAAA,MAAA,MAAA,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,kBAAkB,0CAAE,KAAK,0CAAE,MAAM,mCAAI,MAAM;iBAC9E,EACD,MAAM,EAAE;oBACJ,IAAI,CAAC,2BAA2B;wBAAE,OAAO;oBACzC,8BAA8B,CAAC,KAAK,CAAC,CAAC;gBAC1C,CAAC,EACD,SAAS,EAAC,cAAc,EACxB,WAAW,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAGpE,KAAC,aAAa,eAAK,MAAM,EAAI,GAExB,IACP,CACT,CAAA;AACL,CAAC,CAAA;AAGD,MAAM,CAAC,IAAM,sCAAsC,GAAG,UAAC,EAAmD;;QAAjD,MAAM,YAAA,EAAE,YAAY,kBAAA;IAEzE,IAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;IACjD,IAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC;IAC3C,IAAM,UAAU,GAAG,MAAA,eAAe,CAAC,KAAK,CAAC,KAAK,mCAAI,aAAa,CAAC,WAAW,CAAC;IAC5E,IAAM,cAAc,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,SAAS,CAAC;IACzD,IAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,IAAM,YAAY,GAAG,CAAA,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,qBAAqB,EAAC,CAAC,CAAC,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,qBAAqB,CAAC,CAAC,CAAC,MAAA,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,aAAa,0CAAE,YAAY,0CAAE,IAAI,CAAC;IACtK,IAAM,YAAY,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,YAAY,CAAC,CAAC;IAC3C,OAAO,CACH,eAAK,SAAS,EAAC,wBAAwB,aAClC,cAAc,KAAK,KAAK,IAAI,CACzB,YAAG,SAAS,EAAC,kCAAkC,YAAE,UAAU,GAAK,CACnE,EACD,YAAG,SAAS,EAAC,KAAK,YAAE,YAAY,GAAK,IACnC,CACT,CAAC;AACN,CAAC,CAAA;AAMD,MAAM,CAAC,IAAM,iCAAiC,GAAG,UAAC,EAAmD;;QAAjD,MAAM,YAAA,EAAE,YAAY,kBAAA;IACpE,IAAM,KAAK,GAAG,MAAM,CAAQ,IAAI,CAAC,CAAC;IAElC,IAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;IACjD,IAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC;IAC3C,IAAM,SAAS,GAAG,CAAA,MAAA,eAAe,CAAC,KAAK,0CAAE,SAAS,KAAI,cAAc,CAAC;IACrE,IAAM,UAAU,GAAG,MAAA,eAAe,CAAC,KAAK,CAAC,KAAK,mCAAI,aAAa,CAAC,WAAW,CAAC;IAC5E,IAAM,qBAAqB,GAAG,YAAY,CAAC,qBAAqB,CAAC;IACjE,IAAM,cAAc,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,SAAS,CAAC;IACzD,IAAM,kBAAkB,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IAEjF,IAAM,eAAe,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,eAAe,CAAC;IAChE,IAAM,cAAc,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,cAAc,CAAC;IAC9D,IAAM,eAAe,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,eAAe,CAAC;IAChE,IAAM,cAAc,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,cAAc,CAAC;IAC9D,IAAM,gBAAgB,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,gBAAgB,CAAC;IAClE,IAAM,iBAAiB,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,iBAAiB,CAAC;IACpE,IAAM,kBAAkB,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,kBAAkB,CAAC;IAEhE,IAAA,KAAsC,QAAQ,EAAkB,EAA/D,cAAc,QAAA,EAAE,iBAAiB,QAA8B,CAAA;IAEtE,IAAM,QAAQ,GAAW,YAAY,CAAC,QAAQ,CAAC;IAE/C,SAAS,CAAC;;QACN,IAAM,cAAc,GAAmB;YACnC,UAAU,EAAE,gBAAgB;YAC5B,SAAS,EAAE,SAAS,CAAC,eAAe,CAAC;YACrC,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,IAAI;YACb,oBAAoB,EAAE,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,oBAAoB;YAClE,MAAM,EAAE,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,kBAAkB;SACrD,CAAA;QACD,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC,EAAE,EAAE,CAAC,CAAA;IAGA,IAAA,KAAgE,QAAQ,CAAC,KAAK,CAAC,EAA9E,2BAA2B,QAAA,EAAE,8BAA8B,QAAmB,CAAC;IACtF,gCAAgC;IAChC,IAAM,SAAS,GAAG,oBAAoB,CAAC,eAAe,IAAI,kBAAkB,CAAC,CAAC;IACtE,IAAA,4BAA4B,GAAK,SAAS,6BAAd,CAAe;IAC5C,IAAA,uBAAuB,GAAI,4BAA4B,EAAE,GAAlC,CAAmC;IAEjE,IAAM,aAAa,GAAG,MAAA,eAAe,CAAC,KAAK,0CAAE,QAAQ,CAAC;IACtD,IAAM,aAAa,GAAG,MAAA,eAAe,CAAC,KAAK,0CAAE,QAAQ,CAAC;IAEtD,IAAM,YAAY,GAAG,MAAA,MAAA,MAAA,qBAAqB,CAAC,IAAI,CAAC,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,QAAQ,CAAC;IACnF,IAAM,YAAY,GAAG,MAAA,MAAA,MAAA,qBAAqB,CAAC,IAAI,CAAC,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,QAAQ,CAAC;IACnF,IAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC;IAEhD,IAAA,KAA4C,QAAQ,CAAQ,EAAE,CAAC,EAA9D,iBAAiB,QAAA,EAAE,oBAAoB,QAAuB,CAAC;IAChE,IAAA,KAAsB,QAAQ,CAAC,CAAC,CAAC,EAAhC,MAAM,QAAA,EAAE,SAAS,QAAe,CAAC;IAClC,IAAA,KAAwB,QAAQ,CAAC,IAAI,CAAC,EAArC,OAAO,QAAA,EAAE,UAAU,QAAkB,CAAC;IACvC,IAAA,KAAkC,QAAQ,CAAC,EAAE,CAAC,EAA7C,YAAY,QAAA,EAAE,eAAe,QAAgB,CAAC;IACrD,IAAM,KAAK,GAAG,EAAE,CAAC;IACX,IAAA,KAAwB,QAAQ,CAAC,KAAK,CAAC,EAAtC,OAAO,QAAA,EAAE,UAAU,QAAmB,CAAC;IACxC,IAAA,KAA0C,QAAQ,CAAM,IAAI,CAAC,EAA5D,gBAAgB,QAAA,EAAE,mBAAmB,QAAuB,CAAC;IAGpE,SAAS,CAAC;QACN,IAAM,EAAE,GAAG;;;;;;;6BACH,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAA7C,wBAA6C;wBACvC,SAAS,GAAG;4BACd,MAAM,EAAE,CAAC;4BACT,KAAK,EAAE,KAAK;4BACZ,OAAO,EAAE;gCACL,IAAI,EAAE;;wCAEE,GAAC,eAAe;4CACZ,GAAC,CAAA,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,qBAAqB,KAAI,MAAM,IAAG,MAAA,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;+CACxJ;;iCAER;6BACJ;yBACJ,CAAC;wBACE,cAAc,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;4BACzC,gBAAgB,EAAE,IAAI;yBACzB,CAAC,CAAC;wBAC0B,qBAAM,uBAAuB,CAAC,cAAc,CAAC,EAAA;;wBAApE,oBAAoB,GAAG,SAA6C;wBAEpE,gBAAgB,GAAG,oBAAoB,CAAC,IAAI,CAAC;wBACnD,IAAI,gBAAgB,EAAE;4BACZ,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,IAAS;gCAC5D,IAAM,KAAK,GAAG,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAC,KAAU,IAAK,OAAA,IAAI,CAAC,KAAK,CAAC,EAAX,CAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gCACzJ,kBACI,mBAAmB,EAAE,KAAK,EAC1B,mBAAmB,EAAE,IAAI,CAAC,eAAe,CAAC,IACvC,IAAI,EACV;4BACL,CAAC,CAAC,CAAC;4BACH,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;gCAC7B,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;6BACzE;yBACJ;;;;;aAER,CAAA;QACD,EAAE,EAAE,CAAA;IACR,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,sDAAsD;IACtD,SAAS,CAAC;QACN,IAAM,EAAE,GAAG;;;;;;;wBACP,IAAI,QAAQ,KAAK,MAAM,EAAE;4BACrB,mBAAmB,CAAC,IAAI,CAAC,CAAC;4BAC1B,sBAAO;yBACV;wBAEK,QAAQ,GACV,MAAA,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,mCAC7C,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAE9C,IAAI,CAAC,QAAQ;4BAAE,sBAAO;wBAEhB,WAAW,GACb,OAAO,QAAQ,KAAK,QAAQ;4BACxB,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;4BAC3B,CAAC,CAAC,QAAQ,CAAC;wBAEb,SAAS,GAAG;4BACd,MAAM,EAAE,CAAC;4BACT,KAAK,EAAE,CAAC;4BACR,OAAO,EAAE;gCACL,IAAI,EAAE;;wCAEE,GAAC,eAAe;4CACZ,GAAC,CAAA,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,qBAAqB,KAAI,MAAM,IACpD,WAAW;+CAClB;;iCAER;6BACJ;yBACJ,CAAC;wBAEI,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;wBACtD,qBAAM,uBAAuB,CAAC,KAAK,CAAC,EAAA;;wBAA1C,GAAG,GAAG,SAAoC;wBAC1C,MAAM,GAAG,MAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,OAAO,0CAAG,CAAC,CAAC,CAAC;wBACtC,IAAI,CAAC,MAAM;4BAAE,sBAAO;wBAEd,KAAK,GACP,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,MAAM,IAAG,CAAC;4BACzB,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAC,CAAS,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,EAAT,CAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;4BAC7D,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;wBAClC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAA;wBAC/D,mBAAmB,YACf,mBAAmB,EAAE,KAAK,EAC1B,mBAAmB,EAAE,MAAM,CAAC,eAAe,CAAC,IACzC,MAAM,EACX,CAAC;;;;aACN,CAAC;QAEF,EAAE,EAAE,CAAC;IACT,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAG1D,IAAM,aAAa,GAAG,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEzG,IAAM,kBAAkB,GAAG,UAAO,KAAgC;;;;;;;oBAC9D,SAAS,CAAC,CAAC,CAAC,CAAC;oBACb,eAAe,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;oBACnC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAEX,SAAS,GAAG;wBACd,MAAM,EAAE,CAAC;wBACT,KAAK,EAAE,KAAK;wBACZ,OAAO,EAAE;4BACL,IAAI,oBACG,CAAC,CAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,MAAM,IAAG,CAAC;gCAC9B,CAAC,CAAC;oCACE;wCACI,GAAG,EAAE,kBAAkB,CAAC,GAAG,CAAC,UAAC,KAAU;;;4CAAK,OAAA;gDACxC,GAAC,KAAK;oDACF,GAAC,CAAA,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,qBAAqB,KAAI,YAAY,IAC1D,KAAK,CAAC,KAAK;uDAClB;mDACH,CAAA;yCAAA,CAAC;qCACN;iCACJ;gCACD,CAAC,CAAC;;wCAEM,GAAC,eAAe;4CACZ,GAAC,CAAA,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,qBAAqB,KAAI,YAAY,IAC1D,KAAK,CAAC,KAAK;+CAClB;;iCAER,CAAC,OAET;yBACJ;qBACJ,CAAC;oBACE,sBAAsB,GAAG,KAAK,CAAC;oBAC/B,iBAAiB,GAAG,KAAK,CAAC;oBAC9B,IAAI,CAAA,MAAA,MAAA,MAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,IAAI,0CAAE,SAAS,0CAAE,KAAK,0CAAE,YAAY,MAAK,cAAc,IAAI,YAAY,CAAC,aAAa,CAAC,2BAA2B,KAAK,gBAAgB,EAAE;wBAC/J,sBAAsB,GAAG,IAAI,CAAC;qBACjC;oBACD,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,wBAAwB,MAAI,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,WAAW,CAAA,EAAE;wBAC1E,oBAAoB,GAAG,CAAA,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,WAAW,EAAC,CAAC,CAAC,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,WAAW,CAAC,CAAC,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,wBAAwB,CAAC;wBACjJ,sBAAsB,GAAG,IAAI,CAAC;wBACxB,mBAAmB,GAAG,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;wBAC/D,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBAGtD,YAAY,SAAA,CAAC;wBACjB,IAAI;4BACA,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;4BACpC,OAAO,GAAG,UAAC,GAAQ;gCACrB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;oCAAE,OAAO,KAAK,CAAC;gCAElD,sCAAsC;gCACtC,IAAM,aAAa,GAAG,UAAC,GAAQ;oCAC3B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;wCAAE,OAAO,KAAK,CAAC;oCAClE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;wCACzB,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;qCACjD;oCACD,OAAO,IAAI,CAAC;gCAChB,CAAC,CAAC;gCAEF,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;4BAC9B,CAAC,CAAC;4BAEF,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;gCACvB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gCAC1C,iBAAiB,GAAG,IAAI,CAAC;6BAC5B;iCAAM;gCACH,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,2BAA2B,EAAE,YAAY,CAAC,CAAC;6BAC1E;yBACJ;wBAAC,OAAO,CAAC,EAAE;4BACR,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,wBAAwB,EAAE,cAAc,CAAC,CAAC;4BACvE,YAAY,GAAG,EAAE,CAAC,CAAC,oCAAoC;yBAC1D;qBAEJ;oBAEG,cAAc,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;wBACzC,gBAAgB,EAAE,IAAI;qBACzB,CAAC,CAAC;yBAMC,CAAA,sBAAsB,IAAI,CAAC,iBAAiB,CAAA,EAA5C,wBAA4C;oBAC5C,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,qBAAqB,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;;;;oBAI7F,UAAU,CAAC,IAAI,CAAC,CAAC;oBAEY,qBAAM,uBAAuB,CAAC,cAAc,CAAC,EAAA;;oBAApE,oBAAoB,GAAG,SAA6C;oBAGpE,gBAAgB,GAAG,oBAAoB,CAAC,IAAI,CAAC;oBAEnD,IAAI,gBAAgB,EAAE;wBACZ,sBAAoB,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,IAAS;4BAC7D,IAAM,KAAK,GAAG,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAC,KAAU,IAAK,OAAA,IAAI,CAAC,KAAK,CAAC,EAAX,CAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;4BACzJ,kBACI,mBAAmB,EAAE,KAAK,EAC1B,mBAAmB,EAAE,IAAI,CAAC,eAAe,CAAC,IACvC,IAAI,EACV;wBACL,CAAC,CAAC,CAAC;wBACH,+GAA+G;wBAE/G,oBAAoB,CAAC,mBAAiB,CAAC,CAAC;wBACxC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;wBAC3C,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;qBACzD;;;oBAGD,UAAU,CAAC,KAAK,CAAC,CAAC;;;;;SAG7B,CAAA;IAED,IAAM,UAAU,GAAG,UAAO,KAAsC;;;;;;;oBAC5D,IAAI,CAAC,OAAO,IAAI,OAAO;wBAAE,sBAAO;oBAChC,IAAI,KAAK,CAAC,IAAI,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC;wBAAE,sBAAO,CAAC,mCAAmC;oBAEpF,SAAS,GAAG;wBACd,MAAM,EAAE,MAAM;wBACd,KAAK,EAAE,KAAK;wBACZ,OAAO,EAAE;4BACL,IAAI,oBACG,CAAC,CAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,MAAM,IAAG,CAAC;gCAC9B,CAAC,CAAC;oCACE;wCACI,GAAG,EAAE,kBAAkB,CAAC,GAAG,CAAC,UAAC,KAAU;;;4CAAK,OAAA;gDACxC,GAAC,KAAK;oDACF,GAAC,CAAA,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,qBAAqB,KAAI,YAAY,IAC1D,YAAY;uDACnB;mDACH,CAAA;yCAAA,CAAC;qCACN;iCACJ;gCACD,CAAC,CAAC;;wCAEM,GAAC,eAAe;4CACZ,GAAC,CAAA,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,qBAAqB,KAAI,YAAY,IAC1D,YAAY;+CACnB;;iCAER,CAAC,OAET;yBACJ;qBACJ,CAAC;oBAEE,sBAAsB,GAAG,KAAK,CAAC;oBAC/B,iBAAiB,GAAG,KAAK,CAAC;oBAC9B,IAAI,CAAA,MAAA,MAAA,MAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,IAAI,0CAAE,SAAS,0CAAE,KAAK,0CAAE,YAAY,MAAK,cAAc,IAAI,YAAY,CAAC,aAAa,CAAC,2BAA2B,KAAK,gBAAgB,EAAE;wBAC/J,sBAAsB,GAAG,IAAI,CAAC;qBACjC;oBACD,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,wBAAwB,MAAI,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,WAAW,CAAA,EAAE;wBAC1E,oBAAoB,GAAG,CAAA,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,WAAW,EAAC,CAAC,CAAC,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,WAAW,CAAC,CAAC,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,wBAAwB,CAAC;wBACjJ,sBAAsB,GAAG,IAAI,CAAC;wBACxB,mBAAmB,GAAG,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;wBAC/D,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBAGtD,YAAY,SAAA,CAAC;wBACjB,IAAI;4BACA,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;4BACpC,OAAO,GAAG,UAAC,GAAQ;gCACrB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;oCAAE,OAAO,KAAK,CAAC;gCAElD,sCAAsC;gCACtC,IAAM,aAAa,GAAG,UAAC,GAAQ;oCAC3B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;wCAAE,OAAO,KAAK,CAAC;oCAClE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;wCACzB,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;qCACjD;oCACD,OAAO,IAAI,CAAC;gCAChB,CAAC,CAAC;gCAEF,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;4BAC9B,CAAC,CAAC;4BAEF,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;gCACvB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gCAC1C,iBAAiB,GAAG,IAAI,CAAC;6BAC5B;iCAAM;gCACH,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,2BAA2B,EAAE,YAAY,CAAC,CAAC;6BAC1E;yBACJ;wBAAC,OAAO,CAAC,EAAE;4BACR,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,wBAAwB,EAAE,cAAc,CAAC,CAAC;4BACvE,YAAY,GAAG,EAAE,CAAC,CAAC,oCAAoC;yBAC1D;qBAEJ;oBAEK,cAAc,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;yBACvE,CAAA,sBAAsB,IAAI,CAAC,iBAAiB,CAAA,EAA5C,wBAA4C;oBAC5C,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,qBAAqB,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;;;;oBAI7F,UAAU,CAAC,IAAI,CAAC,CAAC;oBACA,qBAAM,uBAAuB,CAAC,cAAc,CAAC,EAAA;;oBAAxD,QAAQ,GAAG,SAA6C;oBACxD,YAAU,CAAA,MAAA,QAAQ,CAAC,IAAI,0CAAE,OAAO,KAAI,EAAE,CAAC;oBAC7C,IAAI,SAAO,CAAC,MAAM,GAAG,KAAK;wBAAE,UAAU,CAAC,KAAK,CAAC,CAAC;oBAC9C,oBAAoB,CAAC,UAAC,IAAS,IAAK,uCAAI,IAAI,SAAK,SAAO,CAAC,GAAG,CAAC,UAAC,IAAS;wBACnE,IAAM,KAAK,GAAG,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAC,KAAU,IAAK,OAAA,IAAI,CAAC,KAAK,CAAC,EAAX,CAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;wBACzJ,kBACI,mBAAmB,EAAE,KAAK,EAC1B,mBAAmB,EAAE,IAAI,CAAC,eAAe,CAAC,IACvC,IAAI,EACV;oBACL,CAAC,CACA,SARmC,CAQlC,CAAC,CAAC;oBACJ,SAAS,CAAC,UAAC,IAAS,IAAK,OAAA,IAAI,GAAG,SAAO,CAAC,MAAM,EAArB,CAAqB,CAAC,CAAC;;;oBAEhD,UAAU,CAAC,KAAK,CAAC,CAAC;;;;;SAG7B,CAAC;IAEF,IAAM,gBAAgB,GAAG,UAAC,MAAW,EAAE,SAAiB,IAAK,OAAA,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAArD,CAAqD,CAAC;IAEnH,IAAM,mBAAmB,GAAG,UAAC,MAAW;QACpC,IAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5E,IAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QACtC,IAAM,KAAK,GAAG,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAC,KAAU,IAAK,OAAA,UAAU,CAAC,KAAK,CAAC,EAAjB,CAAiB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QAErK,IAAM,mBAAmB,mCAClB,mBAAmB;YACtB,8BAA8B;YAC9B;gBACI,mBAAmB,EAAE,KAAK;gBAC1B,mBAAmB,EAAE,KAAK;gBAC1B,QAAQ,EAAE,UAAU;aACvB;iBACJ,CAAC;QAEF,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IAE1E,CAAC,CAAA;IACD,OAAO,CACH,eAAK,SAAS,EAAC,UAAU,aACrB,KAAC,KAAK,IAAC,GAAG,EAAE,KAAK,GAAI,EACrB,eAAM,SAAS,EAAC,qDAAqD,aAChE,cAAc,IAAI,KAAK;wBACpB,iBAAO,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAC,kBAAkB,aACnE,UAAU,EACV,aAAa,CAAC,QAAQ,IAAI,eAAM,SAAS,EAAC,cAAc,oBAAY,EACrE,KAAC,iBAAiB,IAAC,YAAY,EAAE,YAAY,GAAI,IAC7C,EAEZ,eAAK,SAAS,EAAC,+BAA+B,aAC1C,KAAC,YAAY,aACT,QAAQ,EAAE,YAAY,IAAI,aAAa,IAAI,kBAAkB,EAC7D,QAAQ,EAAE,YAAY,IAAI,aAAa,IAAI,kBAAkB,IAAI,QAAQ,KAAK,MAAM,EACpF,KAAK,EAAC,qBAAqB,IACvB,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IACpD,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,EAC9B,KAAK,EAAE,aAAa,IAAI,IAAI,EAC5B,QAAQ,EAAE,CAAC,kBAAkB,EAC7B,WAAW,EAAE,iBAAiB,EAC9B,cAAc,EAAE,kBAAkB,EAClC,QAAQ,EAAE,UAAC,CAAC,IAAK,OAAA,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,eAAe,CAAC,EAAzC,CAAyC,EAC1D,OAAO,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAjB,CAAiB,EACjC,SAAS,EAAC,oCAAoC;gCAC9C,4BAA4B;gCAC5B,oBAAoB;gCACpB,kBAAkB;gCAClB,iBAAiB;gCACjB,KAAK;gCACL,sBAAsB,EAAE,yBAAyB,CAAC;oCAC9C,WAAW,EAAE,iBAAiB,CAAC,MAAM;oCACrC,IAAI,EAAE,IAAI;oCACV,UAAU,YAAA;iCACb,CAAC,IACJ,EAEE,eAAe,CAAC,KAAK,CAAC,YAAY,KAAK,MAAM,IAAI,kBAAkB,KAAK,KAAK,IAAI,cAAc,IAAI,QAAQ,KAAK,MAAM;gCACtH,KAAC,0BAA0B,IAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,cAAc,EAAE,cAAc,kBAAiC,IAE7S,IACJ,EAEF,gBAAgB,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CACpD,cAAK,SAAS,EAAC,eAAe,YAC1B,KAAC,OAAO,IAAC,QAAQ,EAAC,OAAO,EAAC,IAAI,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,0CAAE,QAAQ,EAAE,GAAI,GACxF,CACT,IAEH,CACT,CAAC;AACN,CAAC,CAAA","sourcesContent":["\nimport { createSolidEntityApi } from \"../../../../../redux/api/solidEntityApi\";\nimport { AutoComplete, AutoCompleteCompleteEvent } from \"primereact/autocomplete\";\nimport { Message } from \"primereact/message\";\nimport qs from \"qs\";\nimport { useEffect, useRef, useState } from \"react\";\nimport * as Yup from 'yup';\nimport { FormikObject, ISolidField, SolidFieldProps } from \"../ISolidField\";\nimport { camelCase } from \"lodash\";\nimport { Button } from \"primereact/button\";\nimport { Dialog } from \"primereact/dialog\";\nimport SolidFormView from '../../../../../components/core/form/SolidFormView';\nimport { getExtensionComponent } from \"../../../../../helpers/registry\";\nimport { SolidFormFieldWidgetProps } from \"../../../../../types/solid-core\";\nimport showToast from \"../../../../../helpers/showToast\";\n// import Handlebars from \"handlebars/dist/handlebars\";\nimport * as Handlebars from \"handlebars\";\nimport { Toast } from \"primereact/toast\";\nimport { SolidFieldTooltip } from \"../../../../../components/common/SolidFieldTooltip\";\nimport { ERROR_MESSAGES } from \"../../../../../constants/error-messages\";\nimport { getVirtualScrollerOptions } from \"../../../../../helpers/autoCompleteVirtualScroll\";\n\n\nexport type FormViewParams = {\n moduleName: any;\n modelName: any;\n id: any;\n embeded: any;\n inlineCreateAutoSave: any;\n layout: any;\n}\n\nexport class SolidRelationManyToOneField implements ISolidField {\n\n private fieldContext: SolidFieldProps;\n\n constructor(fieldContext: SolidFieldProps) {\n this.fieldContext = fieldContext;\n }\n\n initialValue(): any {\n\n const manyToOneFieldData = this.fieldContext?.data[this.fieldContext?.field?.attrs?.name];\n const fieldMetadata = this.fieldContext?.fieldMetadata;\n const userKeyField = fieldMetadata?.relationModel?.userKeyField?.name;\n const manyToOneColVal = manyToOneFieldData ? manyToOneFieldData[userKeyField] : '';\n if (manyToOneColVal) {\n return { solidManyToOneLabel: manyToOneColVal || '', solidManyToOneValue: manyToOneFieldData?.id || '', ...manyToOneFieldData };\n }\n if (this.fieldContext.parentData) {\n const parentDataForKey = this.fieldContext.parentData[userKeyField];\n if (parentDataForKey && typeof parentDataForKey === 'object') {\n const [key, value]: any = Object.entries(this.fieldContext.parentData)[0] || [];\n if (key && value !== undefined) {\n return { solidManyToOneLabel: value.solidManyToOneLabel, solidManyToOneValue: value.solidManyToOneValue };\n }\n }\n }\n return {}\n }\n\n updateFormData(value: any, formData: FormData): any {\n const fieldLayoutInfo = this.fieldContext.field;\n if (value?.solidManyToOneValue) {\n formData.append(`${fieldLayoutInfo.attrs.name}Id`, value.solidManyToOneValue);\n }\n }\n\n validationSchema(): Yup.Schema {\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n\n let schema = Yup.mixed();\n // Custom validation for relation field\n if (fieldMetadata.required) {\n schema = schema.test(\n ERROR_MESSAGES.REQUIRED_REALTION,\n ERROR_MESSAGES.FIELD_REUQIRED(fieldLabel),\n function (value: any) {\n // Handle empty values\n if (!value) return false;\n\n // If it's an object with solidManyToOneValue, check if it's valid\n if (typeof value === 'object' && value !== null && (value as any).solidManyToOneValue) {\n return true;\n }\n\n // If it's a string (user typed but didn't select), it's invalid for required field\n if (typeof value === 'string') {\n return false;\n }\n\n return false;\n }\n );\n }\n\n // Add validation to ensure valid selection\n schema = schema.test(\n ERROR_MESSAGES.VALIDATE_SELECTION,\n ERROR_MESSAGES.SELECT_VALID_FROM_DROPDOWN(fieldLabel),\n function (value: any) {\n // If not required and empty, it's valid\n if (!fieldMetadata.required && (!value || value === '')) {\n return true;\n }\n\n // If it's an object with solidManyToOneValue, it's a valid selection\n if (typeof value === 'object' && value !== null && (value as any).solidManyToOneValue) {\n return true;\n }\n\n // If it's a string (user typed but didn't select), it's invalid\n if (typeof value === 'string' && value.trim() !== '') {\n return false;\n }\n\n // Empty value for non-required field\n return !fieldMetadata.required;\n }\n );\n\n return schema;\n }\n\n\n render(formik: FormikObject) {\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n\n let isVisible = fieldLayoutInfo.attrs?.visible || true;\n if (this.fieldContext.parentData && this.fieldContext.parentFieldName === fieldLayoutInfo.attrs.name) {\n isVisible = false;\n }\n\n // const isVisible = this.fieldContext.parentData ? fieldLayoutInfo.attrs?.visible === true : fieldLayoutInfo.attrs?.visible !== false;\n\n if (!isVisible) {\n return null;\n }\n\n let viewWidget = fieldLayoutInfo.attrs.viewWidget;\n let editWidget = fieldLayoutInfo.attrs.editWidget;\n if (!editWidget) {\n editWidget = 'DefaultRelationManyToOneFormEditWidget';\n }\n if (!viewWidget) {\n viewWidget = 'DefaultRelationManyToOneFormViewWidget';\n }\n const viewMode: string = this.fieldContext.viewMode;\n return (\n <>\n <div className={className}>\n {viewMode === \"view\" && this.renderExtensionRenderMode(viewWidget, formik)}\n {viewMode === \"edit\" && (<>{editWidget && this.renderExtensionRenderMode(editWidget, formik)}</>)}\n </div>\n </>\n );\n }\n\n renderExtensionRenderMode(widget: string, formik: FormikObject) {\n let DynamicWidget = getExtensionComponent(widget);\n const widgetProps: SolidFormFieldWidgetProps = {\n formik: formik,\n fieldContext: this.fieldContext,\n }\n return (\n <>\n {DynamicWidget && <DynamicWidget {...widgetProps} />}\n </>\n )\n }\n}\n\nexport const DefaultRelationManyToOneFormEditWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {\n const toast = useRef<Toast>(null);\n\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const solidFormViewMetaData = fieldContext.solidFormViewMetaData;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const readOnlyPermission = fieldContext.readOnly;\n const [visibleCreateRelationEntity, setvisibleCreateRelationEntity] = useState(false);\n const [formViewParams, setformViewParams] = useState<FormViewParams>()\n // auto complete specific code. \n const entityApi = createSolidEntityApi(fieldMetadata.relationCoModelSingularName);\n const { useLazyGetSolidEntitiesQuery } = entityApi;\n const [triggerGetSolidEntities] = useLazyGetSolidEntitiesQuery();\n\n const fieldDisabled = fieldLayoutInfo.attrs?.disabled;\n const fieldReadonly = fieldLayoutInfo.attrs?.readonly;\n\n const formDisabled = solidFormViewMetaData.data.solidView?.layout?.attrs?.disabled;\n const formReadonly = solidFormViewMetaData.data.solidView?.layout?.attrs?.readonly;\n const whereClause = fieldLayoutInfo.attrs.whereClause;\n\n const [autoCompleteItems, setAutoCompleteItems] = useState<any[]>([]);\n const [offset, setOffset] = useState(0);\n const [hasMore, setHasMore] = useState(true);\n const [currentQuery, setCurrentQuery] = useState(\"\");\n const LIMIT = 50;\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n const formviewparams: FormViewParams = {\n moduleName: fieldContext.fieldMetadata.relationModelModuleName,\n modelName: camelCase(fieldContext.fieldMetadata.relationCoModelSingularName),\n id: \"new\",\n embeded: true,\n inlineCreateAutoSave: fieldLayoutInfo?.attrs?.inlineCreateAutoSave,\n layout: fieldLayoutInfo?.attrs?.inlineCreateLayout\n }\n setformViewParams(formviewparams);\n }, [])\n\n const autoCompleteSearch = async (event: AutoCompleteCompleteEvent) => {\n setOffset(0);\n setCurrentQuery(event.query || \"\");\n setHasMore(true);\n // Get the list view layout & metadata first. \n const queryData = {\n offset: 0,\n limit: LIMIT,\n filters: {\n $and: [\n {\n [fieldMetadata?.relationModel?.userKeyField?.name]: {\n [fieldLayoutInfo?.attrs?.autocompleteMatchMode || '$containsi']: event.query\n }\n }\n ]\n }\n };\n let fixedFilterToBeApplied = false;\n let fixedFilterParsed = false;\n if (solidFormViewMetaData?.data?.solidView?.model?.singularName === \"listOfValues\" && fieldContext.fieldMetadata.relationCoModelSingularName !== \"moduleMetadata\") {\n fixedFilterToBeApplied = true;\n }\n if (fieldMetadata?.relationFieldFixedFilter || fieldLayoutInfo?.attrs?.whereClause) {\n const convertedFixedFilter = fieldLayoutInfo?.attrs?.whereClause ? fieldLayoutInfo?.attrs?.whereClause : fieldMetadata?.relationFieldFixedFilter;\n fixedFilterToBeApplied = true;\n const fixedFilterTemplate = Handlebars.compile(convertedFixedFilter);\n const renderedFilter = fixedFilterTemplate(formik.values);\n\n // Parse the result into a JS object\n let parsedFilter;\n try {\n parsedFilter = JSON.parse(renderedFilter);\n const isValid = (obj: any): boolean => {\n if (!obj || typeof obj !== 'object') return false;\n\n // Recursively check all nested values\n const hasValidValue = (val: any): boolean => {\n if (val === null || val === undefined || val === '') return false;\n if (typeof val === 'object') {\n return Object.values(val).some(hasValidValue);\n }\n return true;\n };\n\n return hasValidValue(obj);\n };\n\n if (isValid(parsedFilter)) {\n queryData.filters.$and.push(parsedFilter);\n fixedFilterParsed = true;\n } else {\n console.warn(ERROR_MESSAGES.SKIPPING_EMPTY_FIXED_FILTER, parsedFilter);\n }\n } catch (e) {\n console.error(ERROR_MESSAGES.INVALID_JSON_WHERECLAUSE, renderedFilter);\n parsedFilter = {}; // fallback or throw error as needed\n }\n\n }\n\n let autocompleteQs = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n // if (whereClause) {\n // autocompleteQs = `${autocompleteQs}&${whereClause}`;\n // }\n\n\n if (fixedFilterToBeApplied && !fixedFilterParsed) {\n showToast(toast, \"error\", ERROR_MESSAGES.SELECT_RELEVANT_FIELD, ERROR_MESSAGES.FIELD_NOT_SELECT);\n\n } else {\n try {\n setLoading(true);\n // TODO: do error handling here, possible errors like modelname is incorrect etc...\n const autocompleteResponse = await triggerGetSolidEntities(autocompleteQs);\n\n // TODO: if no data found then can we show no matching \"entities\", where entities can be replaced with the model plural name,\n const autocompleteData = autocompleteResponse.data;\n\n if (autocompleteData) {\n const autoCompleteItems = autocompleteData.records.map((item: any) => {\n return {\n solidManyToOneLabel: item[fieldMetadata?.relationModel?.userKeyField?.name],\n solidManyToOneValue: item['id'],\n ...item,\n }\n });\n setAutoCompleteItems(autoCompleteItems);\n setOffset(autocompleteData.records.length);\n setHasMore(autocompleteData.records.length === LIMIT);\n }\n }\n finally {\n setLoading(false);\n }\n }\n\n\n }\n\n const onLazyLoad = async (event: { first: number; last: number }) => {\n if (!hasMore || loading) return;\n if (event.last < autoCompleteItems.length - 1) return; // Only load if user reaches bottom\n\n const queryData = {\n offset: offset,\n limit: LIMIT,\n filters: {\n $and: [\n {\n [fieldMetadata?.relationModel?.userKeyField?.name]: {\n [fieldLayoutInfo?.attrs?.autocompleteMatchMode || '$containsi']: currentQuery\n }\n }\n ]\n }\n };\n\n let fixedFilterToBeApplied = false;\n let fixedFilterParsed = false;\n if (solidFormViewMetaData?.data?.solidView?.model?.singularName === \"listOfValues\" && fieldContext.fieldMetadata.relationCoModelSingularName !== \"moduleMetadata\") {\n fixedFilterToBeApplied = true;\n }\n if (fieldMetadata?.relationFieldFixedFilter || fieldLayoutInfo?.attrs?.whereClause) {\n const convertedFixedFilter = fieldLayoutInfo?.attrs?.whereClause ? fieldLayoutInfo?.attrs?.whereClause : fieldMetadata?.relationFieldFixedFilter;\n fixedFilterToBeApplied = true;\n const fixedFilterTemplate = Handlebars.compile(convertedFixedFilter);\n const renderedFilter = fixedFilterTemplate(formik.values);\n\n // Parse the result into a JS object\n let parsedFilter;\n try {\n parsedFilter = JSON.parse(renderedFilter);\n const isValid = (obj: any): boolean => {\n if (!obj || typeof obj !== 'object') return false;\n\n // Recursively check all nested values\n const hasValidValue = (val: any): boolean => {\n if (val === null || val === undefined || val === '') return false;\n if (typeof val === 'object') {\n return Object.values(val).some(hasValidValue);\n }\n return true;\n };\n\n return hasValidValue(obj);\n };\n\n if (isValid(parsedFilter)) {\n queryData.filters.$and.push(parsedFilter);\n fixedFilterParsed = true;\n } else {\n console.warn(ERROR_MESSAGES.SKIPPING_EMPTY_FIXED_FILTER, parsedFilter);\n }\n } catch (e) {\n console.error(ERROR_MESSAGES.INVALID_JSON_WHERECLAUSE, renderedFilter);\n parsedFilter = {}; // fallback or throw error as needed\n }\n\n }\n\n const autocompleteQs = qs.stringify(queryData, { encodeValuesOnly: true });\n if (fixedFilterToBeApplied && !fixedFilterParsed) {\n showToast(toast, \"error\", ERROR_MESSAGES.SELECT_RELEVANT_FIELD, ERROR_MESSAGES.FIELD_NOT_SELECT);\n\n } else {\n try {\n setLoading(true);\n const response = await triggerGetSolidEntities(autocompleteQs);\n const records = response.data?.records || [];\n if (records.length < LIMIT) setHasMore(false);\n setAutoCompleteItems(prev => [...prev, ...records.map((item: any) => ({\n solidManyToOneLabel: item[fieldMetadata?.relationModel?.userKeyField?.name],\n solidManyToOneValue: item.id,\n ...item\n }))]);\n setOffset(prev => prev + records.length);\n } finally {\n setLoading(false);\n }\n }\n };\n\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n\n const customCreateHandler = (values: any) => {\n const currentRelationData = formik.values[fieldLayoutInfo.attrs.name] || [];\n const jsonValues = Object.fromEntries(values.entries());\n const updatedRelationData = [\n ...currentRelationData,\n {\n solidManyToOneLabel: jsonValues[fieldMetadata?.relationModel?.userKeyField?.name],\n solidManyToOneValue: \"new\",\n original: jsonValues,\n },\n ];\n\n formik.setFieldValue(fieldLayoutInfo.attrs.name, updatedRelationData);\n\n }\n return (\n <div className=\"relative\">\n <Toast ref={toast} />\n <div className=\"flex flex-column gap-2 mt-1 sm:mt-2 md:mt-3 lg:mt-4\">\n {showFieldLabel != false &&\n <label htmlFor={fieldLayoutInfo.attrs.name} className=\"form-field-label\">\n {fieldLabel}\n {fieldMetadata.required && <span className=\"text-red-500\"> *</span>}\n <SolidFieldTooltip fieldContext={fieldContext} />\n </label>\n }\n <div className=\"flex align-items-center gap-3\">\n <AutoComplete\n readOnly={formReadonly || fieldReadonly || readOnlyPermission}\n disabled={formDisabled || fieldDisabled || readOnlyPermission}\n {...formik.getFieldProps(fieldLayoutInfo.attrs.name)}\n id={fieldLayoutInfo.attrs.name}\n field=\"solidManyToOneLabel\"\n value={formik.values[fieldLayoutInfo.attrs.name] || ''}\n dropdown={!readOnlyPermission}\n suggestions={autoCompleteItems}\n completeMethod={autoCompleteSearch}\n onChange={(e) => fieldContext.onChange(e, 'onFieldChange')}\n onFocus={(e) => e.target.select()}\n className=\"w-full solid-standard-autocomplete\"\n // virtualScrollerOptions={{\n // itemSize: 38,\n // lazy: true,\n // onLazyLoad\n // }}\n virtualScrollerOptions={getVirtualScrollerOptions({\n itemsLength: autoCompleteItems.length,\n lazy: true,\n onLazyLoad,\n })}\n />\n {fieldLayoutInfo.attrs.inlineCreate === \"true\" && readOnlyPermission === false && formViewParams &&\n <RenderSolidFormEmbededView formik={formik} fieldContext={fieldContext} customCreateHandler={customCreateHandler} visibleCreateRelationEntity={visibleCreateRelationEntity} setvisibleCreateRelationEntity={setvisibleCreateRelationEntity} formViewParams={formViewParams}></RenderSolidFormEmbededView>\n }\n </div>\n </div>\n {isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (\n <div className=\"absolute mt-1\">\n <Message severity=\"error\" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />\n </div>\n )}\n </div>\n );\n}\n\nexport const RenderSolidFormEmbededView = ({ formik, fieldContext, customCreateHandler, visibleCreateRelationEntity, setvisibleCreateRelationEntity, formViewParams }: any) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field col-6 flex flex-column gap-2 mt-1 sm:mt-2 md:mt-3 lg:mt-4';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const parentModelName = fieldLayoutInfo?.attrs?.parentModelName;\n const childModelName = fieldLayoutInfo?.attrs?.childModelName;\n const parentFieldName = fieldLayoutInfo?.attrs?.parentFieldName;\n const childFieldName = fieldLayoutInfo?.attrs?.childFieldName;\n const parentModuleName = fieldLayoutInfo?.attrs?.parentModuleName;\n\n\n const params = {\n moduleName: formViewParams.moduleName,\n modelName: camelCase(formViewParams.modelName),\n id: formViewParams.id,\n embeded: formViewParams.embeded,\n inlineCreateAutoSave: formViewParams.inlineCreateAutoSave,\n layout: formViewParams.layout,\n customCreateHandler: ((values: any) => {\n setvisibleCreateRelationEntity(false);\n customCreateHandler(values)\n }),\n handlePopupClose: (() => {\n setvisibleCreateRelationEntity(false);\n }),\n }\n return (\n <div>\n <div>\n <Button\n icon=\"pi pi-plus\"\n rounded\n outlined\n aria-label=\"Filter\"\n type=\"button\"\n size=\"small\"\n onClick={() => setvisibleCreateRelationEntity(true)}\n className=\"custom-add-button\"\n />\n </div>\n <Dialog\n header=\"\"\n showHeader={false}\n visible={visibleCreateRelationEntity}\n style={{\n width: fieldLayoutInfo?.attrs?.inlineCreateLayout?.attrs?.width ?? \"60vw\",\n height: fieldLayoutInfo?.attrs?.inlineCreateLayout?.attrs?.height ?? \"auto\"\n }}\n onHide={() => {\n if (!visibleCreateRelationEntity) return;\n setvisibleCreateRelationEntity(false);\n }}\n className=\"solid-dialog\"\n breakpoints={{ '1199px': '35rem', \"767px\": '85vw', \"550px\": '90vw' }}\n\n >\n <SolidFormView {...params} />\n\n </Dialog>\n </div>\n )\n}\n\n\nexport const DefaultRelationManyToOneFormViewWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {\n\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const value = formik.values[fieldLayoutInfo.attrs.name];\n const userKeyField = fieldLayoutInfo?.attrs?.coModelFieldToDisplay ? fieldLayoutInfo?.attrs?.coModelFieldToDisplay : fieldMetadata?.relationModel?.userKeyField?.name;\n const displayValue = value?.[userKeyField];\n return (\n <div className=\"mt-2 flex-column gap-2\">\n {showFieldLabel !== false && (\n <p className=\"m-0 form-field-label font-medium\">{fieldLabel}</p>\n )}\n <p className=\"m-0\">{displayValue}</p>\n </div>\n );\n}\n\n\n\n\n\nexport const PseudoRelationManyToOneFormWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {\n const toast = useRef<Toast>(null);\n\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const solidFormViewMetaData = fieldContext.solidFormViewMetaData;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const readOnlyPermission = fieldContext.readOnly ? fieldContext.readOnly : false;\n\n const parentModelName = fieldLayoutInfo?.attrs?.parentModelName;\n const childModelName = fieldLayoutInfo?.attrs?.childModelName;\n const parentFieldName = fieldLayoutInfo?.attrs?.parentFieldName;\n const childFieldName = fieldLayoutInfo?.attrs?.childFieldName;\n const parentModuleName = fieldLayoutInfo?.attrs?.parentModuleName;\n const parentFieldLabels = fieldLayoutInfo?.attrs?.parentFieldLabels;\n const parentSearchFields = fieldLayoutInfo?.attrs?.parentSearchFields;\n\n const [formViewParams, setformViewParams] = useState<FormViewParams>()\n\n const viewMode: string = fieldContext.viewMode;\n\n useEffect(() => {\n const formviewparams: FormViewParams = {\n moduleName: parentModuleName,\n modelName: camelCase(parentModelName),\n id: \"new\",\n embeded: true,\n inlineCreateAutoSave: fieldLayoutInfo?.attrs?.inlineCreateAutoSave,\n layout: fieldLayoutInfo?.attrs?.inlineCreateLayout\n }\n setformViewParams(formviewparams);\n }, [])\n\n\n const [visibleCreateRelationEntity, setvisibleCreateRelationEntity] = useState(false);\n // auto complete specific code. \n const entityApi = createSolidEntityApi(parentModelName || \"userViewMetadata\");\n const { useLazyGetSolidEntitiesQuery } = entityApi;\n const [triggerGetSolidEntities] = useLazyGetSolidEntitiesQuery();\n\n const fieldDisabled = fieldLayoutInfo.attrs?.disabled;\n const fieldReadonly = fieldLayoutInfo.attrs?.readonly;\n\n const formDisabled = solidFormViewMetaData.data.solidView?.layout?.attrs?.disabled;\n const formReadonly = solidFormViewMetaData.data.solidView?.layout?.attrs?.readonly;\n const whereClause = fieldLayoutInfo.attrs.whereClause;\n\n const [autoCompleteItems, setAutoCompleteItems] = useState<any[]>([]);\n const [offset, setOffset] = useState(0);\n const [hasMore, setHasMore] = useState(true);\n const [currentQuery, setCurrentQuery] = useState(\"\");\n const LIMIT = 50;\n const [loading, setLoading] = useState(false);\n const [viewDisplayValue, setViewDisplayValue] = useState<any>(null);\n\n\n useEffect(() => {\n const fn = async () => {\n if (fieldContext.data[fieldLayoutInfo.attrs.name]) {\n const queryData = {\n offset: 0,\n limit: LIMIT,\n filters: {\n $and: [\n {\n [parentFieldName]: {\n [fieldLayoutInfo?.attrs?.autocompleteMatchMode || '$eqi']: fieldContext.data[fieldLayoutInfo.attrs.name] ?? formik.values[fieldLayoutInfo.attrs.name]\n }\n }\n ]\n }\n };\n let autocompleteQs = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n const autocompleteResponse = await triggerGetSolidEntities(autocompleteQs);\n // TODO: if no data found then can we show no matching \"entities\", where entities can be replaced with the model plural name,\n const autocompleteData = autocompleteResponse.data;\n if (autocompleteData) {\n const formattedRecords = autocompleteData.records.map((item: any) => {\n const label = parentFieldLabels && parentFieldLabels.length > 0 ? parentFieldLabels.map((label: any) => item[label]).join(\" - \") : item[parentFieldName];\n return {\n solidManyToOneLabel: label,\n solidManyToOneValue: item[parentFieldName],\n ...item,\n }\n });\n if (formattedRecords.length > 0) {\n formik.setFieldValue(fieldLayoutInfo.attrs.name, formattedRecords[0]);\n }\n }\n }\n }\n fn()\n }, [])\n\n // Add this NEW useEffect - only for view mode refresh\n useEffect(() => {\n const fn = async () => {\n if (viewMode !== \"view\") {\n setViewDisplayValue(null);\n return;\n }\n\n const rawValue =\n fieldContext.data[fieldLayoutInfo.attrs.name] ??\n formik.values[fieldLayoutInfo.attrs.name];\n\n if (!rawValue) return;\n\n const searchValue =\n typeof rawValue === \"object\"\n ? rawValue[parentFieldName]\n : rawValue;\n\n const queryData = {\n offset: 0,\n limit: 1,\n filters: {\n $and: [\n {\n [parentFieldName]: {\n [fieldLayoutInfo?.attrs?.autocompleteMatchMode || \"$eqi\"]:\n searchValue,\n },\n },\n ],\n },\n };\n\n const qsStr = qs.stringify(queryData, { encodeValuesOnly: true });\n const res = await triggerGetSolidEntities(qsStr);\n const record = res.data?.records?.[0];\n if (!record) return;\n\n const label =\n parentFieldLabels?.length > 0\n ? parentFieldLabels.map((l: string) => record[l]).join(\" - \")\n : record[parentFieldName];\n console.log(\"Final View Label\", label, record[parentFieldName])\n setViewDisplayValue({\n solidManyToOneLabel: label,\n solidManyToOneValue: record[parentFieldName],\n ...record,\n });\n };\n\n fn();\n }, [viewMode, formik.values[fieldLayoutInfo.attrs.name]]);\n\n\n const resolvedValue = viewMode === \"view\" ? viewDisplayValue : formik.values[fieldLayoutInfo.attrs.name];\n\n const autoCompleteSearch = async (event: AutoCompleteCompleteEvent) => {\n setOffset(0);\n setCurrentQuery(event.query || \"\");\n setHasMore(true);\n // Get the list view layout & metadata first. \n const queryData = {\n offset: 0,\n limit: LIMIT,\n filters: {\n $and: [\n ...(parentSearchFields?.length > 0\n ? [\n {\n $or: parentSearchFields.map((field: any) => ({\n [field]: {\n [fieldLayoutInfo?.attrs?.autocompleteMatchMode || '$containsi']:\n event.query\n }\n }))\n }\n ]\n : [\n {\n [parentFieldName]: {\n [fieldLayoutInfo?.attrs?.autocompleteMatchMode || '$containsi']:\n event.query\n }\n }\n ])\n\n ]\n }\n };\n let fixedFilterToBeApplied = false;\n let fixedFilterParsed = false;\n if (solidFormViewMetaData?.data?.solidView?.model?.singularName === \"listOfValues\" && fieldContext.fieldMetadata.relationCoModelSingularName !== \"moduleMetadata\") {\n fixedFilterToBeApplied = true;\n }\n if (fieldMetadata?.relationFieldFixedFilter || fieldLayoutInfo?.attrs?.whereClause) {\n const convertedFixedFilter = fieldLayoutInfo?.attrs?.whereClause ? fieldLayoutInfo?.attrs?.whereClause : fieldMetadata?.relationFieldFixedFilter;\n fixedFilterToBeApplied = true;\n const fixedFilterTemplate = Handlebars.compile(convertedFixedFilter);\n const renderedFilter = fixedFilterTemplate(formik.values);\n\n // Parse the result into a JS object\n let parsedFilter;\n try {\n parsedFilter = JSON.parse(renderedFilter);\n const isValid = (obj: any): boolean => {\n if (!obj || typeof obj !== 'object') return false;\n\n // Recursively check all nested values\n const hasValidValue = (val: any): boolean => {\n if (val === null || val === undefined || val === '') return false;\n if (typeof val === 'object') {\n return Object.values(val).some(hasValidValue);\n }\n return true;\n };\n\n return hasValidValue(obj);\n };\n\n if (isValid(parsedFilter)) {\n queryData.filters.$and.push(parsedFilter);\n fixedFilterParsed = true;\n } else {\n console.warn(ERROR_MESSAGES.SKIPPING_EMPTY_FIXED_FILTER, parsedFilter);\n }\n } catch (e) {\n console.error(ERROR_MESSAGES.INVALID_JSON_WHERECLAUSE, renderedFilter);\n parsedFilter = {}; // fallback or throw error as needed\n }\n\n }\n\n let autocompleteQs = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n // if (whereClause) {\n // autocompleteQs = `${autocompleteQs}&${whereClause}`;\n // }\n\n\n if (fixedFilterToBeApplied && !fixedFilterParsed) {\n showToast(toast, \"error\", ERROR_MESSAGES.SELECT_RELEVANT_FIELD, ERROR_MESSAGES.FIELD_NOT_SELECT);\n\n } else {\n try {\n setLoading(true);\n // TODO: do error handling here, possible errors like modelname is incorrect etc...\n const autocompleteResponse = await triggerGetSolidEntities(autocompleteQs);\n\n // TODO: if no data found then can we show no matching \"entities\", where entities can be replaced with the model plural name,\n const autocompleteData = autocompleteResponse.data;\n\n if (autocompleteData) {\n const autoCompleteItems = autocompleteData.records.map((item: any) => {\n const label = parentFieldLabels && parentFieldLabels.length > 0 ? parentFieldLabels.map((label: any) => item[label]).join(\" - \") : item[parentFieldName];\n return {\n solidManyToOneLabel: label,\n solidManyToOneValue: item[parentFieldName],\n ...item,\n }\n });\n // const autoCompleteItems = autocompleteData.records.map((item: any) => {label: item[parentFieldName],value});\n\n setAutoCompleteItems(autoCompleteItems);\n setOffset(autocompleteData.records.length);\n setHasMore(autocompleteData.records.length === LIMIT);\n }\n }\n finally {\n setLoading(false);\n }\n }\n }\n\n const onLazyLoad = async (event: { first: number; last: number }) => {\n if (!hasMore || loading) return;\n if (event.last < autoCompleteItems.length - 1) return; // Only load if user reaches bottom\n\n const queryData = {\n offset: offset,\n limit: LIMIT,\n filters: {\n $and: [\n ...(parentSearchFields?.length > 0\n ? [\n {\n $or: parentSearchFields.map((field: any) => ({\n [field]: {\n [fieldLayoutInfo?.attrs?.autocompleteMatchMode || '$containsi']:\n currentQuery\n }\n }))\n }\n ]\n : [\n {\n [parentFieldName]: {\n [fieldLayoutInfo?.attrs?.autocompleteMatchMode || '$containsi']:\n currentQuery\n }\n }\n ])\n\n ]\n }\n };\n\n let fixedFilterToBeApplied = false;\n let fixedFilterParsed = false;\n if (solidFormViewMetaData?.data?.solidView?.model?.singularName === \"listOfValues\" && fieldContext.fieldMetadata.relationCoModelSingularName !== \"moduleMetadata\") {\n fixedFilterToBeApplied = true;\n }\n if (fieldMetadata?.relationFieldFixedFilter || fieldLayoutInfo?.attrs?.whereClause) {\n const convertedFixedFilter = fieldLayoutInfo?.attrs?.whereClause ? fieldLayoutInfo?.attrs?.whereClause : fieldMetadata?.relationFieldFixedFilter;\n fixedFilterToBeApplied = true;\n const fixedFilterTemplate = Handlebars.compile(convertedFixedFilter);\n const renderedFilter = fixedFilterTemplate(formik.values);\n\n // Parse the result into a JS object\n let parsedFilter;\n try {\n parsedFilter = JSON.parse(renderedFilter);\n const isValid = (obj: any): boolean => {\n if (!obj || typeof obj !== 'object') return false;\n\n // Recursively check all nested values\n const hasValidValue = (val: any): boolean => {\n if (val === null || val === undefined || val === '') return false;\n if (typeof val === 'object') {\n return Object.values(val).some(hasValidValue);\n }\n return true;\n };\n\n return hasValidValue(obj);\n };\n\n if (isValid(parsedFilter)) {\n queryData.filters.$and.push(parsedFilter);\n fixedFilterParsed = true;\n } else {\n console.warn(ERROR_MESSAGES.SKIPPING_EMPTY_FIXED_FILTER, parsedFilter);\n }\n } catch (e) {\n console.error(ERROR_MESSAGES.INVALID_JSON_WHERECLAUSE, renderedFilter);\n parsedFilter = {}; // fallback or throw error as needed\n }\n\n }\n\n const autocompleteQs = qs.stringify(queryData, { encodeValuesOnly: true });\n if (fixedFilterToBeApplied && !fixedFilterParsed) {\n showToast(toast, \"error\", ERROR_MESSAGES.SELECT_RELEVANT_FIELD, ERROR_MESSAGES.FIELD_NOT_SELECT);\n\n } else {\n try {\n setLoading(true);\n const response = await triggerGetSolidEntities(autocompleteQs);\n const records = response.data?.records || [];\n if (records.length < LIMIT) setHasMore(false);\n setAutoCompleteItems((prev: any) => [...prev, ...records.map((item: any) => {\n const label = parentFieldLabels && parentFieldLabels.length > 0 ? parentFieldLabels.map((label: any) => item[label]).join(\" - \") : item[parentFieldName];\n return {\n solidManyToOneLabel: label,\n solidManyToOneValue: item[parentFieldName],\n ...item\n }\n }\n )]);\n setOffset((prev: any) => prev + records.length);\n } finally {\n setLoading(false);\n }\n }\n };\n\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n\n const customCreateHandler = (values: any) => {\n const currentRelationData = formik.values[fieldLayoutInfo.attrs.name] || [];\n const jsonValues = Object.fromEntries(values.entries());\n console.log(\"jsonValues\", jsonValues);\n const label = parentFieldLabels && parentFieldLabels.length > 0 ? parentFieldLabels.map((label: any) => jsonValues[label]).join(\" - \") : jsonValues[parentFieldName];\n\n const updatedRelationData = [\n ...currentRelationData,\n // jsonValues[parentFieldName]\n {\n solidManyToOneLabel: label,\n solidManyToOneValue: \"new\",\n original: jsonValues,\n },\n ];\n\n formik.setFieldValue(fieldLayoutInfo.attrs.name, updatedRelationData);\n\n }\n return (\n <div className=\"relative\" >\n <Toast ref={toast} />\n < div className=\"flex flex-column gap-2 mt-1 sm:mt-2 md:mt-3 lg:mt-4\" >\n {showFieldLabel != false &&\n <label htmlFor={fieldLayoutInfo.attrs.name} className=\"form-field-label\" >\n {fieldLabel}\n {fieldMetadata.required && <span className=\"text-red-500\" > * </span>}\n <SolidFieldTooltip fieldContext={fieldContext} />\n </label>\n }\n <div className=\"flex align-items-center gap-3\" >\n <AutoComplete\n readOnly={formReadonly || fieldReadonly || readOnlyPermission}\n disabled={formDisabled || fieldDisabled || readOnlyPermission || viewMode === \"view\"}\n field=\"solidManyToOneLabel\"\n {...formik.getFieldProps(fieldLayoutInfo.attrs.name)}\n id={fieldLayoutInfo.attrs.name}\n value={resolvedValue || null}\n dropdown={!readOnlyPermission}\n suggestions={autoCompleteItems}\n completeMethod={autoCompleteSearch}\n onChange={(e) => fieldContext.onChange(e, 'onFieldChange')}\n onFocus={(e) => e.target.select()}\n className=\"w-full solid-standard-autocomplete\"\n // virtualScrollerOptions={{\n // itemSize: 38,\n // lazy: true,\n // onLazyLoad\n // }}\n virtualScrollerOptions={getVirtualScrollerOptions({\n itemsLength: autoCompleteItems.length,\n lazy: true,\n onLazyLoad,\n })}\n />\n {\n fieldLayoutInfo.attrs.inlineCreate === \"true\" && readOnlyPermission === false && formViewParams && viewMode !== \"view\" &&\n <RenderSolidFormEmbededView formik={formik} fieldContext={fieldContext} customCreateHandler={customCreateHandler} visibleCreateRelationEntity={visibleCreateRelationEntity} setvisibleCreateRelationEntity={setvisibleCreateRelationEntity} formViewParams={formViewParams} > </RenderSolidFormEmbededView>\n }\n </div>\n </div>\n {\n isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (\n <div className=\"absolute mt-1\" >\n <Message severity=\"error\" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />\n </div>\n )\n }\n </div>\n );\n}\n\n"]}
|
|
1
|
+
{"version":3,"file":"SolidRelationManyToOneField.js","sourceRoot":"","sources":["../../../../../../src/components/core/form/fields/relations/SolidRelationManyToOneField.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { createSolidEntityApi } from \"../../../../../redux/api/solidEntityApi\";\nimport { AutoComplete, AutoCompleteCompleteEvent } from \"primereact/autocomplete\";\nimport { Message } from \"primereact/message\";\nimport qs from \"qs\";\nimport { useEffect, useState } from \"react\";\nimport * as Yup from 'yup';\nimport { FormikObject, ISolidField, SolidFieldProps } from \"../ISolidField\";\nimport { camelCase } from \"lodash\";\nimport { Button } from \"primereact/button\";\nimport { Dialog } from \"primereact/dialog\";\nimport SolidFormView from '../../../../../components/core/form/SolidFormView';\nimport { getExtensionComponent } from \"../../../../../helpers/registry\";\nimport { SolidFormFieldWidgetProps } from \"../../../../../types/solid-core\";\nimport { useDispatch } from 'react-redux';\nimport { showToast } from '../../../../../redux/features/toastSlice';\n// import Handlebars from \"handlebars/dist/handlebars\";\nimport * as Handlebars from \"handlebars\";\nimport { SolidFieldTooltip } from \"../../../../../components/common/SolidFieldTooltip\";\nimport { ERROR_MESSAGES } from \"../../../../../constants/error-messages\";\nimport { getVirtualScrollerOptions } from \"../../../../../helpers/autoCompleteVirtualScroll\";\n\n\nexport type FormViewParams = {\n moduleName: any;\n modelName: any;\n id: any;\n embeded: any;\n inlineCreateAutoSave: any;\n layout: any;\n}\n\nexport class SolidRelationManyToOneField implements ISolidField {\n\n private fieldContext: SolidFieldProps;\n\n constructor(fieldContext: SolidFieldProps) {\n this.fieldContext = fieldContext;\n }\n\n initialValue(): any {\n\n const manyToOneFieldData = this.fieldContext?.data[this.fieldContext?.field?.attrs?.name];\n const fieldMetadata = this.fieldContext?.fieldMetadata;\n const userKeyField = fieldMetadata?.relationModel?.userKeyField?.name;\n const manyToOneColVal = manyToOneFieldData ? manyToOneFieldData[userKeyField] : '';\n if (manyToOneColVal) {\n return { solidManyToOneLabel: manyToOneColVal || '', solidManyToOneValue: manyToOneFieldData?.id || '', ...manyToOneFieldData };\n }\n if (this.fieldContext.parentData) {\n const parentDataForKey = this.fieldContext.parentData[userKeyField];\n if (parentDataForKey && typeof parentDataForKey === 'object') {\n const [key, value]: any = Object.entries(this.fieldContext.parentData)[0] || [];\n if (key && value !== undefined) {\n return { solidManyToOneLabel: value.solidManyToOneLabel, solidManyToOneValue: value.solidManyToOneValue };\n }\n }\n }\n return {}\n }\n\n updateFormData(value: any, formData: FormData): any {\n const fieldLayoutInfo = this.fieldContext.field;\n if (value?.solidManyToOneValue) {\n formData.append(`${fieldLayoutInfo.attrs.name}Id`, value.solidManyToOneValue);\n }\n }\n\n validationSchema(): Yup.Schema {\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n\n let schema = Yup.mixed();\n // Custom validation for relation field\n if (fieldMetadata.required) {\n schema = schema.test(\n ERROR_MESSAGES.REQUIRED_REALTION,\n ERROR_MESSAGES.FIELD_REUQIRED(fieldLabel),\n function (value: any) {\n // Handle empty values\n if (!value) return false;\n\n // If it's an object with solidManyToOneValue, check if it's valid\n if (typeof value === 'object' && value !== null && (value as any).solidManyToOneValue) {\n return true;\n }\n\n // If it's a string (user typed but didn't select), it's invalid for required field\n if (typeof value === 'string') {\n return false;\n }\n\n return false;\n }\n );\n }\n\n // Add validation to ensure valid selection\n schema = schema.test(\n ERROR_MESSAGES.VALIDATE_SELECTION,\n ERROR_MESSAGES.SELECT_VALID_FROM_DROPDOWN(fieldLabel),\n function (value: any) {\n // If not required and empty, it's valid\n if (!fieldMetadata.required && (!value || value === '')) {\n return true;\n }\n\n // If it's an object with solidManyToOneValue, it's a valid selection\n if (typeof value === 'object' && value !== null && (value as any).solidManyToOneValue) {\n return true;\n }\n\n // If it's a string (user typed but didn't select), it's invalid\n if (typeof value === 'string' && value.trim() !== '') {\n return false;\n }\n\n // Empty value for non-required field\n return !fieldMetadata.required;\n }\n );\n\n return schema;\n }\n\n\n render(formik: FormikObject) {\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n\n let isVisible = fieldLayoutInfo.attrs?.visible || true;\n if (this.fieldContext.parentData && this.fieldContext.parentFieldName === fieldLayoutInfo.attrs.name) {\n isVisible = false;\n }\n\n // const isVisible = this.fieldContext.parentData ? fieldLayoutInfo.attrs?.visible === true : fieldLayoutInfo.attrs?.visible !== false;\n\n if (!isVisible) {\n return null;\n }\n\n let viewWidget = fieldLayoutInfo.attrs.viewWidget;\n let editWidget = fieldLayoutInfo.attrs.editWidget;\n if (!editWidget) {\n editWidget = 'DefaultRelationManyToOneFormEditWidget';\n }\n if (!viewWidget) {\n viewWidget = 'DefaultRelationManyToOneFormViewWidget';\n }\n const viewMode: string = this.fieldContext.viewMode;\n return (\n <>\n <div className={className}>\n {viewMode === \"view\" && this.renderExtensionRenderMode(viewWidget, formik)}\n {viewMode === \"edit\" && (<>{editWidget && this.renderExtensionRenderMode(editWidget, formik)}</>)}\n </div>\n </>\n );\n }\n\n renderExtensionRenderMode(widget: string, formik: FormikObject) {\n let DynamicWidget = getExtensionComponent(widget);\n const widgetProps: SolidFormFieldWidgetProps = {\n formik: formik,\n fieldContext: this.fieldContext,\n }\n return (\n <>\n {DynamicWidget && <DynamicWidget {...widgetProps} />}\n </>\n )\n }\n}\n\nexport const DefaultRelationManyToOneFormEditWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {\n const dispatch = useDispatch();\n\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const solidFormViewMetaData = fieldContext.solidFormViewMetaData;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const readOnlyPermission = fieldContext.readOnly;\n const [visibleCreateRelationEntity, setvisibleCreateRelationEntity] = useState(false);\n const [formViewParams, setformViewParams] = useState<FormViewParams>()\n // auto complete specific code. \n const entityApi = createSolidEntityApi(fieldMetadata.relationCoModelSingularName);\n const { useLazyGetSolidEntitiesQuery } = entityApi;\n const [triggerGetSolidEntities] = useLazyGetSolidEntitiesQuery();\n\n const fieldDisabled = fieldLayoutInfo.attrs?.disabled;\n const fieldReadonly = fieldLayoutInfo.attrs?.readonly;\n\n const formDisabled = solidFormViewMetaData.data.solidView?.layout?.attrs?.disabled;\n const formReadonly = solidFormViewMetaData.data.solidView?.layout?.attrs?.readonly;\n const whereClause = fieldLayoutInfo.attrs.whereClause;\n\n const [autoCompleteItems, setAutoCompleteItems] = useState<any[]>([]);\n const [offset, setOffset] = useState(0);\n const [hasMore, setHasMore] = useState(true);\n const [currentQuery, setCurrentQuery] = useState(\"\");\n const LIMIT = 50;\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n const formviewparams: FormViewParams = {\n moduleName: fieldContext.fieldMetadata.relationModelModuleName,\n modelName: camelCase(fieldContext.fieldMetadata.relationCoModelSingularName),\n id: \"new\",\n embeded: true,\n inlineCreateAutoSave: fieldLayoutInfo?.attrs?.inlineCreateAutoSave,\n layout: fieldLayoutInfo?.attrs?.inlineCreateLayout\n }\n setformViewParams(formviewparams);\n }, [])\n\n const autoCompleteSearch = async (event: AutoCompleteCompleteEvent) => {\n setOffset(0);\n setCurrentQuery(event.query || \"\");\n setHasMore(true);\n // Get the list view layout & metadata first. \n const queryData = {\n offset: 0,\n limit: LIMIT,\n filters: {\n $and: [\n {\n [fieldMetadata?.relationModel?.userKeyField?.name]: {\n [fieldLayoutInfo?.attrs?.autocompleteMatchMode || '$containsi']: event.query\n }\n }\n ]\n }\n };\n let fixedFilterToBeApplied = false;\n let fixedFilterParsed = false;\n if (solidFormViewMetaData?.data?.solidView?.model?.singularName === \"listOfValues\" && fieldContext.fieldMetadata.relationCoModelSingularName !== \"moduleMetadata\") {\n fixedFilterToBeApplied = true;\n }\n if (fieldMetadata?.relationFieldFixedFilter || fieldLayoutInfo?.attrs?.whereClause) {\n const convertedFixedFilter = fieldLayoutInfo?.attrs?.whereClause ? fieldLayoutInfo?.attrs?.whereClause : fieldMetadata?.relationFieldFixedFilter;\n fixedFilterToBeApplied = true;\n const fixedFilterTemplate = Handlebars.compile(convertedFixedFilter);\n const renderedFilter = fixedFilterTemplate(formik.values);\n\n // Parse the result into a JS object\n let parsedFilter;\n try {\n parsedFilter = JSON.parse(renderedFilter);\n const isValid = (obj: any): boolean => {\n if (!obj || typeof obj !== 'object') return false;\n\n // Recursively check all nested values\n const hasValidValue = (val: any): boolean => {\n if (val === null || val === undefined || val === '') return false;\n if (typeof val === 'object') {\n return Object.values(val).some(hasValidValue);\n }\n return true;\n };\n\n return hasValidValue(obj);\n };\n\n if (isValid(parsedFilter)) {\n queryData.filters.$and.push(parsedFilter);\n fixedFilterParsed = true;\n } else {\n console.warn(ERROR_MESSAGES.SKIPPING_EMPTY_FIXED_FILTER, parsedFilter);\n }\n } catch (e) {\n console.error(ERROR_MESSAGES.INVALID_JSON_WHERECLAUSE, renderedFilter);\n parsedFilter = {}; // fallback or throw error as needed\n }\n\n }\n\n let autocompleteQs = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n // if (whereClause) {\n // autocompleteQs = `${autocompleteQs}&${whereClause}`;\n // }\n\n\n if (fixedFilterToBeApplied && !fixedFilterParsed) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.SELECT_RELEVANT_FIELD, detail: ERROR_MESSAGES.FIELD_NOT_SELECT }));\n\n } else {\n try {\n setLoading(true);\n // TODO: do error handling here, possible errors like modelname is incorrect etc...\n const autocompleteResponse = await triggerGetSolidEntities(autocompleteQs);\n\n // TODO: if no data found then can we show no matching \"entities\", where entities can be replaced with the model plural name,\n const autocompleteData = autocompleteResponse.data;\n\n if (autocompleteData) {\n const autoCompleteItems = autocompleteData.records.map((item: any) => {\n return {\n solidManyToOneLabel: item[fieldMetadata?.relationModel?.userKeyField?.name],\n solidManyToOneValue: item['id'],\n ...item,\n }\n });\n setAutoCompleteItems(autoCompleteItems);\n setOffset(autocompleteData.records.length);\n setHasMore(autocompleteData.records.length === LIMIT);\n }\n }\n finally {\n setLoading(false);\n }\n }\n\n\n }\n\n const onLazyLoad = async (event: { first: number; last: number }) => {\n if (!hasMore || loading) return;\n if (event.last < autoCompleteItems.length - 1) return; // Only load if user reaches bottom\n\n const queryData = {\n offset: offset,\n limit: LIMIT,\n filters: {\n $and: [\n {\n [fieldMetadata?.relationModel?.userKeyField?.name]: {\n [fieldLayoutInfo?.attrs?.autocompleteMatchMode || '$containsi']: currentQuery\n }\n }\n ]\n }\n };\n\n let fixedFilterToBeApplied = false;\n let fixedFilterParsed = false;\n if (solidFormViewMetaData?.data?.solidView?.model?.singularName === \"listOfValues\" && fieldContext.fieldMetadata.relationCoModelSingularName !== \"moduleMetadata\") {\n fixedFilterToBeApplied = true;\n }\n if (fieldMetadata?.relationFieldFixedFilter || fieldLayoutInfo?.attrs?.whereClause) {\n const convertedFixedFilter = fieldLayoutInfo?.attrs?.whereClause ? fieldLayoutInfo?.attrs?.whereClause : fieldMetadata?.relationFieldFixedFilter;\n fixedFilterToBeApplied = true;\n const fixedFilterTemplate = Handlebars.compile(convertedFixedFilter);\n const renderedFilter = fixedFilterTemplate(formik.values);\n\n // Parse the result into a JS object\n let parsedFilter;\n try {\n parsedFilter = JSON.parse(renderedFilter);\n const isValid = (obj: any): boolean => {\n if (!obj || typeof obj !== 'object') return false;\n\n // Recursively check all nested values\n const hasValidValue = (val: any): boolean => {\n if (val === null || val === undefined || val === '') return false;\n if (typeof val === 'object') {\n return Object.values(val).some(hasValidValue);\n }\n return true;\n };\n\n return hasValidValue(obj);\n };\n\n if (isValid(parsedFilter)) {\n queryData.filters.$and.push(parsedFilter);\n fixedFilterParsed = true;\n } else {\n console.warn(ERROR_MESSAGES.SKIPPING_EMPTY_FIXED_FILTER, parsedFilter);\n }\n } catch (e) {\n console.error(ERROR_MESSAGES.INVALID_JSON_WHERECLAUSE, renderedFilter);\n parsedFilter = {}; // fallback or throw error as needed\n }\n\n }\n\n const autocompleteQs = qs.stringify(queryData, { encodeValuesOnly: true });\n if (fixedFilterToBeApplied && !fixedFilterParsed) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.SELECT_RELEVANT_FIELD, detail: ERROR_MESSAGES.FIELD_NOT_SELECT }));\n\n } else {\n try {\n setLoading(true);\n const response = await triggerGetSolidEntities(autocompleteQs);\n const records = response.data?.records || [];\n if (records.length < LIMIT) setHasMore(false);\n setAutoCompleteItems(prev => [...prev, ...records.map((item: any) => ({\n solidManyToOneLabel: item[fieldMetadata?.relationModel?.userKeyField?.name],\n solidManyToOneValue: item.id,\n ...item\n }))]);\n setOffset(prev => prev + records.length);\n } finally {\n setLoading(false);\n }\n }\n };\n\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n\n const customCreateHandler = (values: any) => {\n const currentRelationData = formik.values[fieldLayoutInfo.attrs.name] || [];\n const jsonValues = Object.fromEntries(values.entries());\n const updatedRelationData = [\n ...currentRelationData,\n {\n solidManyToOneLabel: jsonValues[fieldMetadata?.relationModel?.userKeyField?.name],\n solidManyToOneValue: \"new\",\n original: jsonValues,\n },\n ];\n\n formik.setFieldValue(fieldLayoutInfo.attrs.name, updatedRelationData);\n\n }\n return (\n <div className=\"relative\">\n <div className=\"flex flex-column gap-2 mt-1 sm:mt-2 md:mt-3 lg:mt-4\">\n {showFieldLabel != false &&\n <label htmlFor={fieldLayoutInfo.attrs.name} className=\"form-field-label\">\n {fieldLabel}\n {fieldMetadata.required && <span className=\"text-red-500\"> *</span>}\n <SolidFieldTooltip fieldContext={fieldContext} />\n </label>\n }\n <div className=\"flex align-items-center gap-3\">\n <AutoComplete\n readOnly={formReadonly || fieldReadonly || readOnlyPermission}\n disabled={formDisabled || fieldDisabled || readOnlyPermission}\n {...formik.getFieldProps(fieldLayoutInfo.attrs.name)}\n id={fieldLayoutInfo.attrs.name}\n field=\"solidManyToOneLabel\"\n value={formik.values[fieldLayoutInfo.attrs.name] || ''}\n dropdown={!readOnlyPermission}\n suggestions={autoCompleteItems}\n completeMethod={autoCompleteSearch}\n onChange={(e) => fieldContext.onChange(e, 'onFieldChange')}\n onFocus={(e) => e.target.select()}\n className=\"w-full solid-standard-autocomplete\"\n // virtualScrollerOptions={{\n // itemSize: 38,\n // lazy: true,\n // onLazyLoad\n // }}\n virtualScrollerOptions={getVirtualScrollerOptions({\n itemsLength: autoCompleteItems.length,\n lazy: true,\n onLazyLoad,\n })}\n />\n {fieldLayoutInfo.attrs.inlineCreate === \"true\" && readOnlyPermission === false && formViewParams &&\n <RenderSolidFormEmbededView formik={formik} fieldContext={fieldContext} customCreateHandler={customCreateHandler} visibleCreateRelationEntity={visibleCreateRelationEntity} setvisibleCreateRelationEntity={setvisibleCreateRelationEntity} formViewParams={formViewParams}></RenderSolidFormEmbededView>\n }\n </div>\n </div>\n {isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (\n <div className=\"absolute mt-1\">\n <Message severity=\"error\" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />\n </div>\n )}\n </div>\n );\n}\n\nexport const RenderSolidFormEmbededView = ({ formik, fieldContext, customCreateHandler, visibleCreateRelationEntity, setvisibleCreateRelationEntity, formViewParams }: any) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field col-6 flex flex-column gap-2 mt-1 sm:mt-2 md:mt-3 lg:mt-4';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const parentModelName = fieldLayoutInfo?.attrs?.parentModelName;\n const childModelName = fieldLayoutInfo?.attrs?.childModelName;\n const parentFieldName = fieldLayoutInfo?.attrs?.parentFieldName;\n const childFieldName = fieldLayoutInfo?.attrs?.childFieldName;\n const parentModuleName = fieldLayoutInfo?.attrs?.parentModuleName;\n\n\n const params = {\n moduleName: formViewParams.moduleName,\n modelName: camelCase(formViewParams.modelName),\n id: formViewParams.id,\n embeded: formViewParams.embeded,\n inlineCreateAutoSave: formViewParams.inlineCreateAutoSave,\n layout: formViewParams.layout,\n customCreateHandler: ((values: any) => {\n setvisibleCreateRelationEntity(false);\n customCreateHandler(values)\n }),\n handlePopupClose: (() => {\n setvisibleCreateRelationEntity(false);\n }),\n }\n return (\n <div>\n <div>\n <Button\n icon=\"pi pi-plus\"\n rounded\n outlined\n aria-label=\"Filter\"\n type=\"button\"\n size=\"small\"\n onClick={() => setvisibleCreateRelationEntity(true)}\n className=\"custom-add-button\"\n />\n </div>\n <Dialog\n header=\"\"\n showHeader={false}\n visible={visibleCreateRelationEntity}\n style={{\n width: fieldLayoutInfo?.attrs?.inlineCreateLayout?.attrs?.width ?? \"60vw\",\n height: fieldLayoutInfo?.attrs?.inlineCreateLayout?.attrs?.height ?? \"auto\"\n }}\n onHide={() => {\n if (!visibleCreateRelationEntity) return;\n setvisibleCreateRelationEntity(false);\n }}\n className=\"solid-dialog\"\n breakpoints={{ '1199px': '35rem', \"767px\": '85vw', \"550px\": '90vw' }}\n\n >\n <SolidFormView {...params} />\n\n </Dialog>\n </div>\n )\n}\n\n\nexport const DefaultRelationManyToOneFormViewWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {\n\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const value = formik.values[fieldLayoutInfo.attrs.name];\n const userKeyField = fieldLayoutInfo?.attrs?.coModelFieldToDisplay ? fieldLayoutInfo?.attrs?.coModelFieldToDisplay : fieldMetadata?.relationModel?.userKeyField?.name;\n const displayValue = value?.[userKeyField];\n return (\n <div className=\"mt-2 flex-column gap-2\">\n {showFieldLabel !== false && (\n <p className=\"m-0 form-field-label font-medium\">{fieldLabel}</p>\n )}\n <p className=\"m-0\">{displayValue}</p>\n </div>\n );\n}\n\n\n\n\n\nexport const PseudoRelationManyToOneFormWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {\n const dispatch = useDispatch();\n\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const solidFormViewMetaData = fieldContext.solidFormViewMetaData;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const readOnlyPermission = fieldContext.readOnly ? fieldContext.readOnly : false;\n\n const parentModelName = fieldLayoutInfo?.attrs?.parentModelName;\n const childModelName = fieldLayoutInfo?.attrs?.childModelName;\n const parentFieldName = fieldLayoutInfo?.attrs?.parentFieldName;\n const childFieldName = fieldLayoutInfo?.attrs?.childFieldName;\n const parentModuleName = fieldLayoutInfo?.attrs?.parentModuleName;\n const parentFieldLabels = fieldLayoutInfo?.attrs?.parentFieldLabels;\n const parentSearchFields = fieldLayoutInfo?.attrs?.parentSearchFields;\n\n const [formViewParams, setformViewParams] = useState<FormViewParams>()\n\n const viewMode: string = fieldContext.viewMode;\n\n useEffect(() => {\n const formviewparams: FormViewParams = {\n moduleName: parentModuleName,\n modelName: camelCase(parentModelName),\n id: \"new\",\n embeded: true,\n inlineCreateAutoSave: fieldLayoutInfo?.attrs?.inlineCreateAutoSave,\n layout: fieldLayoutInfo?.attrs?.inlineCreateLayout\n }\n setformViewParams(formviewparams);\n }, [])\n\n\n const [visibleCreateRelationEntity, setvisibleCreateRelationEntity] = useState(false);\n // auto complete specific code. \n const entityApi = createSolidEntityApi(parentModelName || \"userViewMetadata\");\n const { useLazyGetSolidEntitiesQuery } = entityApi;\n const [triggerGetSolidEntities] = useLazyGetSolidEntitiesQuery();\n\n const fieldDisabled = fieldLayoutInfo.attrs?.disabled;\n const fieldReadonly = fieldLayoutInfo.attrs?.readonly;\n\n const formDisabled = solidFormViewMetaData.data.solidView?.layout?.attrs?.disabled;\n const formReadonly = solidFormViewMetaData.data.solidView?.layout?.attrs?.readonly;\n const whereClause = fieldLayoutInfo.attrs.whereClause;\n\n const [autoCompleteItems, setAutoCompleteItems] = useState<any[]>([]);\n const [offset, setOffset] = useState(0);\n const [hasMore, setHasMore] = useState(true);\n const [currentQuery, setCurrentQuery] = useState(\"\");\n const LIMIT = 50;\n const [loading, setLoading] = useState(false);\n const [viewDisplayValue, setViewDisplayValue] = useState<any>(null);\n\n\n useEffect(() => {\n const fn = async () => {\n if (fieldContext.data[fieldLayoutInfo.attrs.name]) {\n const queryData = {\n offset: 0,\n limit: LIMIT,\n filters: {\n $and: [\n {\n [parentFieldName]: {\n [fieldLayoutInfo?.attrs?.autocompleteMatchMode || '$eqi']: fieldContext.data[fieldLayoutInfo.attrs.name] ?? formik.values[fieldLayoutInfo.attrs.name]\n }\n }\n ]\n }\n };\n let autocompleteQs = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n const autocompleteResponse = await triggerGetSolidEntities(autocompleteQs);\n // TODO: if no data found then can we show no matching \"entities\", where entities can be replaced with the model plural name,\n const autocompleteData = autocompleteResponse.data;\n if (autocompleteData) {\n const formattedRecords = autocompleteData.records.map((item: any) => {\n const label = parentFieldLabels && parentFieldLabels.length > 0 ? parentFieldLabels.map((label: any) => item[label]).join(\" - \") : item[parentFieldName];\n return {\n solidManyToOneLabel: label,\n solidManyToOneValue: item[parentFieldName],\n ...item,\n }\n });\n if (formattedRecords.length > 0) {\n formik.setFieldValue(fieldLayoutInfo.attrs.name, formattedRecords[0]);\n }\n }\n }\n }\n fn()\n }, [])\n\n // Add this NEW useEffect - only for view mode refresh\n useEffect(() => {\n const fn = async () => {\n if (viewMode !== \"view\") {\n setViewDisplayValue(null);\n return;\n }\n\n const rawValue =\n fieldContext.data[fieldLayoutInfo.attrs.name] ??\n formik.values[fieldLayoutInfo.attrs.name];\n\n if (!rawValue) return;\n\n const searchValue =\n typeof rawValue === \"object\"\n ? rawValue[parentFieldName]\n : rawValue;\n\n const queryData = {\n offset: 0,\n limit: 1,\n filters: {\n $and: [\n {\n [parentFieldName]: {\n [fieldLayoutInfo?.attrs?.autocompleteMatchMode || \"$eqi\"]:\n searchValue,\n },\n },\n ],\n },\n };\n\n const qsStr = qs.stringify(queryData, { encodeValuesOnly: true });\n const res = await triggerGetSolidEntities(qsStr);\n const record = res.data?.records?.[0];\n if (!record) return;\n\n const label =\n parentFieldLabels?.length > 0\n ? parentFieldLabels.map((l: string) => record[l]).join(\" - \")\n : record[parentFieldName];\n console.log(\"Final View Label\", label, record[parentFieldName])\n setViewDisplayValue({\n solidManyToOneLabel: label,\n solidManyToOneValue: record[parentFieldName],\n ...record,\n });\n };\n\n fn();\n }, [viewMode, formik.values[fieldLayoutInfo.attrs.name]]);\n\n\n const resolvedValue = viewMode === \"view\" ? viewDisplayValue : formik.values[fieldLayoutInfo.attrs.name];\n\n const autoCompleteSearch = async (event: AutoCompleteCompleteEvent) => {\n setOffset(0);\n setCurrentQuery(event.query || \"\");\n setHasMore(true);\n // Get the list view layout & metadata first. \n const queryData = {\n offset: 0,\n limit: LIMIT,\n filters: {\n $and: [\n ...(parentSearchFields?.length > 0\n ? [\n {\n $or: parentSearchFields.map((field: any) => ({\n [field]: {\n [fieldLayoutInfo?.attrs?.autocompleteMatchMode || '$containsi']:\n event.query\n }\n }))\n }\n ]\n : [\n {\n [parentFieldName]: {\n [fieldLayoutInfo?.attrs?.autocompleteMatchMode || '$containsi']:\n event.query\n }\n }\n ])\n\n ]\n }\n };\n let fixedFilterToBeApplied = false;\n let fixedFilterParsed = false;\n if (solidFormViewMetaData?.data?.solidView?.model?.singularName === \"listOfValues\" && fieldContext.fieldMetadata.relationCoModelSingularName !== \"moduleMetadata\") {\n fixedFilterToBeApplied = true;\n }\n if (fieldMetadata?.relationFieldFixedFilter || fieldLayoutInfo?.attrs?.whereClause) {\n const convertedFixedFilter = fieldLayoutInfo?.attrs?.whereClause ? fieldLayoutInfo?.attrs?.whereClause : fieldMetadata?.relationFieldFixedFilter;\n fixedFilterToBeApplied = true;\n const fixedFilterTemplate = Handlebars.compile(convertedFixedFilter);\n const renderedFilter = fixedFilterTemplate(formik.values);\n\n // Parse the result into a JS object\n let parsedFilter;\n try {\n parsedFilter = JSON.parse(renderedFilter);\n const isValid = (obj: any): boolean => {\n if (!obj || typeof obj !== 'object') return false;\n\n // Recursively check all nested values\n const hasValidValue = (val: any): boolean => {\n if (val === null || val === undefined || val === '') return false;\n if (typeof val === 'object') {\n return Object.values(val).some(hasValidValue);\n }\n return true;\n };\n\n return hasValidValue(obj);\n };\n\n if (isValid(parsedFilter)) {\n queryData.filters.$and.push(parsedFilter);\n fixedFilterParsed = true;\n } else {\n console.warn(ERROR_MESSAGES.SKIPPING_EMPTY_FIXED_FILTER, parsedFilter);\n }\n } catch (e) {\n console.error(ERROR_MESSAGES.INVALID_JSON_WHERECLAUSE, renderedFilter);\n parsedFilter = {}; // fallback or throw error as needed\n }\n\n }\n\n let autocompleteQs = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n // if (whereClause) {\n // autocompleteQs = `${autocompleteQs}&${whereClause}`;\n // }\n\n\n if (fixedFilterToBeApplied && !fixedFilterParsed) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.SELECT_RELEVANT_FIELD, detail: ERROR_MESSAGES.FIELD_NOT_SELECT }));\n\n } else {\n try {\n setLoading(true);\n // TODO: do error handling here, possible errors like modelname is incorrect etc...\n const autocompleteResponse = await triggerGetSolidEntities(autocompleteQs);\n\n // TODO: if no data found then can we show no matching \"entities\", where entities can be replaced with the model plural name,\n const autocompleteData = autocompleteResponse.data;\n\n if (autocompleteData) {\n const autoCompleteItems = autocompleteData.records.map((item: any) => {\n const label = parentFieldLabels && parentFieldLabels.length > 0 ? parentFieldLabels.map((label: any) => item[label]).join(\" - \") : item[parentFieldName];\n return {\n solidManyToOneLabel: label,\n solidManyToOneValue: item[parentFieldName],\n ...item,\n }\n });\n // const autoCompleteItems = autocompleteData.records.map((item: any) => {label: item[parentFieldName],value});\n\n setAutoCompleteItems(autoCompleteItems);\n setOffset(autocompleteData.records.length);\n setHasMore(autocompleteData.records.length === LIMIT);\n }\n }\n finally {\n setLoading(false);\n }\n }\n }\n\n const onLazyLoad = async (event: { first: number; last: number }) => {\n if (!hasMore || loading) return;\n if (event.last < autoCompleteItems.length - 1) return; // Only load if user reaches bottom\n\n const queryData = {\n offset: offset,\n limit: LIMIT,\n filters: {\n $and: [\n ...(parentSearchFields?.length > 0\n ? [\n {\n $or: parentSearchFields.map((field: any) => ({\n [field]: {\n [fieldLayoutInfo?.attrs?.autocompleteMatchMode || '$containsi']:\n currentQuery\n }\n }))\n }\n ]\n : [\n {\n [parentFieldName]: {\n [fieldLayoutInfo?.attrs?.autocompleteMatchMode || '$containsi']:\n currentQuery\n }\n }\n ])\n\n ]\n }\n };\n\n let fixedFilterToBeApplied = false;\n let fixedFilterParsed = false;\n if (solidFormViewMetaData?.data?.solidView?.model?.singularName === \"listOfValues\" && fieldContext.fieldMetadata.relationCoModelSingularName !== \"moduleMetadata\") {\n fixedFilterToBeApplied = true;\n }\n if (fieldMetadata?.relationFieldFixedFilter || fieldLayoutInfo?.attrs?.whereClause) {\n const convertedFixedFilter = fieldLayoutInfo?.attrs?.whereClause ? fieldLayoutInfo?.attrs?.whereClause : fieldMetadata?.relationFieldFixedFilter;\n fixedFilterToBeApplied = true;\n const fixedFilterTemplate = Handlebars.compile(convertedFixedFilter);\n const renderedFilter = fixedFilterTemplate(formik.values);\n\n // Parse the result into a JS object\n let parsedFilter;\n try {\n parsedFilter = JSON.parse(renderedFilter);\n const isValid = (obj: any): boolean => {\n if (!obj || typeof obj !== 'object') return false;\n\n // Recursively check all nested values\n const hasValidValue = (val: any): boolean => {\n if (val === null || val === undefined || val === '') return false;\n if (typeof val === 'object') {\n return Object.values(val).some(hasValidValue);\n }\n return true;\n };\n\n return hasValidValue(obj);\n };\n\n if (isValid(parsedFilter)) {\n queryData.filters.$and.push(parsedFilter);\n fixedFilterParsed = true;\n } else {\n console.warn(ERROR_MESSAGES.SKIPPING_EMPTY_FIXED_FILTER, parsedFilter);\n }\n } catch (e) {\n console.error(ERROR_MESSAGES.INVALID_JSON_WHERECLAUSE, renderedFilter);\n parsedFilter = {}; // fallback or throw error as needed\n }\n\n }\n\n const autocompleteQs = qs.stringify(queryData, { encodeValuesOnly: true });\n if (fixedFilterToBeApplied && !fixedFilterParsed) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.SELECT_RELEVANT_FIELD, detail: ERROR_MESSAGES.FIELD_NOT_SELECT }));\n\n } else {\n try {\n setLoading(true);\n const response = await triggerGetSolidEntities(autocompleteQs);\n const records = response.data?.records || [];\n if (records.length < LIMIT) setHasMore(false);\n setAutoCompleteItems((prev: any) => [...prev, ...records.map((item: any) => {\n const label = parentFieldLabels && parentFieldLabels.length > 0 ? parentFieldLabels.map((label: any) => item[label]).join(\" - \") : item[parentFieldName];\n return {\n solidManyToOneLabel: label,\n solidManyToOneValue: item[parentFieldName],\n ...item\n }\n }\n )]);\n setOffset((prev: any) => prev + records.length);\n } finally {\n setLoading(false);\n }\n }\n };\n\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n\n const customCreateHandler = (values: any) => {\n const currentRelationData = formik.values[fieldLayoutInfo.attrs.name] || [];\n const jsonValues = Object.fromEntries(values.entries());\n console.log(\"jsonValues\", jsonValues);\n const label = parentFieldLabels && parentFieldLabels.length > 0 ? parentFieldLabels.map((label: any) => jsonValues[label]).join(\" - \") : jsonValues[parentFieldName];\n\n const updatedRelationData = [\n ...currentRelationData,\n // jsonValues[parentFieldName]\n {\n solidManyToOneLabel: label,\n solidManyToOneValue: \"new\",\n original: jsonValues,\n },\n ];\n\n formik.setFieldValue(fieldLayoutInfo.attrs.name, updatedRelationData);\n\n }\n return (\n <div className=\"relative\" >\n < div className=\"flex flex-column gap-2 mt-1 sm:mt-2 md:mt-3 lg:mt-4\" >\n {showFieldLabel != false &&\n <label htmlFor={fieldLayoutInfo.attrs.name} className=\"form-field-label\" >\n {fieldLabel}\n {fieldMetadata.required && <span className=\"text-red-500\" > * </span>}\n <SolidFieldTooltip fieldContext={fieldContext} />\n </label>\n }\n <div className=\"flex align-items-center gap-3\" >\n <AutoComplete\n readOnly={formReadonly || fieldReadonly || readOnlyPermission}\n disabled={formDisabled || fieldDisabled || readOnlyPermission || viewMode === \"view\"}\n field=\"solidManyToOneLabel\"\n {...formik.getFieldProps(fieldLayoutInfo.attrs.name)}\n id={fieldLayoutInfo.attrs.name}\n value={resolvedValue || null}\n dropdown={!readOnlyPermission}\n suggestions={autoCompleteItems}\n completeMethod={autoCompleteSearch}\n onChange={(e) => fieldContext.onChange(e, 'onFieldChange')}\n onFocus={(e) => e.target.select()}\n className=\"w-full solid-standard-autocomplete\"\n // virtualScrollerOptions={{\n // itemSize: 38,\n // lazy: true,\n // onLazyLoad\n // }}\n virtualScrollerOptions={getVirtualScrollerOptions({\n itemsLength: autoCompleteItems.length,\n lazy: true,\n onLazyLoad,\n })}\n />\n {\n fieldLayoutInfo.attrs.inlineCreate === \"true\" && readOnlyPermission === false && formViewParams && viewMode !== \"view\" &&\n <RenderSolidFormEmbededView formik={formik} fieldContext={fieldContext} customCreateHandler={customCreateHandler} visibleCreateRelationEntity={visibleCreateRelationEntity} setvisibleCreateRelationEntity={setvisibleCreateRelationEntity} formViewParams={formViewParams} > </RenderSolidFormEmbededView>\n }\n </div>\n </div>\n {\n isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (\n <div className=\"absolute mt-1\" >\n <Message severity=\"error\" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />\n </div>\n )\n }\n </div>\n );\n}\n\n"]}
|