@argusoft/medplat-core 1.0.28 → 1.0.30
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/AccessRights-xrday-L1.js +1023 -0
- package/dist/AccessRights-xrday-L1.js.map +1 -0
- package/dist/AddEditQueryBuilder-D-iQiVIe.js +365 -0
- package/dist/AddEditQueryBuilder-D-iQiVIe.js.map +1 -0
- package/dist/{AddFeatures-C0Z29oSd.js → AddFeatures-D1sU8RjY.js} +2 -2
- package/dist/{AddFeatures-C0Z29oSd.js.map → AddFeatures-D1sU8RjY.js.map} +1 -1
- package/dist/AddLabelModal-Bq-wRqv9.js +631 -0
- package/dist/AddLabelModal-Bq-wRqv9.js.map +1 -0
- package/dist/AddMenuConfiguration-e5BVXhmw.js +8547 -0
- package/dist/AddMenuConfiguration-e5BVXhmw.js.map +1 -0
- package/dist/{AddRoleDrawer-CQdzQZLb.js → AddRoleDrawer-0gqAK8N0.js} +62 -63
- package/dist/AddRoleDrawer-0gqAK8N0.js.map +1 -0
- package/dist/AppModal-CCtrQ5Tr.js +394 -0
- package/dist/AppModal-CCtrQ5Tr.js.map +1 -0
- package/dist/BrandsPage-DmRW5bhm-Bk1szrjI.js +387 -0
- package/dist/BrandsPage-DmRW5bhm-Bk1szrjI.js.map +1 -0
- package/dist/CategoriesPage-BsS5IQh3-B03lWRY5.js +391 -0
- package/dist/CategoriesPage-BsS5IQh3-B03lWRY5.js.map +1 -0
- package/dist/{ChangePasswordModalCore-CDxkeIIM.js → ChangePasswordModalCore-BPsJquTS.js} +1606 -1611
- package/dist/ChangePasswordModalCore-BPsJquTS.js.map +1 -0
- package/dist/{ConditionConfig-DSsgGEXS.js → ConditionConfig-Ddz9halE.js} +2 -2
- package/dist/ConditionConfig-Ddz9halE.js.map +1 -0
- package/dist/DashboardPage-C3bKc5na-sBd9Yqbi.js +435 -0
- package/dist/DashboardPage-C3bKc5na-sBd9Yqbi.js.map +1 -0
- package/dist/{EntityManagement-GaYsBTvf.js → EntityManagement-CPQL6qBj.js} +2 -2
- package/dist/{EntityManagement-GaYsBTvf.js.map → EntityManagement-CPQL6qBj.js.map} +1 -1
- package/dist/EventConfig-BmLemzX3.js +26 -0
- package/dist/EventConfig-BmLemzX3.js.map +1 -0
- package/dist/{EventConfigurations-kNtAj_WM.js → EventConfigurations-Bzh1qWXU.js} +31 -30
- package/dist/{EventConfigurations-kNtAj_WM.js.map → EventConfigurations-Bzh1qWXU.js.map} +1 -1
- package/dist/{EventsExceptionModal-D4Bf1ilS.js → EventsExceptionModal-B2SRrnB1.js} +2 -2
- package/dist/{EventsExceptionModal-D4Bf1ilS.js.map → EventsExceptionModal-B2SRrnB1.js.map} +1 -1
- package/dist/EventsSkeleton-BIcPks4T.js +61 -0
- package/dist/EventsSkeleton-BIcPks4T.js.map +1 -0
- package/dist/FacilityPicker-BiZeupmP-CyPHmj6b.js +79 -0
- package/dist/FacilityPicker-BiZeupmP-CyPHmj6b.js.map +1 -0
- package/dist/FeatureMenu-DYJmDt7q.js +521 -0
- package/dist/FeatureMenu-DYJmDt7q.js.map +1 -0
- package/dist/Features-Dne21RWu.js +14 -0
- package/dist/Features-Dne21RWu.js.map +1 -0
- package/dist/{FhirServerList-Dkq7Kbes.js → FhirServerList-DuTwnngN.js} +19 -19
- package/dist/{FhirServerList-Dkq7Kbes.js.map → FhirServerList-DuTwnngN.js.map} +1 -1
- package/dist/{FhirServerWizard-Db6Hm4bQ.js → FhirServerWizard-DZI8Olku.js} +15 -15
- package/dist/{FhirServerWizard-Db6Hm4bQ.js.map → FhirServerWizard-DZI8Olku.js.map} +1 -1
- package/dist/FlywayQuery-CQygj51V.js +179 -0
- package/dist/FlywayQuery-CQygj51V.js.map +1 -0
- package/dist/{ManageNotification-CaBAOhji.js → Google-DQxMfbaL.js} +1725 -2652
- package/dist/{ManageNotification-CaBAOhji.js.map → Google-DQxMfbaL.js.map} +1 -1
- package/dist/GrantPermissionModal-BDN66Atn.js +236 -0
- package/dist/GrantPermissionModal-BDN66Atn.js.map +1 -0
- package/dist/ImmunizationConfigurationBase-Di1KO3oW.js +7639 -0
- package/dist/ImmunizationConfigurationBase-Di1KO3oW.js.map +1 -0
- package/dist/ImmunizationConfigurationBase.css +1 -1
- package/dist/ImmunizationConfigurationsList-TZcLDEci.js +369 -0
- package/dist/ImmunizationConfigurationsList-TZcLDEci.js.map +1 -0
- package/dist/InventoryPage-C_AxSy7A-QLvlL4rE.js +665 -0
- package/dist/InventoryPage-C_AxSy7A-QLvlL4rE.js.map +1 -0
- package/dist/LanguagesModal-B3NTebYT.js +352 -0
- package/dist/LanguagesModal-B3NTebYT.js.map +1 -0
- package/dist/ManageDynamicFeature-BU0I45dd.js +4475 -0
- package/dist/ManageDynamicFeature-BU0I45dd.js.map +1 -0
- package/dist/{ManageEventConfiguration-DV3I5POA.js → ManageEventConfiguration-CoYcpjR9.js} +465 -397
- package/dist/ManageEventConfiguration-CoYcpjR9.js.map +1 -0
- package/dist/ManageNotification-C5MhV77Q.js +934 -0
- package/dist/ManageNotification-C5MhV77Q.js.map +1 -0
- package/dist/{ManageRole-CGYfglpo.js → ManageRole-CNZBRKGU.js} +32 -30
- package/dist/ManageRole-CNZBRKGU.js.map +1 -0
- package/dist/ManageTranslation-vRiptUAP.js +833 -0
- package/dist/ManageTranslation-vRiptUAP.js.map +1 -0
- package/dist/ManageTranslation.css +1 -1
- package/dist/{ManageUser-AY1EUDLI.js → ManageUser-DCFkUMV9.js} +1722 -1586
- package/dist/ManageUser-DCFkUMV9.js.map +1 -0
- package/dist/MemberProfileCard-BdUNgHRB-VywqQdFF.js +272 -0
- package/dist/MemberProfileCard-BdUNgHRB-VywqQdFF.js.map +1 -0
- package/dist/MobileAnalytics-pQoE8cG1.js +16888 -0
- package/dist/MobileAnalytics-pQoE8cG1.js.map +1 -0
- package/dist/MobileMenuManagement-Cf8IZlla.js +108 -0
- package/dist/MobileMenuManagement-Cf8IZlla.js.map +1 -0
- package/dist/{MobileTypeEventConfigModal-BxLympIO.js → MobileTypeEventConfigModal-BeveaX0C.js} +2 -2
- package/dist/MobileTypeEventConfigModal-BeveaX0C.js.map +1 -0
- package/dist/NotificationFlywayQuery-BAHVjf6N.js +247 -0
- package/dist/NotificationFlywayQuery-BAHVjf6N.js.map +1 -0
- package/dist/{NotificationList-C3Vb_jKU.js → NotificationList-DEyRZEuM.js} +109 -110
- package/dist/NotificationList-DEyRZEuM.js.map +1 -0
- package/dist/{OtherTypeEventConfigModal-BeG1GrUi.js → OtherTypeEventConfigModal-CM6VkdmY.js} +570 -478
- package/dist/OtherTypeEventConfigModal-CM6VkdmY.js.map +1 -0
- package/dist/PaymentCreatePage-CIVe0P0p-25BQVpOX.js +482 -0
- package/dist/PaymentCreatePage-CIVe0P0p-25BQVpOX.js.map +1 -0
- package/dist/PaymentsPage-BvPe5Q9F-D2gfziwW.js +157 -0
- package/dist/PaymentsPage-BvPe5Q9F-D2gfziwW.js.map +1 -0
- package/dist/PermissionsModal-CCYkcKlC.js +151 -0
- package/dist/PermissionsModal-CCYkcKlC.js.map +1 -0
- package/dist/PickupBatchLinesEditor-DHmcAG23-DL2p6IKJ.js +119 -0
- package/dist/PickupBatchLinesEditor-DHmcAG23-DL2p6IKJ.js.map +1 -0
- package/dist/PickupCreatePage-CB0Sl0Hb-Mmj7zESG.js +783 -0
- package/dist/PickupCreatePage-CB0Sl0Hb-Mmj7zESG.js.map +1 -0
- package/dist/PickupsPage-Ctpghavs-CUp4uIZq.js +818 -0
- package/dist/PickupsPage-Ctpghavs-CUp4uIZq.js.map +1 -0
- package/dist/PmGuard-b10TGXEi-G3N0G_Wg.js +599 -0
- package/dist/PmGuard-b10TGXEi-G3N0G_Wg.js.map +1 -0
- package/dist/ProductEditPage-C1thoKHu-URQaZ6st.js +1302 -0
- package/dist/ProductEditPage-C1thoKHu-URQaZ6st.js.map +1 -0
- package/dist/ProductsPage-CupVmOD4-D45a_hf-.js +252 -0
- package/dist/ProductsPage-CupVmOD4-D45a_hf-.js.map +1 -0
- package/dist/PurchaseCreatePage-YD3NmhPQ-2j4etSjM.js +648 -0
- package/dist/PurchaseCreatePage-YD3NmhPQ-2j4etSjM.js.map +1 -0
- package/dist/PurchaseRequestDetailPage-Dg_MRY_N-D1bgTEAn.js +1577 -0
- package/dist/PurchaseRequestDetailPage-Dg_MRY_N-D1bgTEAn.js.map +1 -0
- package/dist/PurchaseRequestsPage-DPAPzpmm-mDH2IrTl.js +279 -0
- package/dist/PurchaseRequestsPage-DPAPzpmm-mDH2IrTl.js.map +1 -0
- package/dist/PurchasesPage-It1GHiXl-eH4IsF_U.js +293 -0
- package/dist/PurchasesPage-It1GHiXl-eH4IsF_U.js.map +1 -0
- package/dist/QueryBuilder-CXaBe6sr.js +478 -0
- package/dist/QueryBuilder-CXaBe6sr.js.map +1 -0
- package/dist/{RoleManagement-BPl2cE27.js → RoleManagement-s8iNx2Mu.js} +131 -142
- package/dist/RoleManagement-s8iNx2Mu.js.map +1 -0
- package/dist/Roles-BIyiic67.js +14 -0
- package/dist/Roles-BIyiic67.js.map +1 -0
- package/dist/SaleCreatePage-C9kFmTvm-B3Y0o4CX.js +544 -0
- package/dist/SaleCreatePage-C9kFmTvm-B3Y0o4CX.js.map +1 -0
- package/dist/SalesPage-D18DCseD-BxktGDRQ.js +315 -0
- package/dist/SalesPage-D18DCseD-BxktGDRQ.js.map +1 -0
- package/dist/{ServerSyncModal-D_oFpv3C.js → ServerSyncModal-92U3xtqI.js} +84 -85
- package/dist/ServerSyncModal-92U3xtqI.js.map +1 -0
- package/dist/SettingsPage-VsxI-ano-DcmtUUEj.js +747 -0
- package/dist/SettingsPage-VsxI-ano-DcmtUUEj.js.map +1 -0
- package/dist/ShowFlywayQuery-D10Olk5Z.js +154 -0
- package/dist/ShowFlywayQuery-D10Olk5Z.js.map +1 -0
- package/dist/{ShowFlywayQuery-DVRCd384.js → ShowFlywayQuery-D1y_4A1u.js} +161 -121
- package/dist/ShowFlywayQuery-D1y_4A1u.js.map +1 -0
- package/dist/ShowQueryHistory-DRBKYDKk.js +313 -0
- package/dist/ShowQueryHistory-DRBKYDKk.js.map +1 -0
- package/dist/StorageUnitsPage-7EqwuMOI-BwUso1Th.js +721 -0
- package/dist/StorageUnitsPage-7EqwuMOI-BwUso1Th.js.map +1 -0
- package/dist/SubMenu-eEDhZUvh.js +317 -0
- package/dist/SubMenu-eEDhZUvh.js.map +1 -0
- package/dist/{TableDetails-Cf_YfnY2.js → TableDetails-BtafRxXb.js} +1069 -831
- package/dist/TableDetails-BtafRxXb.js.map +1 -0
- package/dist/{TableList-D6jnIbnz.js → TableList-Dpo6dO7S.js} +2 -2
- package/dist/{TableList-D6jnIbnz.js.map → TableList-Dpo6dO7S.js.map} +1 -1
- package/dist/TransactionsPage-DrH53pVS-BkhIGB6C.js +746 -0
- package/dist/TransactionsPage-DrH53pVS-BkhIGB6C.js.map +1 -0
- package/dist/TransferCreatePage-CuvoMrYH-DTTfHjz-.js +315 -0
- package/dist/TransferCreatePage-CuvoMrYH-DTTfHjz-.js.map +1 -0
- package/dist/TransfersPage-Cf701t8s-BBbN7cBf.js +476 -0
- package/dist/TransfersPage-Cf701t8s-BBbN7cBf.js.map +1 -0
- package/dist/{TypeConfiguration-37wp-gsl.js → TypeConfiguration-3O6ABrK-.js} +2 -2
- package/dist/{TypeConfiguration-37wp-gsl.js.map → TypeConfiguration-3O6ABrK-.js.map} +1 -1
- package/dist/{UserList-Bc8gYxRL.js → UserList-DgPxsnj2.js} +253 -236
- package/dist/{UserList-Bc8gYxRL.js.map → UserList-DgPxsnj2.js.map} +1 -1
- package/dist/Users-Bpc4Sazd.js +41 -0
- package/dist/Users-Bpc4Sazd.js.map +1 -0
- package/dist/VialsPage-8oAc1yFv-Cl3FUXBJ.js +321 -0
- package/dist/VialsPage-8oAc1yFv-Cl3FUXBJ.js.map +1 -0
- package/dist/{WidgetList-Dw_FmbbE.js → WidgetList-D7YuWfDD.js} +2 -2
- package/dist/{WidgetList-Dw_FmbbE.js.map → WidgetList-D7YuWfDD.js.map} +1 -1
- package/dist/constants-ClZJY2x1-MkSWn6TZ.js +434 -0
- package/dist/constants-ClZJY2x1-MkSWn6TZ.js.map +1 -0
- package/dist/dashboardLayoutUtils-D1xCAxp3.js +405 -0
- package/dist/dashboardLayoutUtils-D1xCAxp3.js.map +1 -0
- package/dist/format-UOyOu75i-D0GyylyQ.js +63 -0
- package/dist/format-UOyOu75i-D0GyylyQ.js.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.js +4 -752
- package/dist/index.js.map +1 -1
- package/dist/index.lib-Dn8PMkeD.js +862 -0
- package/dist/index.lib-Dn8PMkeD.js.map +1 -0
- package/dist/useFieldErrors-hDG8ox_x-DbSAzrGo.js +28 -0
- package/dist/useFieldErrors-hDG8ox_x-DbSAzrGo.js.map +1 -0
- package/dist/validation-BzlHnL-r-CCJm2utQ.js +125 -0
- package/dist/validation-BzlHnL-r-CCJm2utQ.js.map +1 -0
- package/package.json +5 -4
- package/dist/AccessRights-CHu27ZOw.js +0 -1262
- package/dist/AccessRights-CHu27ZOw.js.map +0 -1
- package/dist/AddEditQueryBuilder-Brdnm6rQ.js +0 -313
- package/dist/AddEditQueryBuilder-Brdnm6rQ.js.map +0 -1
- package/dist/AddLabelModal-DFllBVcd.js +0 -734
- package/dist/AddLabelModal-DFllBVcd.js.map +0 -1
- package/dist/AddMenuConfiguration-BSQLl88V.js +0 -6570
- package/dist/AddMenuConfiguration-BSQLl88V.js.map +0 -1
- package/dist/AddRoleDrawer-CQdzQZLb.js.map +0 -1
- package/dist/AppModal-CtG2GjD_.js +0 -428
- package/dist/AppModal-CtG2GjD_.js.map +0 -1
- package/dist/ChangePasswordModalCore-CDxkeIIM.js.map +0 -1
- package/dist/ConditionConfig-DSsgGEXS.js.map +0 -1
- package/dist/EventsSkeleton-8iiETGcf.js +0 -76
- package/dist/EventsSkeleton-8iiETGcf.js.map +0 -1
- package/dist/FeatureMenu-jl7-Tk6y.js +0 -265
- package/dist/FeatureMenu-jl7-Tk6y.js.map +0 -1
- package/dist/Features-CObdzJp_.js +0 -13
- package/dist/Features-CObdzJp_.js.map +0 -1
- package/dist/FlywayQuery-Cx2sly6g.js +0 -169
- package/dist/FlywayQuery-Cx2sly6g.js.map +0 -1
- package/dist/ImmunizationConfigurationBase-DZGqwda2.js +0 -5910
- package/dist/ImmunizationConfigurationBase-DZGqwda2.js.map +0 -1
- package/dist/ImmunizationConfigurationsList-DdSZicTP.js +0 -344
- package/dist/ImmunizationConfigurationsList-DdSZicTP.js.map +0 -1
- package/dist/LanguagesModal-D6VfaGrl.js +0 -394
- package/dist/LanguagesModal-D6VfaGrl.js.map +0 -1
- package/dist/ManageDynamicFeature-BhONvfC_.js +0 -4189
- package/dist/ManageDynamicFeature-BhONvfC_.js.map +0 -1
- package/dist/ManageEventConfiguration-DV3I5POA.js.map +0 -1
- package/dist/ManageRole-CGYfglpo.js.map +0 -1
- package/dist/ManageTranslation-B4C9-lWD.js +0 -625
- package/dist/ManageTranslation-B4C9-lWD.js.map +0 -1
- package/dist/ManageUser-AY1EUDLI.js.map +0 -1
- package/dist/MobileMenuManagement-CVAKyKDa.js +0 -112
- package/dist/MobileMenuManagement-CVAKyKDa.js.map +0 -1
- package/dist/MobileTypeEventConfigModal-BxLympIO.js.map +0 -1
- package/dist/NotificationFlywayQuery-BY8Zzml_.js +0 -244
- package/dist/NotificationFlywayQuery-BY8Zzml_.js.map +0 -1
- package/dist/NotificationList-C3Vb_jKU.js.map +0 -1
- package/dist/OtherTypeEventConfigModal-BeG1GrUi.js.map +0 -1
- package/dist/QueryBuilder-z7eqfd7D.js +0 -383
- package/dist/QueryBuilder-z7eqfd7D.js.map +0 -1
- package/dist/RoleManagement-BPl2cE27.js.map +0 -1
- package/dist/ServerSyncModal-D_oFpv3C.js.map +0 -1
- package/dist/ShowFlywayQuery-DVRCd384.js.map +0 -1
- package/dist/ShowFlywayQuery-tj42YQAS.js +0 -130
- package/dist/ShowFlywayQuery-tj42YQAS.js.map +0 -1
- package/dist/ShowQueryHistory-BDN0tzHg.js +0 -190
- package/dist/ShowQueryHistory-BDN0tzHg.js.map +0 -1
- package/dist/SubMenu-DYxAPH2Z.js +0 -191
- package/dist/SubMenu-DYxAPH2Z.js.map +0 -1
- package/dist/TableDetails-Cf_YfnY2.js.map +0 -1
- package/dist/Users-CsJ08Kjm.js +0 -40
- package/dist/Users-CsJ08Kjm.js.map +0 -1
- package/dist/dashboardLayoutUtils-Bt5HA96J.js +0 -265
- package/dist/dashboardLayoutUtils-Bt5HA96J.js.map +0 -1
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
import { generateUUID as R } from "@/utils/UUIDgenerator";
|
|
2
|
+
import { DASHBOARD_COMPONENT_TYPES as l, DASHBOARD_ROOT_DROP_ZONE as g, DASHBOARD_ALLOWED_CHILDREN as I, DASHBOARD_LAYOUT_STYLE_DEFAULTS as U } from "@/utils/FormConstants";
|
|
3
|
+
const S = (e, t = {}) => ({
|
|
4
|
+
id: `node-${R()}`,
|
|
5
|
+
type: e,
|
|
6
|
+
children: [],
|
|
7
|
+
...U[e] || {},
|
|
8
|
+
...t
|
|
9
|
+
}), q = (e, t) => ({
|
|
10
|
+
id: e.id,
|
|
11
|
+
name: e.name,
|
|
12
|
+
type: l.FEATURE,
|
|
13
|
+
instanceId: `${t || "DASHBOARD"}_${e.id}_${R()}`,
|
|
14
|
+
icon: {
|
|
15
|
+
id: `svg-icon-${e.id}`,
|
|
16
|
+
content: e.icon,
|
|
17
|
+
type: "svg"
|
|
18
|
+
}
|
|
19
|
+
}), F = (e, t) => {
|
|
20
|
+
var i, r, o, s;
|
|
21
|
+
if (!e || e.type !== l.FEATURE_CARD || !t)
|
|
22
|
+
return e;
|
|
23
|
+
const n = t.name || t.menuName || t.title || ((i = t.content) == null ? void 0 : i.title) || "";
|
|
24
|
+
return {
|
|
25
|
+
...e,
|
|
26
|
+
content: {
|
|
27
|
+
...e.content || {},
|
|
28
|
+
title: n,
|
|
29
|
+
subTitle: ""
|
|
30
|
+
},
|
|
31
|
+
icon: {
|
|
32
|
+
icon: "",
|
|
33
|
+
iconsvg: ((r = t.icon) == null ? void 0 : r.content) || ((o = t.icon) == null ? void 0 : o.svg) || ((s = t.icon) == null ? void 0 : s.iconsvg) || ""
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}, K = (e) => {
|
|
37
|
+
var n, i;
|
|
38
|
+
if (!e || e.type !== l.FEATURE_CARD)
|
|
39
|
+
return e;
|
|
40
|
+
const t = ((n = e.cta) == null ? void 0 : n.type) === "BUTTON" ? e.cta : (i = e.cta) != null && i.type ? { type: e.cta.type } : void 0;
|
|
41
|
+
return {
|
|
42
|
+
...e,
|
|
43
|
+
content: {
|
|
44
|
+
...e.content || {},
|
|
45
|
+
title: "",
|
|
46
|
+
subTitle: ""
|
|
47
|
+
},
|
|
48
|
+
icon: {
|
|
49
|
+
icon: "",
|
|
50
|
+
iconsvg: ""
|
|
51
|
+
},
|
|
52
|
+
...t ? { cta: t } : {}
|
|
53
|
+
};
|
|
54
|
+
}, J = (e, t, n = null, i = null) => {
|
|
55
|
+
var c, u, a;
|
|
56
|
+
const r = I[e] || [], o = i || t, s = o === "FEATURE_CARD" ? "Feature Card" : o === "SECTION" ? "Section" : o === "ROW" || o === "COLUMN" ? "Card Stack" : o === "FEATURE" ? "Feature" : o === "SEARCH_BAR" ? "Search Bar" : o === "CAROUSEL" ? "Image Carousel" : o === "DIVIDER" ? "Divider" : o === "TEXT" ? "Text Heading" : o;
|
|
57
|
+
if (n) {
|
|
58
|
+
if (e === l.ROW && ((c = n.style) != null && c.height))
|
|
59
|
+
return `Cannot place ${s} inside a horizontal spacer.`;
|
|
60
|
+
if (e === l.COLUMN && ((u = n.style) != null && u.width))
|
|
61
|
+
return `Cannot place ${s} inside a vertical spacer.`;
|
|
62
|
+
}
|
|
63
|
+
return r.includes(t) ? e === l.FEATURE_CARD && t === l.FEATURE && ((a = n == null ? void 0 : n.children) != null && a.some(
|
|
64
|
+
(E) => E.type === l.FEATURE
|
|
65
|
+
)) ? "A Feature Card can only contain one feature." : e === l.ROW && ((n == null ? void 0 : n.children) || []).length >= 4 ? "This card stack can contain a maximum of 4 items." : e === l.COLUMN && t === l.COLUMN && ((n == null ? void 0 : n.children) || []).filter(
|
|
66
|
+
(E) => E.type === l.COLUMN
|
|
67
|
+
).length >= 4 ? "This container can contain a maximum of 4 items." : "" : t === l.SECTION ? `${s} can only be placed directly inside the layout.` : t === l.DIVIDER ? `${s} can only be placed inside a Section or Card Stack or direcly inside the layout.` : t === l.CAROUSEL ? `${s} can only be placed directly inside the layout.` : t === l.SEARCH_BAR ? `${s} can only be placed directly inside the layout.` : t === l.FEATURE_CARD ? `${s} can only be placed inside a Section or Card Stack.` : t === l.ROW ? `${s} can only be placed inside a Section or directly inside the layout.` : t === l.COLUMN ? `${s} can only be placed inside a Section or directly inside the layout.` : t === l.FEATURE ? `${s} can only be assigned to a Feature Card or Section or card stack.` : t === l.TEXT ? `${s} can only be placed inside a Section or directly inside the layout.` : `${s} cannot be placed in this container.`;
|
|
68
|
+
}, C = (e, t) => {
|
|
69
|
+
for (const n of e || []) {
|
|
70
|
+
if (n.id === t || n.instanceId === t) return n;
|
|
71
|
+
const i = C(n.children, t);
|
|
72
|
+
if (i) return i;
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}, b = (e, t, n = { id: g, type: "HOME", node: null }) => {
|
|
76
|
+
for (const i of e || []) {
|
|
77
|
+
if (i.id === t || i.instanceId === t) return n;
|
|
78
|
+
const r = b(i.children || [], t, {
|
|
79
|
+
id: i.instanceId || i.id,
|
|
80
|
+
type: i.type,
|
|
81
|
+
node: i
|
|
82
|
+
});
|
|
83
|
+
if (r) return r;
|
|
84
|
+
}
|
|
85
|
+
return null;
|
|
86
|
+
}, A = (e, t) => (e || []).map((n) => {
|
|
87
|
+
const i = t(n);
|
|
88
|
+
return i.children ? {
|
|
89
|
+
...i,
|
|
90
|
+
children: A(i.children, t)
|
|
91
|
+
} : i;
|
|
92
|
+
}), _ = (e, t, n) => t === g ? [...e || [], n] : A(e, (i) => {
|
|
93
|
+
if (i.id === t || i.instanceId === t) {
|
|
94
|
+
let r = {
|
|
95
|
+
...i,
|
|
96
|
+
children: [...i.children || [], n]
|
|
97
|
+
};
|
|
98
|
+
return r.type === l.FEATURE_CARD && n.type === l.FEATURE && (r = F(r, n)), r;
|
|
99
|
+
}
|
|
100
|
+
return i;
|
|
101
|
+
}), B = (e, t) => (e || []).filter((n) => n.id !== t && n.instanceId !== t).map((n) => {
|
|
102
|
+
const i = B(n.children, t);
|
|
103
|
+
return {
|
|
104
|
+
...n,
|
|
105
|
+
children: i
|
|
106
|
+
};
|
|
107
|
+
}), Q = (e, t, n) => A(
|
|
108
|
+
e,
|
|
109
|
+
(i) => i.id === t || i.instanceId === t ? n(i) : i
|
|
110
|
+
), tt = (e, t) => {
|
|
111
|
+
const n = (o) => {
|
|
112
|
+
const s = { ...o, id: `node-${R()}` };
|
|
113
|
+
return s.instanceId && (s.instanceId = `DASHBOARD_DUP_${R()}`), s.children && (s.children = s.children.map(n)), s;
|
|
114
|
+
};
|
|
115
|
+
let i = !1;
|
|
116
|
+
const r = (o) => {
|
|
117
|
+
let s = !1;
|
|
118
|
+
const c = [];
|
|
119
|
+
for (const u of o)
|
|
120
|
+
if (c.push(u), !i && (u.id === t || u.instanceId === t))
|
|
121
|
+
i = !0, s = !0, c.push(n(u));
|
|
122
|
+
else if (u.children) {
|
|
123
|
+
const a = r(u.children);
|
|
124
|
+
a !== u.children && (s = !0, c[c.length - 1] = { ...u, children: a });
|
|
125
|
+
}
|
|
126
|
+
return s ? c : o;
|
|
127
|
+
};
|
|
128
|
+
return r(e || []);
|
|
129
|
+
}, et = (e, t) => {
|
|
130
|
+
const n = (i) => {
|
|
131
|
+
const r = i.findIndex((c) => c.id === t || c.instanceId === t);
|
|
132
|
+
if (r > 0) {
|
|
133
|
+
const c = [...i];
|
|
134
|
+
return [c[r - 1], c[r]] = [c[r], c[r - 1]], c;
|
|
135
|
+
}
|
|
136
|
+
let o = !1;
|
|
137
|
+
const s = i.map((c) => {
|
|
138
|
+
if (c.children) {
|
|
139
|
+
const u = n(c.children);
|
|
140
|
+
if (u !== c.children)
|
|
141
|
+
return o = !0, { ...c, children: u };
|
|
142
|
+
}
|
|
143
|
+
return c;
|
|
144
|
+
});
|
|
145
|
+
return o ? s : i;
|
|
146
|
+
};
|
|
147
|
+
return n(e || []);
|
|
148
|
+
}, nt = (e, t) => {
|
|
149
|
+
const n = (i) => {
|
|
150
|
+
const r = i.findIndex((c) => c.id === t || c.instanceId === t);
|
|
151
|
+
if (r >= 0 && r < i.length - 1) {
|
|
152
|
+
const c = [...i];
|
|
153
|
+
return [c[r], c[r + 1]] = [c[r + 1], c[r]], c;
|
|
154
|
+
}
|
|
155
|
+
let o = !1;
|
|
156
|
+
const s = i.map((c) => {
|
|
157
|
+
if (c.children) {
|
|
158
|
+
const u = n(c.children);
|
|
159
|
+
if (u !== c.children)
|
|
160
|
+
return o = !0, { ...c, children: u };
|
|
161
|
+
}
|
|
162
|
+
return c;
|
|
163
|
+
});
|
|
164
|
+
return o ? s : i;
|
|
165
|
+
};
|
|
166
|
+
return n(e || []);
|
|
167
|
+
}, H = (e) => (e == null ? void 0 : e.instanceId) || (e == null ? void 0 : e.id), p = (e, t) => {
|
|
168
|
+
let n = null;
|
|
169
|
+
return { nodes: (e || []).reduce((r, o) => {
|
|
170
|
+
if (o.id === t || o.instanceId === t)
|
|
171
|
+
return n = o, r;
|
|
172
|
+
const s = p(o.children || [], t);
|
|
173
|
+
if (s.removedNode) {
|
|
174
|
+
n = s.removedNode;
|
|
175
|
+
let c = { ...o, children: s.nodes };
|
|
176
|
+
return r.push(c), r;
|
|
177
|
+
}
|
|
178
|
+
return r.push(o), r;
|
|
179
|
+
}, []), removedNode: n };
|
|
180
|
+
}, O = (e, t, n) => {
|
|
181
|
+
let i = !1;
|
|
182
|
+
return { nodes: (e || []).reduce((o, s) => {
|
|
183
|
+
if (s.id === t || s.instanceId === t)
|
|
184
|
+
return o.push(n, s), i = !0, o;
|
|
185
|
+
const c = O(
|
|
186
|
+
s.children || [],
|
|
187
|
+
t,
|
|
188
|
+
n
|
|
189
|
+
);
|
|
190
|
+
return c.didInsert ? (i = !0, o.push({ ...s, children: c.nodes }), o) : (o.push(s), o);
|
|
191
|
+
}, []), didInsert: i };
|
|
192
|
+
}, D = (e, t) => e ? e.id === t || e.instanceId === t ? !0 : (e.children || []).some((n) => D(n, t)) : !1, $ = (e, t) => {
|
|
193
|
+
const n = H(t);
|
|
194
|
+
return A(
|
|
195
|
+
e,
|
|
196
|
+
(i) => i.id === n || i.instanceId === n ? t : i
|
|
197
|
+
);
|
|
198
|
+
}, it = (e, t, n) => {
|
|
199
|
+
const i = O(e, t, n);
|
|
200
|
+
return i.didInsert ? i.nodes : e;
|
|
201
|
+
}, rt = (e, t, n) => {
|
|
202
|
+
const { nodes: i, removedNode: r } = p(
|
|
203
|
+
e,
|
|
204
|
+
t
|
|
205
|
+
);
|
|
206
|
+
return !r || n !== g && D(r, n) ? e : _(i, n, r);
|
|
207
|
+
}, ct = (e, t, n) => {
|
|
208
|
+
if (t === n) return e;
|
|
209
|
+
const i = C(e, t), r = C(e, n);
|
|
210
|
+
if (!i || !r || D(i, n))
|
|
211
|
+
return e;
|
|
212
|
+
const { nodes: o, removedNode: s } = p(
|
|
213
|
+
e,
|
|
214
|
+
t
|
|
215
|
+
);
|
|
216
|
+
if (!s) return e;
|
|
217
|
+
const c = O(o, n, s);
|
|
218
|
+
return c.didInsert ? c.nodes : $(o, i);
|
|
219
|
+
}, M = (e) => {
|
|
220
|
+
var E, f, d;
|
|
221
|
+
if (e.contentLayout) return e;
|
|
222
|
+
const t = ((f = (E = e.style) == null ? void 0 : E.contentAlignment) == null ? void 0 : f.toUpperCase()) || "LEFT", n = ((d = e.style) == null ? void 0 : d.layoutType) === "HORIZONTAL", i = t, r = i === "START" ? "LEFT" : i === "END" ? "RIGHT" : i === "CENTER" ? "CENTER" : "LEFT", o = "MIDDLE", s = {
|
|
223
|
+
ICON: i === "CENTER" || i === "RIGHT" ? { horizontal: r, vertical: o } : { horizontal: "LEFT", vertical: "MIDDLE" },
|
|
224
|
+
TITLE: i === "CENTER" || i === "RIGHT" ? { horizontal: r, vertical: o } : { horizontal: "CENTER", vertical: "MIDDLE" },
|
|
225
|
+
SUBTITLE: i === "CENTER" || i === "RIGHT" ? { horizontal: r, vertical: o } : { horizontal: "LEFT", vertical: "BOTTOM" },
|
|
226
|
+
BUTTON: { horizontal: "RIGHT", vertical: "MIDDLE" }
|
|
227
|
+
}, c = {};
|
|
228
|
+
["ICON", "TITLE", "SUBTITLE", "BUTTON"].forEach((h) => {
|
|
229
|
+
const m = s[h], y = `${m.horizontal}_${m.vertical}`;
|
|
230
|
+
c[y] || (c[y] = {
|
|
231
|
+
position: m,
|
|
232
|
+
items: []
|
|
233
|
+
}), c[y].items.push(h);
|
|
234
|
+
});
|
|
235
|
+
const a = Object.values(c).filter((h) => h.items.length > 0).map((h) => (h.items.length > 1 && (h.alignment = n ? "HORIZONTAL" : "VERTICAL", h.spacing = n ? 12 : 4), h));
|
|
236
|
+
return {
|
|
237
|
+
...e,
|
|
238
|
+
contentLayout: a
|
|
239
|
+
};
|
|
240
|
+
}, z = (e, t) => Array.isArray(e) ? e.map((n) => {
|
|
241
|
+
var o, s;
|
|
242
|
+
if (n.type === l.SECTION && Array.isArray(n.features)) {
|
|
243
|
+
const c = `node-${R()}`;
|
|
244
|
+
return S(l.SECTION, {
|
|
245
|
+
id: c,
|
|
246
|
+
title: n.title || "Section",
|
|
247
|
+
header: {
|
|
248
|
+
...U[l.SECTION].header,
|
|
249
|
+
title: n.title || "Section"
|
|
250
|
+
},
|
|
251
|
+
children: n.features.map((u) => t(u, c)).filter(Boolean)
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
if (n.type === l.FEATURE)
|
|
255
|
+
return t(n, "DASHBOARD");
|
|
256
|
+
if (!n.type) return null;
|
|
257
|
+
const i = z(
|
|
258
|
+
n.children || [],
|
|
259
|
+
t
|
|
260
|
+
);
|
|
261
|
+
let r = S(n.type, {
|
|
262
|
+
...n,
|
|
263
|
+
id: n.id || `node-${R()}`,
|
|
264
|
+
children: i
|
|
265
|
+
});
|
|
266
|
+
if (n.type === l.FEATURE_CARD) {
|
|
267
|
+
const c = (i || []).find(
|
|
268
|
+
(u) => u.type === l.FEATURE
|
|
269
|
+
);
|
|
270
|
+
c && !((o = r.content) != null && o.title) && !((s = r.content) != null && s.customTitle) && (r = F(r, c)), r = M(r);
|
|
271
|
+
}
|
|
272
|
+
return r;
|
|
273
|
+
}).filter(Boolean) : [], w = (e) => ({
|
|
274
|
+
type: l.FEATURE,
|
|
275
|
+
id: e.id,
|
|
276
|
+
menuName: e.name
|
|
277
|
+
}), k = (e) => (e.children || []).find(
|
|
278
|
+
(t) => t.type === l.FEATURE
|
|
279
|
+
), x = (e, t) => String(t || "").trim() || (e == null ? void 0 : e.name) || (e == null ? void 0 : e.menuName) || "", P = (e, t) => String(t || "").trim() || (e == null ? void 0 : e.subTitle) || (e == null ? void 0 : e.subtitle) || "", V = (e, t) => {
|
|
280
|
+
var o, s, c, u;
|
|
281
|
+
const n = ((o = e.icon) == null ? void 0 : o.icon) || ((s = e.icon) == null ? void 0 : s.iconName) || "", i = ((c = e.icon) == null ? void 0 : c.iconsvg) || ((u = e.icon) == null ? void 0 : u.svg) || "";
|
|
282
|
+
if (n) return { icon: n, iconsvg: "" };
|
|
283
|
+
if (i) return { icon: "", iconsvg: i };
|
|
284
|
+
const r = t == null ? void 0 : t.icon;
|
|
285
|
+
if (typeof r == "string") {
|
|
286
|
+
const a = r.trim();
|
|
287
|
+
return a.startsWith("<svg") ? { icon: "", iconsvg: a } : { icon: a, iconsvg: "" };
|
|
288
|
+
}
|
|
289
|
+
return r != null && r.content || r != null && r.iconsvg || r != null && r.svg ? {
|
|
290
|
+
icon: "",
|
|
291
|
+
iconsvg: r.content || r.iconsvg || r.svg
|
|
292
|
+
} : {
|
|
293
|
+
icon: (r == null ? void 0 : r.icon) || (r == null ? void 0 : r.iconName) || "",
|
|
294
|
+
iconsvg: ""
|
|
295
|
+
};
|
|
296
|
+
}, W = (e) => {
|
|
297
|
+
const t = typeof e == "object" && e !== null ? e.action : e;
|
|
298
|
+
if (t === "" || t === null || t === void 0) return "";
|
|
299
|
+
const n = Number(t);
|
|
300
|
+
return Number.isNaN(n) ? t : n;
|
|
301
|
+
}, v = (e = {}) => {
|
|
302
|
+
const t = { ...e };
|
|
303
|
+
return t.type === "GRADIENT" ? (delete t.solidLightModeColor, delete t.solidDarkModeColor, delete t.solidColor) : (delete t.gradientStartColor, delete t.gradientEndColor, delete t.gradientType, delete t.direction, delete t.gradientStartOpacity, delete t.gradientEndOpacity, delete t.solidColor), t;
|
|
304
|
+
}, j = (e) => (e || []).map((t) => {
|
|
305
|
+
var E, f, d, h, m, y, N;
|
|
306
|
+
if (t.type === l.FEATURE)
|
|
307
|
+
return w(t);
|
|
308
|
+
const { id: n, instanceId: i, icon: r, name: o, features: s, title: c, ...u } = t, a = {
|
|
309
|
+
...u,
|
|
310
|
+
children: j(t.children || [])
|
|
311
|
+
};
|
|
312
|
+
if (t.type === l.SECTION && (a.background = v(
|
|
313
|
+
u.background
|
|
314
|
+
), (E = a.header) != null && E.color)) {
|
|
315
|
+
const { color: T, ...L } = a.header;
|
|
316
|
+
a.header = L;
|
|
317
|
+
}
|
|
318
|
+
if (t.type === l.FEATURE_CARD) {
|
|
319
|
+
const T = k(t);
|
|
320
|
+
a.content = {
|
|
321
|
+
...u.content || {},
|
|
322
|
+
title: x(
|
|
323
|
+
T,
|
|
324
|
+
((f = u.content) == null ? void 0 : f.title) || ((d = u.content) == null ? void 0 : d.customTitle)
|
|
325
|
+
),
|
|
326
|
+
subTitle: P(
|
|
327
|
+
T,
|
|
328
|
+
((h = u.content) == null ? void 0 : h.subTitle) || ((m = u.content) == null ? void 0 : m.customSubtitle)
|
|
329
|
+
)
|
|
330
|
+
}, a.icon = V(t, T), a.background = v(
|
|
331
|
+
u.background
|
|
332
|
+
), a.style && (delete a.style.flex, delete a.style.layoutType, delete a.style.contentAlignment), delete a.content.customTitle, delete a.content.customSubtitle, delete a.navigation, ((y = a.cta) == null ? void 0 : y.type) !== "BUTTON" && (a.cta = {
|
|
333
|
+
type: ((N = a.cta) == null ? void 0 : N.type) || (a.showLeadingArrow ? "ARROW" : "NONE")
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
return t.type === l.CAROUSEL && (delete a.children, delete a.navigation, a.images = (t.images || []).map((T) => ({
|
|
337
|
+
...T,
|
|
338
|
+
navigation: W(T.navigation)
|
|
339
|
+
}))), t.type === l.TEXT && delete a.children, [
|
|
340
|
+
l.SEARCH_BAR,
|
|
341
|
+
l.DIVIDER
|
|
342
|
+
].includes(t.type) && delete a.children, t.type === l.DIVIDER && a.style && (delete a.style.color, delete a.style.marginVertical), a;
|
|
343
|
+
}), G = (e) => e ? (Array.isArray(e) ? e : typeof e == "object" ? [e] : []).flatMap((n) => {
|
|
344
|
+
var o;
|
|
345
|
+
if (!n || typeof n != "object") return [];
|
|
346
|
+
if (n.type === l.FEATURE) {
|
|
347
|
+
const s = n.menuName || n.name || n.title || ((o = n.content) == null ? void 0 : o.title);
|
|
348
|
+
return s ? [s] : [];
|
|
349
|
+
}
|
|
350
|
+
const i = n.children || n.features || n.layout || n.tabs || n.menus || (n.type ? [] : Object.values(n)), r = G(i);
|
|
351
|
+
return n.menuName ? [n.menuName, ...r] : r;
|
|
352
|
+
}) : [], Y = /* @__PURE__ */ new Set([
|
|
353
|
+
l.SECTION,
|
|
354
|
+
l.ROW,
|
|
355
|
+
l.COLUMN
|
|
356
|
+
]), st = (e) => {
|
|
357
|
+
const t = [], n = (i) => {
|
|
358
|
+
var r, o, s, c, u, a, E, f;
|
|
359
|
+
for (const d of i || []) {
|
|
360
|
+
if (Y.has(d.type) && !(d.children || []).length) {
|
|
361
|
+
const h = d.type === l.ROW && ((r = d.style) == null ? void 0 : r.height), m = d.type === l.COLUMN && ((o = d.style) == null ? void 0 : o.width);
|
|
362
|
+
!h && !m && t.push(d);
|
|
363
|
+
continue;
|
|
364
|
+
}
|
|
365
|
+
if (d.type === l.FEATURE_CARD) {
|
|
366
|
+
const h = (d.children || []).some(
|
|
367
|
+
(y) => y.type === l.FEATURE
|
|
368
|
+
), m = ((s = d.content) == null ? void 0 : s.customTitle) || ((c = d.content) == null ? void 0 : c.customSubtitle) || ((u = d.content) == null ? void 0 : u.title) || ((a = d.content) == null ? void 0 : a.subTitle) || ((E = d.icon) == null ? void 0 : E.iconsvg) || ((f = d.icon) == null ? void 0 : f.icon);
|
|
369
|
+
if (!h && !m) {
|
|
370
|
+
t.push(d);
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
if (d.type === l.CAROUSEL && !(d.images || []).length) {
|
|
375
|
+
t.push(d);
|
|
376
|
+
continue;
|
|
377
|
+
}
|
|
378
|
+
n(d.children || []);
|
|
379
|
+
}
|
|
380
|
+
};
|
|
381
|
+
return n(e), t;
|
|
382
|
+
};
|
|
383
|
+
export {
|
|
384
|
+
S as a,
|
|
385
|
+
b,
|
|
386
|
+
G as c,
|
|
387
|
+
rt as d,
|
|
388
|
+
it as e,
|
|
389
|
+
C as f,
|
|
390
|
+
J as g,
|
|
391
|
+
z as h,
|
|
392
|
+
st as i,
|
|
393
|
+
tt as j,
|
|
394
|
+
et as k,
|
|
395
|
+
nt as l,
|
|
396
|
+
ct as m,
|
|
397
|
+
_ as n,
|
|
398
|
+
q as o,
|
|
399
|
+
K as p,
|
|
400
|
+
F as q,
|
|
401
|
+
B as r,
|
|
402
|
+
j as s,
|
|
403
|
+
Q as u
|
|
404
|
+
};
|
|
405
|
+
//# sourceMappingURL=dashboardLayoutUtils-D1xCAxp3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboardLayoutUtils-D1xCAxp3.js","sources":["../src/views/MobileMenuManagement/dashboardLayoutUtils.js"],"sourcesContent":["import { generateUUID } from \"@/utils/UUIDgenerator\";\nimport {\n DASHBOARD_ALLOWED_CHILDREN as ALLOWED_CHILDREN,\n DASHBOARD_COMPONENT_TYPES,\n DASHBOARD_LAYOUT_STYLE_DEFAULTS as styleDefaults,\n DASHBOARD_NODE_DROP_ZONE as NODE_DROP_ZONE,\n DASHBOARD_ROOT_DROP_ZONE as ROOT_DROP_ZONE,\n DEFAULT_DASHBOARD_APP_BAR_CONFIG as defaultAppBarConfig,\n DEFAULT_DASHBOARD_BOTTOM_NAVIGATION_CONFIG as defaultBottomNavigationConfig,\n} from \"@/utils/FormConstants\";\n\nexport {\n ALLOWED_CHILDREN,\n DASHBOARD_COMPONENT_TYPES,\n NODE_DROP_ZONE,\n ROOT_DROP_ZONE,\n defaultAppBarConfig,\n defaultBottomNavigationConfig,\n};\n\nexport const createLayoutNode = (type, overrides = {}) => ({\n id: `node-${generateUUID()}`,\n type,\n children: [],\n ...(styleDefaults[type] || {}),\n ...overrides,\n});\n\nexport const createFeatureNode = (feature, parentId) => ({\n id: feature.id,\n name: feature.name,\n type: DASHBOARD_COMPONENT_TYPES.FEATURE,\n instanceId: `${parentId || \"DASHBOARD\"}_${feature.id}_${generateUUID()}`,\n icon: {\n id: `svg-icon-${feature.id}`,\n content: feature.icon,\n type: \"svg\",\n },\n});\n\nexport const autoConfigureFeatureCardFromChild = (cardNode, featureNode) => {\n if (\n !cardNode ||\n cardNode.type !== DASHBOARD_COMPONENT_TYPES.FEATURE_CARD ||\n !featureNode\n ) {\n return cardNode;\n }\n const featureTitle =\n featureNode.name ||\n featureNode.menuName ||\n featureNode.title ||\n featureNode.content?.title ||\n \"\";\n return {\n ...cardNode,\n content: {\n ...(cardNode.content || {}),\n title: featureTitle,\n subTitle: \"\",\n },\n icon: {\n icon: \"\",\n iconsvg: featureNode.icon?.content || featureNode.icon?.svg || featureNode.icon?.iconsvg || \"\",\n },\n };\n};\n\nexport const clearFeatureCardConfig = (cardNode) => {\n if (!cardNode || cardNode.type !== DASHBOARD_COMPONENT_TYPES.FEATURE_CARD) {\n return cardNode;\n }\n const cleanedCta = cardNode.cta?.type === \"BUTTON\" \n ? cardNode.cta \n : cardNode.cta?.type ? { type: cardNode.cta.type } : undefined;\n\n return {\n ...cardNode,\n content: {\n ...(cardNode.content || {}),\n title: \"\",\n subTitle: \"\",\n },\n icon: {\n icon: \"\",\n iconsvg: \"\",\n },\n ...(cleanedCta ? { cta: cleanedCta } : {}),\n };\n};\n\nexport const getDashboardDropValidationMessage = (\n parentType,\n childType,\n parentNode = null,\n childName = null\n) => {\n const allowed = ALLOWED_CHILDREN[parentType] || [];\n const rawDisplayName = childName || childType;\n const displayName =\n rawDisplayName === \"FEATURE_CARD\"\n ? \"Feature Card\"\n : rawDisplayName === \"SECTION\"\n ? \"Section\"\n : rawDisplayName === \"ROW\" || rawDisplayName === \"COLUMN\"\n ? \"Card Stack\"\n : rawDisplayName === \"FEATURE\"\n ? \"Feature\"\n : rawDisplayName === \"SEARCH_BAR\"\n ? \"Search Bar\"\n : rawDisplayName === \"CAROUSEL\"\n ? \"Image Carousel\"\n : rawDisplayName === \"DIVIDER\"\n ? \"Divider\"\n : rawDisplayName === \"TEXT\"\n ? \"Text Heading\"\n : rawDisplayName;\n\n if (parentNode) {\n if (parentType === DASHBOARD_COMPONENT_TYPES.ROW && parentNode.style?.height) {\n return `Cannot place ${displayName} inside a horizontal spacer.`;\n }\n if (parentType === DASHBOARD_COMPONENT_TYPES.COLUMN && parentNode.style?.width) {\n return `Cannot place ${displayName} inside a vertical spacer.`;\n }\n }\n\n if (!allowed.includes(childType)) {\n if (childType === DASHBOARD_COMPONENT_TYPES.SECTION)\n return `${displayName} can only be placed directly inside the layout.`;\n if (childType === DASHBOARD_COMPONENT_TYPES.DIVIDER)\n return `${displayName} can only be placed inside a Section or Card Stack or direcly inside the layout.`;\n if (childType === DASHBOARD_COMPONENT_TYPES.CAROUSEL)\n return `${displayName} can only be placed directly inside the layout.`;\n if (childType === DASHBOARD_COMPONENT_TYPES.SEARCH_BAR)\n return `${displayName} can only be placed directly inside the layout.`;\n if (childType === DASHBOARD_COMPONENT_TYPES.FEATURE_CARD)\n return `${displayName} can only be placed inside a Section or Card Stack.`;\n if (childType === DASHBOARD_COMPONENT_TYPES.ROW)\n return `${displayName} can only be placed inside a Section or directly inside the layout.`;\n if (childType === DASHBOARD_COMPONENT_TYPES.COLUMN)\n return `${displayName} can only be placed inside a Section or directly inside the layout.`;\n if (childType === DASHBOARD_COMPONENT_TYPES.FEATURE)\n return `${displayName} can only be assigned to a Feature Card or Section or card stack.`;\n if (childType === DASHBOARD_COMPONENT_TYPES.TEXT)\n return `${displayName} can only be placed inside a Section or directly inside the layout.`;\n return `${displayName} cannot be placed in this container.`;\n }\n\n if (\n parentType === DASHBOARD_COMPONENT_TYPES.FEATURE_CARD &&\n childType === DASHBOARD_COMPONENT_TYPES.FEATURE &&\n parentNode?.children?.some(\n (child) => child.type === DASHBOARD_COMPONENT_TYPES.FEATURE,\n )\n ) {\n return \"A Feature Card can only contain one feature.\";\n }\n\n if (\n parentType === DASHBOARD_COMPONENT_TYPES.ROW &&\n (parentNode?.children || []).length >= 4\n ) {\n return \"This card stack can contain a maximum of 4 items.\";\n }\n\n if (\n parentType === DASHBOARD_COMPONENT_TYPES.COLUMN &&\n childType === DASHBOARD_COMPONENT_TYPES.COLUMN &&\n (parentNode?.children || []).filter(\n (child) => child.type === DASHBOARD_COMPONENT_TYPES.COLUMN,\n ).length >= 4\n ) {\n return \"This container can contain a maximum of 4 items.\";\n }\n\n return \"\";\n};\n\nexport const findNodeById = (nodes, id) => {\n for (const node of nodes || []) {\n if (node.id === id || node.instanceId === id) return node;\n const child = findNodeById(node.children, id);\n if (child) return child;\n }\n return null;\n};\n\nexport const findParentNodeInfo = (\n nodes,\n id,\n parentInfo = { id: ROOT_DROP_ZONE, type: \"HOME\", node: null },\n) => {\n for (const node of nodes || []) {\n if (node.id === id || node.instanceId === id) return parentInfo;\n const childParent = findParentNodeInfo(node.children || [], id, {\n id: node.instanceId || node.id,\n type: node.type,\n node,\n });\n if (childParent) return childParent;\n }\n return null;\n};\n\nexport const mapLayoutTree = (nodes, updater) =>\n (nodes || []).map((node) => {\n const updatedNode = updater(node);\n if (updatedNode.children) {\n return {\n ...updatedNode,\n children: mapLayoutTree(updatedNode.children, updater),\n };\n }\n return updatedNode;\n });\n\nexport const addChildToParent = (nodes, parentId, childNode) => {\n if (parentId === ROOT_DROP_ZONE) {\n return [...(nodes || []), childNode];\n }\n return mapLayoutTree(nodes, (node) => {\n if (node.id === parentId || node.instanceId === parentId) {\n let updatedNode = {\n ...node,\n children: [...(node.children || []), childNode],\n };\n if (\n updatedNode.type === DASHBOARD_COMPONENT_TYPES.FEATURE_CARD &&\n childNode.type === DASHBOARD_COMPONENT_TYPES.FEATURE\n ) {\n updatedNode = autoConfigureFeatureCardFromChild(updatedNode, childNode);\n }\n return updatedNode;\n }\n return node;\n });\n};\n\nexport const removeNodeById = (nodes, nodeId) =>\n (nodes || [])\n .filter((node) => node.id !== nodeId && node.instanceId !== nodeId)\n .map((node) => {\n const nextChildren = removeNodeById(node.children, nodeId);\n let updatedNode = {\n ...node,\n children: nextChildren,\n };\n return updatedNode;\n });\n\nexport const updateNodeById = (nodes, nodeId, updater) =>\n mapLayoutTree(nodes, (node) =>\n node.id === nodeId || node.instanceId === nodeId ? updater(node) : node,\n );\n\nexport const duplicateNode = (nodes, nodeId) => {\n const cloneNode = (node) => {\n const newNode = { ...node, id: `node-${generateUUID()}` };\n if (newNode.instanceId) {\n newNode.instanceId = `DASHBOARD_DUP_${generateUUID()}`;\n }\n if (newNode.children) {\n newNode.children = newNode.children.map(cloneNode);\n }\n return newNode;\n };\n\n let found = false;\n const processNodesPure = (currentNodes) => {\n let changed = false;\n const result = [];\n for (const node of currentNodes) {\n result.push(node);\n if (!found && (node.id === nodeId || node.instanceId === nodeId)) {\n found = true;\n changed = true;\n result.push(cloneNode(node));\n } else if (node.children) {\n const newChildren = processNodesPure(node.children);\n if (newChildren !== node.children) {\n changed = true;\n result[result.length - 1] = { ...node, children: newChildren };\n }\n }\n }\n return changed ? result : currentNodes;\n };\n return processNodesPure(nodes || []);\n};\n\nexport const moveNodeUp = (nodes, nodeId) => {\n const processNodes = (currentNodes) => {\n const index = currentNodes.findIndex(n => n.id === nodeId || n.instanceId === nodeId);\n if (index > 0) {\n const result = [...currentNodes];\n [result[index - 1], result[index]] = [result[index], result[index - 1]];\n return result;\n }\n\n let changed = false;\n const newNodes = currentNodes.map(node => {\n if (node.children) {\n const newChildren = processNodes(node.children);\n if (newChildren !== node.children) {\n changed = true;\n return { ...node, children: newChildren };\n }\n }\n return node;\n });\n return changed ? newNodes : currentNodes;\n };\n return processNodes(nodes || []);\n};\n\nexport const moveNodeDown = (nodes, nodeId) => {\n const processNodes = (currentNodes) => {\n const index = currentNodes.findIndex(n => n.id === nodeId || n.instanceId === nodeId);\n if (index >= 0 && index < currentNodes.length - 1) {\n const result = [...currentNodes];\n [result[index], result[index + 1]] = [result[index + 1], result[index]];\n return result;\n }\n\n let changed = false;\n const newNodes = currentNodes.map(node => {\n if (node.children) {\n const newChildren = processNodes(node.children);\n if (newChildren !== node.children) {\n changed = true;\n return { ...node, children: newChildren };\n }\n }\n return node;\n });\n return changed ? newNodes : currentNodes;\n };\n return processNodes(nodes || []);\n};\n\nconst getNodeKey = (node) => node?.instanceId || node?.id;\n\nconst removeNodeWithResult = (nodes, nodeId) => {\n let removedNode = null;\n\n const nextNodes = (nodes || []).reduce((acc, node) => {\n if (node.id === nodeId || node.instanceId === nodeId) {\n removedNode = node;\n return acc;\n }\n\n const childResult = removeNodeWithResult(node.children || [], nodeId);\n if (childResult.removedNode) {\n removedNode = childResult.removedNode;\n let updatedNode = { ...node, children: childResult.nodes };\n acc.push(updatedNode);\n return acc;\n }\n\n acc.push(node);\n return acc;\n }, []);\n\n return { nodes: nextNodes, removedNode };\n};\n\nconst insertNodeBeforeTarget = (nodes, targetId, nodeToInsert) => {\n let didInsert = false;\n\n const nextNodes = (nodes || []).reduce((acc, node) => {\n if (node.id === targetId || node.instanceId === targetId) {\n acc.push(nodeToInsert, node);\n didInsert = true;\n return acc;\n }\n\n const childResult = insertNodeBeforeTarget(\n node.children || [],\n targetId,\n nodeToInsert,\n );\n if (childResult.didInsert) {\n didInsert = true;\n acc.push({ ...node, children: childResult.nodes });\n return acc;\n }\n\n acc.push(node);\n return acc;\n }, []);\n\n return { nodes: nextNodes, didInsert };\n};\n\nconst hasNodeInTree = (node, targetId) => {\n if (!node) return false;\n if (node.id === targetId || node.instanceId === targetId) return true;\n return (node.children || []).some((child) => hasNodeInTree(child, targetId));\n};\n\nconst replaceNodeInTree = (nodes, replacementNode) => {\n const replacementId = getNodeKey(replacementNode);\n return mapLayoutTree(nodes, (node) =>\n node.id === replacementId || node.instanceId === replacementId\n ? replacementNode\n : node,\n );\n};\n\nexport const addNodeBeforeTarget = (nodes, targetId, nodeToInsert) => {\n const result = insertNodeBeforeTarget(nodes, targetId, nodeToInsert);\n return result.didInsert ? result.nodes : nodes;\n};\n\nexport const moveNodeToParent = (nodes, nodeId, parentId) => {\n const { nodes: withoutNode, removedNode } = removeNodeWithResult(\n nodes,\n nodeId,\n );\n if (!removedNode) return nodes;\n if (parentId !== ROOT_DROP_ZONE && hasNodeInTree(removedNode, parentId))\n return nodes;\n return addChildToParent(withoutNode, parentId, removedNode);\n};\n\nexport const moveNodeBeforeTarget = (nodes, nodeId, targetId) => {\n if (nodeId === targetId) return nodes;\n const sourceNode = findNodeById(nodes, nodeId);\n const targetNode = findNodeById(nodes, targetId);\n if (!sourceNode || !targetNode || hasNodeInTree(sourceNode, targetId))\n return nodes;\n\n const { nodes: withoutNode, removedNode } = removeNodeWithResult(\n nodes,\n nodeId,\n );\n if (!removedNode) return nodes;\n\n const result = insertNodeBeforeTarget(withoutNode, targetId, removedNode);\n if (result.didInsert) return result.nodes;\n\n return replaceNodeInTree(withoutNode, sourceNode);\n};\n\nconst migrateFeatureCardLayout = (node) => {\n if (node.contentLayout) return node;\n\n const contentAlignment = node.style?.contentAlignment?.toUpperCase() || 'LEFT';\n const isHorizontal = node.style?.layoutType === 'HORIZONTAL';\n const oldAlign = contentAlignment;\n const defaultHorizontal = oldAlign === 'START' ? 'LEFT' : oldAlign === 'END' ? 'RIGHT' : (oldAlign === 'CENTER' ? 'CENTER' : 'LEFT');\n const defaultVertical = 'MIDDLE';\n\n const positions = {\n ICON: (oldAlign === 'CENTER' || oldAlign === 'RIGHT' ? { horizontal: defaultHorizontal, vertical: defaultVertical } : { horizontal: 'LEFT', vertical: 'MIDDLE' }),\n TITLE: (oldAlign === 'CENTER' || oldAlign === 'RIGHT' ? { horizontal: defaultHorizontal, vertical: defaultVertical } : { horizontal: 'CENTER', vertical: 'MIDDLE' }),\n SUBTITLE: (oldAlign === 'CENTER' || oldAlign === 'RIGHT' ? { horizontal: defaultHorizontal, vertical: defaultVertical } : { horizontal: 'LEFT', vertical: 'BOTTOM' }),\n BUTTON: { horizontal: 'RIGHT', vertical: 'MIDDLE' }\n };\n\n const layoutMap = {};\n const orderedElements = [\"ICON\", \"TITLE\", \"SUBTITLE\", \"BUTTON\"];\n orderedElements.forEach(el => {\n const pos = positions[el];\n const key = `${pos.horizontal}_${pos.vertical}`;\n if (!layoutMap[key]) {\n layoutMap[key] = {\n position: pos,\n items: []\n };\n }\n layoutMap[key].items.push(el);\n });\n\n const contentLayout = Object.values(layoutMap).filter(group => group.items.length > 0).map(group => {\n if (group.items.length > 1) {\n group.alignment = isHorizontal ? \"HORIZONTAL\" : \"VERTICAL\";\n group.spacing = isHorizontal ? 12 : 4;\n }\n return group;\n });\n\n return {\n ...node,\n contentLayout\n };\n};\n\nexport const hydrateDashboardLayout = (layout, hydrateFeature) => {\n if (!Array.isArray(layout)) return [];\n return layout\n .map((node) => {\n if (\n node.type === DASHBOARD_COMPONENT_TYPES.SECTION &&\n Array.isArray(node.features)\n ) {\n const sectionId = `node-${generateUUID()}`;\n return createLayoutNode(DASHBOARD_COMPONENT_TYPES.SECTION, {\n id: sectionId,\n title: node.title || \"Section\",\n header: {\n ...styleDefaults[DASHBOARD_COMPONENT_TYPES.SECTION].header,\n title: node.title || \"Section\",\n },\n children: node.features\n .map((feature) => hydrateFeature(feature, sectionId))\n .filter(Boolean),\n });\n }\n if (node.type === DASHBOARD_COMPONENT_TYPES.FEATURE) {\n return hydrateFeature(node, \"DASHBOARD\");\n }\n if (!node.type) return null;\n const hydratedChildren = hydrateDashboardLayout(\n node.children || [],\n hydrateFeature,\n );\n let updatedNode = createLayoutNode(node.type, {\n ...node,\n id: node.id || `node-${generateUUID()}`,\n children: hydratedChildren,\n });\n if (node.type === DASHBOARD_COMPONENT_TYPES.FEATURE_CARD) {\n const childFeature = (hydratedChildren || []).find(\n (child) => child.type === DASHBOARD_COMPONENT_TYPES.FEATURE,\n );\n if (childFeature) {\n if (!updatedNode.content?.title && !updatedNode.content?.customTitle) {\n updatedNode = autoConfigureFeatureCardFromChild(updatedNode, childFeature);\n }\n }\n updatedNode = migrateFeatureCardLayout(updatedNode);\n }\n return updatedNode;\n })\n .filter(Boolean);\n};\n\nconst stripRuntimeFeature = (feature) => ({\n type: DASHBOARD_COMPONENT_TYPES.FEATURE,\n id: feature.id,\n menuName: feature.name,\n});\n\nconst getFeatureChild = (node) =>\n (node.children || []).find(\n (child) => child.type === DASHBOARD_COMPONENT_TYPES.FEATURE,\n );\n\nconst getFeatureTitle = (feature, contentTitle) => {\n const title = String(contentTitle || \"\").trim();\n return title || feature?.name || feature?.menuName || \"\";\n};\n\nconst getFeatureSubTitle = (feature, contentSubTitle) => {\n const subTitle = String(contentSubTitle || \"\").trim();\n return subTitle || feature?.subTitle || feature?.subtitle || \"\";\n};\n\nconst normalizeFeatureCardIcon = (node, feature) => {\n const configuredIcon = node.icon?.icon || node.icon?.iconName || \"\";\n const configuredSvg = node.icon?.iconsvg || node.icon?.svg || \"\";\n\n if (configuredIcon) return { icon: configuredIcon, iconsvg: \"\" };\n if (configuredSvg) return { icon: \"\", iconsvg: configuredSvg };\n\n const featureIcon = feature?.icon;\n if (typeof featureIcon === \"string\") {\n const trimmedIcon = featureIcon.trim();\n return trimmedIcon.startsWith(\"<svg\")\n ? { icon: \"\", iconsvg: trimmedIcon }\n : { icon: trimmedIcon, iconsvg: \"\" };\n }\n\n if (featureIcon?.content || featureIcon?.iconsvg || featureIcon?.svg) {\n return {\n icon: \"\",\n iconsvg: featureIcon.content || featureIcon.iconsvg || featureIcon.svg,\n };\n }\n\n return {\n icon: featureIcon?.icon || featureIcon?.iconName || \"\",\n iconsvg: \"\",\n };\n};\n\nconst normalizeNavigationFeatureId = (navigation) => {\n const value =\n typeof navigation === \"object\" && navigation !== null\n ? navigation.action\n : navigation;\n if (value === \"\" || value === null || value === undefined) return \"\";\n const numericValue = Number(value);\n return Number.isNaN(numericValue) ? value : numericValue;\n};\n\nconst normalizeFeatureCardBackground = (background = {}) => {\n const normalizedBackground = { ...background };\n\n if (normalizedBackground.type === \"GRADIENT\") {\n delete normalizedBackground.solidLightModeColor;\n delete normalizedBackground.solidDarkModeColor;\n delete normalizedBackground.solidColor;\n } else {\n delete normalizedBackground.gradientStartColor;\n delete normalizedBackground.gradientEndColor;\n delete normalizedBackground.gradientType;\n delete normalizedBackground.direction;\n delete normalizedBackground.gradientStartOpacity;\n delete normalizedBackground.gradientEndOpacity;\n delete normalizedBackground.solidColor;\n }\n\n return normalizedBackground;\n};\n\nexport const sanitizeDashboardLayout = (nodes) =>\n (nodes || []).map((node) => {\n if (node.type === DASHBOARD_COMPONENT_TYPES.FEATURE) {\n return stripRuntimeFeature(node);\n }\n\n const { id, instanceId, icon, name, features, title, ...config } = node;\n const sanitizedNode = {\n ...config,\n children: sanitizeDashboardLayout(node.children || []),\n };\n\n if (node.type === DASHBOARD_COMPONENT_TYPES.SECTION) {\n // title is stripped above via destructuring; only header.title is kept\n sanitizedNode.background = normalizeFeatureCardBackground(\n config.background,\n );\n // clean up any legacy color field from header\n if (sanitizedNode.header?.color) {\n const { color, ...restHeader } = sanitizedNode.header;\n sanitizedNode.header = restHeader;\n }\n }\n\n if (node.type === DASHBOARD_COMPONENT_TYPES.FEATURE_CARD) {\n const feature = getFeatureChild(node);\n sanitizedNode.content = {\n ...(config.content || {}),\n title: getFeatureTitle(\n feature,\n config.content?.title || config.content?.customTitle,\n ),\n subTitle: getFeatureSubTitle(\n feature,\n config.content?.subTitle || config.content?.customSubtitle,\n ),\n };\n sanitizedNode.icon = normalizeFeatureCardIcon(node, feature);\n sanitizedNode.background = normalizeFeatureCardBackground(\n config.background,\n );\n if (sanitizedNode.style) {\n delete sanitizedNode.style.flex;\n delete sanitizedNode.style.layoutType;\n delete sanitizedNode.style.contentAlignment;\n\n }\n delete sanitizedNode.content.customTitle;\n delete sanitizedNode.content.customSubtitle;\n delete sanitizedNode.navigation;\n\n if (sanitizedNode.cta?.type !== 'BUTTON') {\n sanitizedNode.cta = { \n type: sanitizedNode.cta?.type || (sanitizedNode.showLeadingArrow ? 'ARROW' : 'NONE') \n };\n }\n }\n\n if (node.type === DASHBOARD_COMPONENT_TYPES.CAROUSEL) {\n delete sanitizedNode.children;\n delete sanitizedNode.navigation;\n sanitizedNode.images = (node.images || []).map((image) => ({\n ...image,\n navigation: normalizeNavigationFeatureId(image.navigation),\n }));\n }\n\n if (node.type === DASHBOARD_COMPONENT_TYPES.TEXT) {\n delete sanitizedNode.children;\n }\n\n if (\n [\n DASHBOARD_COMPONENT_TYPES.SEARCH_BAR,\n DASHBOARD_COMPONENT_TYPES.DIVIDER,\n ].includes(node.type)\n ) {\n delete sanitizedNode.children;\n }\n\n if (node.type === DASHBOARD_COMPONENT_TYPES.DIVIDER) {\n if (sanitizedNode.style) {\n delete sanitizedNode.style.color;\n delete sanitizedNode.style.marginVertical;\n }\n }\n\n\n return sanitizedNode;\n });\n\nexport const collectFeatureNamesFromLayout = (nodes) => {\n if (!nodes) return [];\n const list = Array.isArray(nodes)\n ? nodes\n : typeof nodes === \"object\"\n ? [nodes]\n : [];\n return list.flatMap((node) => {\n if (!node || typeof node !== \"object\") return [];\n if (node.type === DASHBOARD_COMPONENT_TYPES.FEATURE) {\n const name =\n node.menuName || node.name || node.title || node.content?.title;\n return name ? [name] : [];\n }\n const children =\n node.children ||\n node.features ||\n node.layout ||\n node.tabs ||\n node.menus ||\n (node.type ? [] : Object.values(node));\n const childNames = collectFeatureNamesFromLayout(children);\n if (node.menuName) {\n return [node.menuName, ...childNames];\n }\n return childNames;\n });\n};\n\nconst EMPTY_CHILD_CONTAINER_TYPES = new Set([\n DASHBOARD_COMPONENT_TYPES.SECTION,\n DASHBOARD_COMPONENT_TYPES.ROW,\n DASHBOARD_COMPONENT_TYPES.COLUMN,\n]);\n\nexport const findEmptyDashboardLayoutNode = (nodes) => {\n for (const node of nodes || []) {\n if (\n EMPTY_CHILD_CONTAINER_TYPES.has(node.type) &&\n !(node.children || []).length\n ) {\n const isHorizontalSpacer = node.type === DASHBOARD_COMPONENT_TYPES.ROW && node.style?.height;\n const isVerticalSpacer = node.type === DASHBOARD_COMPONENT_TYPES.COLUMN && node.style?.width;\n if (!isHorizontalSpacer && !isVerticalSpacer) {\n return node;\n }\n }\n\n if (node.type === DASHBOARD_COMPONENT_TYPES.FEATURE_CARD) {\n const hasFeature = (node.children || []).some(\n (child) => child.type === DASHBOARD_COMPONENT_TYPES.FEATURE,\n );\n const hasCustomContent = node.content?.customTitle || node.content?.customSubtitle || node.content?.title || node.content?.subTitle || node.icon?.iconsvg || node.icon?.icon;\n if (!hasFeature && !hasCustomContent) return node;\n }\n\n if (node.type === DASHBOARD_COMPONENT_TYPES.CAROUSEL) {\n if (!(node.images || []).length) return node;\n }\n\n const emptyChild = findEmptyDashboardLayoutNode(node.children || []);\n if (emptyChild) return emptyChild;\n }\n return null;\n};\n\nexport const findAllEmptyDashboardLayoutNodes = (nodes) => {\n const emptyNodes = [];\n const traverse = (items) => {\n for (const node of items || []) {\n if (\n EMPTY_CHILD_CONTAINER_TYPES.has(node.type) &&\n !(node.children || []).length\n ) {\n const isHorizontalSpacer = node.type === DASHBOARD_COMPONENT_TYPES.ROW && node.style?.height;\n const isVerticalSpacer = node.type === DASHBOARD_COMPONENT_TYPES.COLUMN && node.style?.width;\n if (!isHorizontalSpacer && !isVerticalSpacer) {\n emptyNodes.push(node);\n }\n continue;\n }\n\n if (node.type === DASHBOARD_COMPONENT_TYPES.FEATURE_CARD) {\n const hasFeature = (node.children || []).some(\n (child) => child.type === DASHBOARD_COMPONENT_TYPES.FEATURE,\n );\n const hasCustomContent = node.content?.customTitle || node.content?.customSubtitle || node.content?.title || node.content?.subTitle || node.icon?.iconsvg || node.icon?.icon;\n if (!hasFeature && !hasCustomContent) {\n emptyNodes.push(node);\n continue;\n }\n }\n\n if (node.type === DASHBOARD_COMPONENT_TYPES.CAROUSEL) {\n if (!(node.images || []).length) {\n emptyNodes.push(node);\n continue;\n }\n }\n\n traverse(node.children || []);\n }\n };\n traverse(nodes);\n return emptyNodes;\n};\n\nexport const isSelfEmptyNode = (node) => {\n if (!node) return false;\n if (\n EMPTY_CHILD_CONTAINER_TYPES.has(node.type) &&\n !(node.children || []).length\n ) {\n const isHorizontalSpacer = node.type === DASHBOARD_COMPONENT_TYPES.ROW && node.style?.height;\n const isVerticalSpacer = node.type === DASHBOARD_COMPONENT_TYPES.COLUMN && node.style?.width;\n if (!isHorizontalSpacer && !isVerticalSpacer) {\n return true;\n }\n }\n if (node.type === DASHBOARD_COMPONENT_TYPES.FEATURE_CARD) {\n const hasFeature = (node.children || []).some(\n (child) => child.type === DASHBOARD_COMPONENT_TYPES.FEATURE,\n );\n const hasCustomContent = node.content?.customTitle || node.content?.customSubtitle || node.content?.title || node.content?.subTitle || node.icon?.iconsvg || node.icon?.icon;\n if (!hasFeature && !hasCustomContent) return true;\n }\n if (node.type === DASHBOARD_COMPONENT_TYPES.CAROUSEL) {\n if (!(node.images || []).length) return true;\n }\n return false;\n};\n\nexport const hasEmptyDashboardLayoutNode = (nodes) =>\n Boolean(findEmptyDashboardLayoutNode(nodes));\n\nexport const getComponentLabel = (node) => {\n if (!node) return 'Block';\n\n if (node.blockName) {\n return node.blockName;\n }\n\n const typeNames = {\n SECTION: 'Empty Section',\n ROW: 'Horizontal Card Stack',\n COLUMN: 'Vertical Card Stack',\n FEATURE_CARD: 'Feature Card',\n CAROUSEL: 'Image Carousel',\n SEARCH_BAR: 'Search Bar',\n TEXT: 'Text Heading',\n DIVIDER: 'Divider',\n };\n\n const typeName = typeNames[node.type] || node.type || 'Block';\n const title = node.title || node.content?.text || node.name;\n if (title && typeof title === 'string' && title.trim()) {\n return `${typeName} (\"${title.trim()}\")`;\n }\n return typeName;\n};\n"],"names":["createLayoutNode","type","overrides","generateUUID","styleDefaults","createFeatureNode","feature","parentId","DASHBOARD_COMPONENT_TYPES","autoConfigureFeatureCardFromChild","cardNode","featureNode","featureTitle","_a","_b","_c","_d","clearFeatureCardConfig","cleanedCta","getDashboardDropValidationMessage","parentType","childType","parentNode","childName","allowed","ALLOWED_CHILDREN","rawDisplayName","displayName","child","findNodeById","nodes","id","node","findParentNodeInfo","parentInfo","ROOT_DROP_ZONE","childParent","mapLayoutTree","updater","updatedNode","addChildToParent","childNode","removeNodeById","nodeId","nextChildren","updateNodeById","duplicateNode","cloneNode","newNode","found","processNodesPure","currentNodes","changed","result","newChildren","moveNodeUp","processNodes","index","n","newNodes","moveNodeDown","getNodeKey","removeNodeWithResult","removedNode","acc","childResult","insertNodeBeforeTarget","targetId","nodeToInsert","didInsert","hasNodeInTree","replaceNodeInTree","replacementNode","replacementId","addNodeBeforeTarget","moveNodeToParent","withoutNode","moveNodeBeforeTarget","sourceNode","targetNode","migrateFeatureCardLayout","contentAlignment","isHorizontal","oldAlign","defaultHorizontal","defaultVertical","positions","layoutMap","el","pos","key","contentLayout","group","hydrateDashboardLayout","layout","hydrateFeature","sectionId","hydratedChildren","childFeature","stripRuntimeFeature","getFeatureChild","getFeatureTitle","contentTitle","getFeatureSubTitle","contentSubTitle","normalizeFeatureCardIcon","configuredIcon","configuredSvg","featureIcon","trimmedIcon","normalizeNavigationFeatureId","navigation","value","numericValue","normalizeFeatureCardBackground","background","normalizedBackground","sanitizeDashboardLayout","instanceId","icon","name","features","title","config","sanitizedNode","color","restHeader","_e","_f","_g","image","collectFeatureNamesFromLayout","children","childNames","EMPTY_CHILD_CONTAINER_TYPES","findAllEmptyDashboardLayoutNodes","emptyNodes","traverse","items","isHorizontalSpacer","isVerticalSpacer","hasFeature","hasCustomContent","_h"],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
function r(e) {
|
|
2
|
+
return String(e).padStart(2, "0");
|
|
3
|
+
}
|
|
4
|
+
function u(e) {
|
|
5
|
+
if (!e) return "-";
|
|
6
|
+
let t = new Date(e);
|
|
7
|
+
return Number.isNaN(t.getTime()) ? "-" : `${t.getFullYear()}-${r(t.getMonth() + 1)}-${r(t.getDate())}`;
|
|
8
|
+
}
|
|
9
|
+
function l(e) {
|
|
10
|
+
if (!e) return "-";
|
|
11
|
+
let t = new Date(e);
|
|
12
|
+
return Number.isNaN(t.getTime()) ? "-" : `${u(t)} ${r(t.getHours())}:${r(t.getMinutes())}`;
|
|
13
|
+
}
|
|
14
|
+
function a(e) {
|
|
15
|
+
if (e == null || e === "") return null;
|
|
16
|
+
if (typeof e == "string") {
|
|
17
|
+
let n = e.match(/^(\d{4})-(\d{2})-(\d{2})/);
|
|
18
|
+
if (n) return `${n[1]}-${n[2]}-${n[3]}`;
|
|
19
|
+
}
|
|
20
|
+
let t = e instanceof Date ? e : new Date(e);
|
|
21
|
+
return Number.isNaN(t.getTime()) ? null : `${t.getFullYear()}-${r(t.getMonth() + 1)}-${r(t.getDate())}`;
|
|
22
|
+
}
|
|
23
|
+
function i() {
|
|
24
|
+
let e = /* @__PURE__ */ new Date();
|
|
25
|
+
return `${e.getFullYear()}-${r(e.getMonth() + 1)}-${r(e.getDate())}`;
|
|
26
|
+
}
|
|
27
|
+
function f(e) {
|
|
28
|
+
let t = a(e);
|
|
29
|
+
return t ? t < i() : !1;
|
|
30
|
+
}
|
|
31
|
+
function o(e, t = 2) {
|
|
32
|
+
if (e == null || e === "") return "-";
|
|
33
|
+
let n = Number(e);
|
|
34
|
+
return Number.isNaN(n) ? "-" : n.toFixed(t);
|
|
35
|
+
}
|
|
36
|
+
function s(e) {
|
|
37
|
+
switch (e) {
|
|
38
|
+
case "ACTIVE":
|
|
39
|
+
return "success";
|
|
40
|
+
case "IN_USE":
|
|
41
|
+
return "info";
|
|
42
|
+
case "EXHAUSTED":
|
|
43
|
+
return "warning";
|
|
44
|
+
case "EXPIRED":
|
|
45
|
+
return "error";
|
|
46
|
+
case "QUARANTINED":
|
|
47
|
+
return "error";
|
|
48
|
+
case "OPEN":
|
|
49
|
+
return "info";
|
|
50
|
+
case "DISCARDED":
|
|
51
|
+
return "default";
|
|
52
|
+
default:
|
|
53
|
+
return "default";
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export {
|
|
57
|
+
f as a,
|
|
58
|
+
l as n,
|
|
59
|
+
o,
|
|
60
|
+
s,
|
|
61
|
+
u as t
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=format-UOyOu75i-D0GyylyQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-UOyOu75i-D0GyylyQ.js","sources":["../../productManagement/dist/format-UOyOu75i.js"],"sourcesContent":["//#region src/utils/format.js\nfunction e(e) {\n\treturn String(e).padStart(2, \"0\");\n}\nfunction t(t) {\n\tif (!t) return \"-\";\n\tlet n = new Date(t);\n\treturn Number.isNaN(n.getTime()) ? \"-\" : `${n.getFullYear()}-${e(n.getMonth() + 1)}-${e(n.getDate())}`;\n}\nfunction n(n) {\n\tif (!n) return \"-\";\n\tlet r = new Date(n);\n\treturn Number.isNaN(r.getTime()) ? \"-\" : `${t(r)} ${e(r.getHours())}:${e(r.getMinutes())}`;\n}\nfunction r(t) {\n\tif (t == null || t === \"\") return null;\n\tif (typeof t == \"string\") {\n\t\tlet e = t.match(/^(\\d{4})-(\\d{2})-(\\d{2})/);\n\t\tif (e) return `${e[1]}-${e[2]}-${e[3]}`;\n\t}\n\tlet n = t instanceof Date ? t : new Date(t);\n\treturn Number.isNaN(n.getTime()) ? null : `${n.getFullYear()}-${e(n.getMonth() + 1)}-${e(n.getDate())}`;\n}\nfunction i() {\n\tlet t = /* @__PURE__ */ new Date();\n\treturn `${t.getFullYear()}-${e(t.getMonth() + 1)}-${e(t.getDate())}`;\n}\nfunction a(e) {\n\tlet t = r(e);\n\treturn t ? t < i() : !1;\n}\nfunction o(e, t = 2) {\n\tif (e == null || e === \"\") return \"-\";\n\tlet n = Number(e);\n\treturn Number.isNaN(n) ? \"-\" : n.toFixed(t);\n}\nfunction s(e) {\n\tswitch (e) {\n\t\tcase \"ACTIVE\": return \"success\";\n\t\tcase \"IN_USE\": return \"info\";\n\t\tcase \"EXHAUSTED\": return \"warning\";\n\t\tcase \"EXPIRED\": return \"error\";\n\t\tcase \"QUARANTINED\": return \"error\";\n\t\tcase \"OPEN\": return \"info\";\n\t\tcase \"DISCARDED\": return \"default\";\n\t\tdefault: return \"default\";\n\t}\n}\n//#endregion\nexport { s as a, a as i, n, o as r, t };\n\n//# sourceMappingURL=format-UOyOu75i.js.map"],"names":["e","t","n","r","a"],"mappings":"AACA,SAASA,EAAE,GAAG;AACb,SAAO,OAAO,CAAC,EAAE,SAAS,GAAG,GAAG;AACjC;AACA,SAASC,EAAEA,GAAG;AACb,MAAI,CAACA,EAAG,QAAO;AACf,MAAIC,IAAI,IAAI,KAAKD,CAAC;AAClB,SAAO,OAAO,MAAMC,EAAE,QAAO,CAAE,IAAI,MAAM,GAAGA,EAAE,aAAa,IAAIF,EAAEE,EAAE,SAAQ,IAAK,CAAC,CAAC,IAAIF,EAAEE,EAAE,QAAO,CAAE,CAAC;AACrG;AACA,SAASA,EAAEA,GAAG;AACb,MAAI,CAACA,EAAG,QAAO;AACf,MAAIC,IAAI,IAAI,KAAKD,CAAC;AAClB,SAAO,OAAO,MAAMC,EAAE,QAAO,CAAE,IAAI,MAAM,GAAGF,EAAEE,CAAC,CAAC,IAAIH,EAAEG,EAAE,SAAQ,CAAE,CAAC,IAAIH,EAAEG,EAAE,WAAU,CAAE,CAAC;AACzF;AACA,SAASA,EAAEF,GAAG;AACb,MAAIA,KAAK,QAAQA,MAAM,GAAI,QAAO;AAClC,MAAI,OAAOA,KAAK,UAAU;AACzB,QAAID,IAAIC,EAAE,MAAM,0BAA0B;AAC1C,QAAID,EAAG,QAAO,GAAGA,EAAE,CAAC,CAAC,IAAIA,EAAE,CAAC,CAAC,IAAIA,EAAE,CAAC,CAAC;AAAA,EACtC;AACA,MAAIE,IAAID,aAAa,OAAOA,IAAI,IAAI,KAAKA,CAAC;AAC1C,SAAO,OAAO,MAAMC,EAAE,QAAO,CAAE,IAAI,OAAO,GAAGA,EAAE,aAAa,IAAIF,EAAEE,EAAE,SAAQ,IAAK,CAAC,CAAC,IAAIF,EAAEE,EAAE,QAAO,CAAE,CAAC;AACtG;AACA,SAAS,IAAI;AACZ,MAAID,IAAoB,oBAAI,KAAI;AAChC,SAAO,GAAGA,EAAE,YAAW,CAAE,IAAID,EAAEC,EAAE,SAAQ,IAAK,CAAC,CAAC,IAAID,EAAEC,EAAE,QAAO,CAAE,CAAC;AACnE;AACA,SAASG,EAAE,GAAG;AACb,MAAI,IAAID,EAAE,CAAC;AACX,SAAO,IAAI,IAAI,EAAC,IAAK;AACtB;AACA,SAAS,EAAE,GAAG,IAAI,GAAG;AACpB,MAAI,KAAK,QAAQ,MAAM,GAAI,QAAO;AAClC,MAAI,IAAI,OAAO,CAAC;AAChB,SAAO,OAAO,MAAM,CAAC,IAAI,MAAM,EAAE,QAAQ,CAAC;AAC3C;AACA,SAAS,EAAE,GAAG;AACb,UAAQ,GAAC;AAAA,IACR,KAAK;AAAU,aAAO;AAAA,IACtB,KAAK;AAAU,aAAO;AAAA,IACtB,KAAK;AAAa,aAAO;AAAA,IACzB,KAAK;AAAW,aAAO;AAAA,IACvB,KAAK;AAAe,aAAO;AAAA,IAC3B,KAAK;AAAQ,aAAO;AAAA,IACpB,KAAK;AAAa,aAAO;AAAA,IACzB;AAAS,aAAO;AAAA,EAClB;AACA;"}
|