@acorex/modules 20.3.0-next.4 → 20.3.0-next.5
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/fesm2022/acorex-modules-content-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-DDriJFmP.mjs → acorex-modules-document-management-acorex-modules-document-management-DhEDQZru.mjs} +122 -80
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-DDriJFmP.mjs.map → acorex-modules-document-management-acorex-modules-document-management-DhEDQZru.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-OYJu4IJz.mjs → acorex-modules-document-management-attachment-widget.component-Bx2Ps7uX.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-OYJu4IJz.mjs.map → acorex-modules-document-management-attachment-widget.component-Bx2Ps7uX.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-CZzlGMcu.mjs → acorex-modules-document-management-create-folder-dialog.component-B26m8qWj.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-CZzlGMcu.mjs.map → acorex-modules-document-management-create-folder-dialog.component-B26m8qWj.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-details-view.component-VdV7xGPS.mjs → acorex-modules-document-management-details-view.component-3DmulyK_.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-details-view.component-VdV7xGPS.mjs.map → acorex-modules-document-management-details-view.component-3DmulyK_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-Gi0_m0oe.mjs → acorex-modules-document-management-document-signature-popup.component-DmR6gFdD.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-Gi0_m0oe.mjs.map → acorex-modules-document-management-document-signature-popup.component-DmR6gFdD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-BgRZ_nhs.mjs → acorex-modules-document-management-drive-choose.component-BNyPOrzl.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-BgRZ_nhs.mjs.map → acorex-modules-document-management-drive-choose.component-BNyPOrzl.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive.component-BRCGsnuI.mjs → acorex-modules-document-management-drive.component-D5X_bI5D.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-drive.component-BRCGsnuI.mjs.map → acorex-modules-document-management-drive.component-D5X_bI5D.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-CnsPx3K3.mjs → acorex-modules-document-management-large-icons-view.component-AzDtXQqt.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-CnsPx3K3.mjs.map → acorex-modules-document-management-large-icons-view.component-AzDtXQqt.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-D4OUme1W.mjs → acorex-modules-document-management-large-tiles-view.component-DCG_v9JT.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-D4OUme1W.mjs.map → acorex-modules-document-management-large-tiles-view.component-DCG_v9JT.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-list-view.component-C7i4jI9h.mjs → acorex-modules-document-management-list-view.component-Cb2OVElN.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-list-view.component-C7i4jI9h.mjs.map → acorex-modules-document-management-list-view.component-Cb2OVElN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-DHVn7RIv.mjs → acorex-modules-document-management-rename-node-dialog.component-B7gcoDDb.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-DHVn7RIv.mjs.map → acorex-modules-document-management-rename-node-dialog.component-B7gcoDDb.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-By36moe5.mjs → acorex-modules-document-management-small-icons-view.component-EN4ttbvx.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-By36moe5.mjs.map → acorex-modules-document-management-small-icons-view.component-EN4ttbvx.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-CO6MfsEU.mjs → acorex-modules-document-management-small-tiles-view.component-C-HjbNwe.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-CO6MfsEU.mjs.map → acorex-modules-document-management-small-tiles-view.component-C-HjbNwe.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-WkDn4mpE.mjs → acorex-modules-human-capital-management-acorex-modules-human-capital-management-BQ_KNd7M.mjs} +23 -12
- package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-WkDn4mpE.mjs.map → acorex-modules-human-capital-management-acorex-modules-human-capital-management-BQ_KNd7M.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-employee-skill.entity-DsUYujPr.mjs → acorex-modules-human-capital-management-employee-skill.entity-3wofaUXu.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-employee-skill.entity-DsUYujPr.mjs.map → acorex-modules-human-capital-management-employee-skill.entity-3wofaUXu.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-employee.entity-CC-LIIki.mjs → acorex-modules-human-capital-management-employee.entity-1fVathnk.mjs} +10 -8
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-1fVathnk.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-Mgkdm2vo.mjs → acorex-modules-human-capital-management-employment-type.entity-BWrwli0P.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-Mgkdm2vo.mjs.map → acorex-modules-human-capital-management-employment-type.entity-BWrwli0P.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-BJyciZGL.mjs → acorex-modules-human-capital-management-leave-request.entity-4ddc6R_K.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-BJyciZGL.mjs.map → acorex-modules-human-capital-management-leave-request.entity-4ddc6R_K.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-IewYlMLV.mjs → acorex-modules-human-capital-management-leave-type.entity-DYYJVRju.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-IewYlMLV.mjs.map → acorex-modules-human-capital-management-leave-type.entity-DYYJVRju.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-BlKFRnO0.mjs → acorex-modules-human-capital-management-position-assignment.entity-DIqdhqk4.mjs} +7 -53
- package/fesm2022/acorex-modules-human-capital-management-position-assignment.entity-DIqdhqk4.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-skill-level.entity-De1qKpcU.mjs → acorex-modules-human-capital-management-skill-level.entity-BN67pBaa.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-skill-level.entity-De1qKpcU.mjs.map → acorex-modules-human-capital-management-skill-level.entity-BN67pBaa.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-skill.entity-RrnBU0M5.mjs → acorex-modules-human-capital-management-skill.entity-D4CglCC7.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-skill.entity-RrnBU0M5.mjs.map → acorex-modules-human-capital-management-skill.entity-D4CglCC7.mjs.map} +1 -1
- package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
- package/fesm2022/acorex-modules-organization-management-org-chart.page-keZ4Gk7y.mjs +544 -0
- package/fesm2022/acorex-modules-organization-management-org-chart.page-keZ4Gk7y.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-position.entity-DK-i78ck.mjs → acorex-modules-organization-management-position.entity-CzBbuApR.mjs} +47 -1
- package/fesm2022/acorex-modules-organization-management-position.entity-CzBbuApR.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-settings.provider-feVwZnkw.mjs → acorex-modules-organization-management-settings.provider-BvOAb0jb.mjs} +21 -2
- package/fesm2022/acorex-modules-organization-management-settings.provider-BvOAb0jb.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management.mjs +358 -240
- package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-report-management.mjs +76 -16
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-Y-liTcuX.mjs → acorex-modules-settings-management-setting-page.component-IG1o_0Dp.mjs} +17 -14
- package/fesm2022/acorex-modules-settings-management-setting-page.component-IG1o_0Dp.mjs.map +1 -0
- package/fesm2022/acorex-modules-settings-management.mjs +1 -1
- package/fesm2022/acorex-modules-settings-management.mjs.map +1 -1
- package/organization-management/README.md +98 -2
- package/organization-management/index.d.ts +44 -123
- package/package.json +1 -1
- package/report-management/index.d.ts +31 -3
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-CC-LIIki.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-position-assignment.entity-BlKFRnO0.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-add-item.component-CtuULLkY.mjs +0 -89
- package/fesm2022/acorex-modules-organization-management-add-item.component-CtuULLkY.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-branch.entity-C4Le6Kv6.mjs +0 -317
- package/fesm2022/acorex-modules-organization-management-branch.entity-C4Le6Kv6.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-department.entity-BkEbajpN.mjs +0 -288
- package/fesm2022/acorex-modules-organization-management-department.entity-BkEbajpN.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-division.entity-Cds8jkR5.mjs +0 -515
- package/fesm2022/acorex-modules-organization-management-division.entity-Cds8jkR5.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-DfwjhVRX.mjs +0 -116
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-DfwjhVRX.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.service-D7NlQXp2.mjs +0 -147
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.service-D7NlQXp2.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart.page-DeqD7PyH.mjs +0 -989
- package/fesm2022/acorex-modules-organization-management-org-chart.page-DeqD7PyH.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-position.entity-DK-i78ck.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-settings.keys-B3cgSi_S.mjs +0 -22
- package/fesm2022/acorex-modules-organization-management-settings.keys-B3cgSi_S.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-settings.provider-feVwZnkw.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-setting-page.component-Y-liTcuX.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-modules-settings-management.mjs","sources":["../tmp-esm2022/settings-management/lib/features/settings/convert-setting-data.js","../tmp-esm2022/settings-management/lib/features/settings/settings.viewmodel.js","../tmp-esm2022/settings-management/lib/features/settings/search-definition.provider.js","../tmp-esm2022/settings-management/lib/features/settings/search.provider.js","../tmp-esm2022/settings-management/lib/menu.provider.js","../tmp-esm2022/settings-management/lib/settings-management.module.js","../tmp-esm2022/settings-management/acorex-modules-settings-management.js"],"sourcesContent":["export function searchSettings(groups, search) {\n const sectionMatchResult = [];\n const settingMatchResult = [];\n const processedGroups = new Set();\n const createGroupIdentifier = (group) => `${group.name}-${group.title}`;\n const addGroupToResult = (group, sections, resultArray) => {\n const groupId = createGroupIdentifier(group);\n if (!processedGroups.has(groupId)) {\n resultArray.push({\n ...group,\n sections,\n groups: [], // Exclude nested groups\n });\n processedGroups.add(groupId);\n }\n };\n const processSections = (group, filterFn) => {\n const matchedSections = group.sections.filter(filterFn);\n if (matchedSections.length > 0) {\n addGroupToResult(group, matchedSections, sectionMatchResult);\n }\n };\n const processSettings = (group, filterFn) => {\n const matchedSections = group.sections\n .map(filterFn)\n .filter((section) => section !== null);\n if (matchedSections.length > 0) {\n addGroupToResult(group, matchedSections, settingMatchResult);\n }\n };\n const sectionMatches = (section) => section.name.toLowerCase().includes(search.toLowerCase()) ||\n section.title.toLowerCase().includes(search.toLowerCase());\n const filterSettings = (section) => {\n const matchedSettings = section.settings.filter((setting) => setting.name.toLowerCase().includes(search.toLowerCase()) ||\n setting.title.toLowerCase().includes(search.toLowerCase()));\n return matchedSettings.length > 0 ? { ...section, settings: matchedSettings } : null;\n };\n const processGroupRecursively = (group) => {\n processSections(group, sectionMatches); // Match sections with all settings\n processSettings(group, filterSettings); // Match settings within sections\n group.groups.forEach(processGroupRecursively); // Recurse into nested groups\n };\n groups.forEach(processGroupRecursively);\n return [...sectionMatchResult, ...settingMatchResult];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC1zZXR0aW5nLWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvc2V0dGluZ3MtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NldHRpbmdzL2NvbnZlcnQtc2V0dGluZy1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sVUFBVSxjQUFjLENBQUMsTUFBbUMsRUFBRSxNQUFjO0lBQ2hGLE1BQU0sa0JBQWtCLEdBQWdDLEVBQUUsQ0FBQztJQUMzRCxNQUFNLGtCQUFrQixHQUFnQyxFQUFFLENBQUM7SUFDM0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUUxQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBZ0MsRUFBVSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUUzRyxNQUFNLGdCQUFnQixHQUFHLENBQ3ZCLEtBQWdDLEVBQ2hDLFFBQXVDLEVBQ3ZDLFdBQXdDLEVBQ3hDLEVBQUU7UUFDRixNQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2xDLFdBQVcsQ0FBQyxJQUFJLENBQUM7Z0JBQ2YsR0FBRyxLQUFLO2dCQUNSLFFBQVE7Z0JBQ1IsTUFBTSxFQUFFLEVBQUUsRUFBRSx3QkFBd0I7YUFDckMsQ0FBQyxDQUFDO1lBQ0gsZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsTUFBTSxlQUFlLEdBQUcsQ0FDdEIsS0FBZ0MsRUFDaEMsUUFBMkQsRUFDM0QsRUFBRTtRQUNGLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvQixnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDL0QsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLE1BQU0sZUFBZSxHQUFHLENBQ3RCLEtBQWdDLEVBQ2hDLFFBQXNGLEVBQ3RGLEVBQUU7UUFDRixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsUUFBUTthQUNuQyxHQUFHLENBQUMsUUFBUSxDQUFDO2FBQ2IsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUEwQyxFQUFFLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ2pGLElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvQixnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDL0QsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsT0FBb0MsRUFBVyxFQUFFLENBQ3ZFLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6RCxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUU3RCxNQUFNLGNBQWMsR0FBRyxDQUFDLE9BQW9DLEVBQXNDLEVBQUU7UUFDbEcsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQzdDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDVixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDekQsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQzdELENBQUM7UUFDRixPQUFPLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3ZGLENBQUMsQ0FBQztJQUVGLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxLQUFnQyxFQUFFLEVBQUU7UUFDbkUsZUFBZSxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLG1DQUFtQztRQUMzRSxlQUFlLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsaUNBQWlDO1FBQ3pFLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyw2QkFBNkI7SUFDOUUsQ0FBQyxDQUFDO0lBRUYsTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBRXhDLE9BQU8sQ0FBQyxHQUFHLGtCQUFrQixFQUFFLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztBQUN4RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQU2V0dGluZ0RlZmluaXRpb25Hcm91cCwgQVhQU2V0dGluZ0RlZmluaXRpb25TZWN0aW9uIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBzZWFyY2hTZXR0aW5ncyhncm91cHM6IEFYUFNldHRpbmdEZWZpbml0aW9uR3JvdXBbXSwgc2VhcmNoOiBzdHJpbmcpOiBBWFBTZXR0aW5nRGVmaW5pdGlvbkdyb3VwW10ge1xuICBjb25zdCBzZWN0aW9uTWF0Y2hSZXN1bHQ6IEFYUFNldHRpbmdEZWZpbml0aW9uR3JvdXBbXSA9IFtdO1xuICBjb25zdCBzZXR0aW5nTWF0Y2hSZXN1bHQ6IEFYUFNldHRpbmdEZWZpbml0aW9uR3JvdXBbXSA9IFtdO1xuICBjb25zdCBwcm9jZXNzZWRHcm91cHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICBjb25zdCBjcmVhdGVHcm91cElkZW50aWZpZXIgPSAoZ3JvdXA6IEFYUFNldHRpbmdEZWZpbml0aW9uR3JvdXApOiBzdHJpbmcgPT4gYCR7Z3JvdXAubmFtZX0tJHtncm91cC50aXRsZX1gO1xuXG4gIGNvbnN0IGFkZEdyb3VwVG9SZXN1bHQgPSAoXG4gICAgZ3JvdXA6IEFYUFNldHRpbmdEZWZpbml0aW9uR3JvdXAsXG4gICAgc2VjdGlvbnM6IEFYUFNldHRpbmdEZWZpbml0aW9uU2VjdGlvbltdLFxuICAgIHJlc3VsdEFycmF5OiBBWFBTZXR0aW5nRGVmaW5pdGlvbkdyb3VwW11cbiAgKSA9PiB7XG4gICAgY29uc3QgZ3JvdXBJZCA9IGNyZWF0ZUdyb3VwSWRlbnRpZmllcihncm91cCk7XG4gICAgaWYgKCFwcm9jZXNzZWRHcm91cHMuaGFzKGdyb3VwSWQpKSB7XG4gICAgICByZXN1bHRBcnJheS5wdXNoKHtcbiAgICAgICAgLi4uZ3JvdXAsXG4gICAgICAgIHNlY3Rpb25zLFxuICAgICAgICBncm91cHM6IFtdLCAvLyBFeGNsdWRlIG5lc3RlZCBncm91cHNcbiAgICAgIH0pO1xuICAgICAgcHJvY2Vzc2VkR3JvdXBzLmFkZChncm91cElkKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcHJvY2Vzc1NlY3Rpb25zID0gKFxuICAgIGdyb3VwOiBBWFBTZXR0aW5nRGVmaW5pdGlvbkdyb3VwLFxuICAgIGZpbHRlckZuOiAoc2VjdGlvbjogQVhQU2V0dGluZ0RlZmluaXRpb25TZWN0aW9uKSA9PiBib29sZWFuXG4gICkgPT4ge1xuICAgIGNvbnN0IG1hdGNoZWRTZWN0aW9ucyA9IGdyb3VwLnNlY3Rpb25zLmZpbHRlcihmaWx0ZXJGbik7XG4gICAgaWYgKG1hdGNoZWRTZWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBhZGRHcm91cFRvUmVzdWx0KGdyb3VwLCBtYXRjaGVkU2VjdGlvbnMsIHNlY3Rpb25NYXRjaFJlc3VsdCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHByb2Nlc3NTZXR0aW5ncyA9IChcbiAgICBncm91cDogQVhQU2V0dGluZ0RlZmluaXRpb25Hcm91cCxcbiAgICBmaWx0ZXJGbjogKHNlY3Rpb246IEFYUFNldHRpbmdEZWZpbml0aW9uU2VjdGlvbikgPT4gQVhQU2V0dGluZ0RlZmluaXRpb25TZWN0aW9uIHwgbnVsbFxuICApID0+IHtcbiAgICBjb25zdCBtYXRjaGVkU2VjdGlvbnMgPSBncm91cC5zZWN0aW9uc1xuICAgICAgLm1hcChmaWx0ZXJGbilcbiAgICAgIC5maWx0ZXIoKHNlY3Rpb24pOiBzZWN0aW9uIGlzIEFYUFNldHRpbmdEZWZpbml0aW9uU2VjdGlvbiA9PiBzZWN0aW9uICE9PSBudWxsKTtcbiAgICBpZiAobWF0Y2hlZFNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGFkZEdyb3VwVG9SZXN1bHQoZ3JvdXAsIG1hdGNoZWRTZWN0aW9ucywgc2V0dGluZ01hdGNoUmVzdWx0KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgc2VjdGlvbk1hdGNoZXMgPSAoc2VjdGlvbjogQVhQU2V0dGluZ0RlZmluaXRpb25TZWN0aW9uKTogYm9vbGVhbiA9PlxuICAgIHNlY3Rpb24ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaC50b0xvd2VyQ2FzZSgpKSB8fFxuICAgIHNlY3Rpb24udGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gudG9Mb3dlckNhc2UoKSk7XG5cbiAgY29uc3QgZmlsdGVyU2V0dGluZ3MgPSAoc2VjdGlvbjogQVhQU2V0dGluZ0RlZmluaXRpb25TZWN0aW9uKTogQVhQU2V0dGluZ0RlZmluaXRpb25TZWN0aW9uIHwgbnVsbCA9PiB7XG4gICAgY29uc3QgbWF0Y2hlZFNldHRpbmdzID0gc2VjdGlvbi5zZXR0aW5ncy5maWx0ZXIoXG4gICAgICAoc2V0dGluZykgPT5cbiAgICAgICAgc2V0dGluZy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoLnRvTG93ZXJDYXNlKCkpIHx8XG4gICAgICAgIHNldHRpbmcudGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gudG9Mb3dlckNhc2UoKSlcbiAgICApO1xuICAgIHJldHVybiBtYXRjaGVkU2V0dGluZ3MubGVuZ3RoID4gMCA/IHsgLi4uc2VjdGlvbiwgc2V0dGluZ3M6IG1hdGNoZWRTZXR0aW5ncyB9IDogbnVsbDtcbiAgfTtcblxuICBjb25zdCBwcm9jZXNzR3JvdXBSZWN1cnNpdmVseSA9IChncm91cDogQVhQU2V0dGluZ0RlZmluaXRpb25Hcm91cCkgPT4ge1xuICAgIHByb2Nlc3NTZWN0aW9ucyhncm91cCwgc2VjdGlvbk1hdGNoZXMpOyAvLyBNYXRjaCBzZWN0aW9ucyB3aXRoIGFsbCBzZXR0aW5nc1xuICAgIHByb2Nlc3NTZXR0aW5ncyhncm91cCwgZmlsdGVyU2V0dGluZ3MpOyAvLyBNYXRjaCBzZXR0aW5ncyB3aXRoaW4gc2VjdGlvbnNcbiAgICBncm91cC5ncm91cHMuZm9yRWFjaChwcm9jZXNzR3JvdXBSZWN1cnNpdmVseSk7IC8vIFJlY3Vyc2UgaW50byBuZXN0ZWQgZ3JvdXBzXG4gIH07XG5cbiAgZ3JvdXBzLmZvckVhY2gocHJvY2Vzc0dyb3VwUmVjdXJzaXZlbHkpO1xuXG4gIHJldHVybiBbLi4uc2VjdGlvbk1hdGNoUmVzdWx0LCAuLi5zZXR0aW5nTWF0Y2hSZXN1bHRdO1xufVxuIl19","import { AXPSettingDefinitionProviderService, AXPSettingService } from \"@acorex/platform/common\";\nimport { AXPPageStatus } from \"@acorex/platform/layout/builder\";\nimport { computed, inject } from \"@angular/core\";\nimport { signalStore, withMethods, withComputed, withState, withHooks, patchState } from \"@ngrx/signals\";\nimport { get, isEmpty, isEqual, isNil } from \"lodash-es\";\nimport { filter, merge } from \"rxjs\";\nimport { searchSettings } from \"./convert-setting-data\";\nimport { AXToastService } from \"@acorex/components/toast\";\nimport { AXTranslationService } from \"@acorex/core/translation\";\nimport { resolvePlatformScopeName } from \"@acorex/platform/core\";\nimport { AXLocaleService } from \"@acorex/core/locale\";\nimport { AXPLayoutThemeService } from \"@acorex/platform/themes/shared\";\nexport const AXPSettingsViewModel = signalStore(withState(() => ({\n groups: [],\n activateGroup: undefined,\n scope: 'U',\n //\n searchExpression: null,\n //\n previousContext: {},\n context: {},\n //\n status: AXPPageStatus.Processing,\n form: null,\n})), withComputed((store, layout = inject(AXPLayoutThemeService)) => ({\n searchResults: computed(() => searchSettings(store.groups(), store.searchExpression())),\n hasActivateGroup: computed(() => store.activateGroup() != null),\n showGroups: computed(() => store.activateGroup() != null && layout.isLarge()),\n scopeTitle: computed(() => {\n return `${resolvePlatformScopeName(store.scope())}.title`;\n }),\n scopeDescription: computed(() => {\n return `${resolvePlatformScopeName(store.scope())}.description`;\n }),\n isSearching: computed(() => store.searchExpression() != null),\n isBusy: computed(() => store.status() == AXPPageStatus.Processing),\n isSaving: computed(() => store.status() == AXPPageStatus.Submitting),\n isLoaded: computed(() => store.groups().length > 0),\n})), withMethods((store, settingDefinitionService = inject(AXPSettingDefinitionProviderService), settingValueService = inject(AXPSettingService), toastService = inject(AXToastService), translateService = inject(AXTranslationService)) => ({\n registerForm(form) {\n patchState(store, {\n form: form,\n });\n },\n async load(scope) {\n patchState(store, {\n scope: scope,\n status: AXPPageStatus.Processing,\n });\n //\n const groups = await settingDefinitionService.getListAsync(scope);\n patchState(store, {\n groups: groups,\n });\n const currentContext = await settingValueService.scope(scope).all();\n const defaults = await settingValueService.scope(scope).defaultValues();\n patchState(store, {\n context: { ...defaults, ...currentContext },\n });\n patchState(store, {\n previousContext: store.context(),\n status: AXPPageStatus.Rendered,\n });\n },\n async reload() {\n await settingDefinitionService.reload();\n const groups = await settingDefinitionService.getListAsync(store.scope());\n const oldActivateGroupName = store.activateGroup()?.name;\n patchState(store, {\n groups: groups,\n activateGroup: undefined,\n });\n if (oldActivateGroupName) {\n this.setActivateGroupByName(oldActivateGroupName);\n }\n },\n updateContext(context) {\n patchState(store, {\n context: { ...store.context(), ...context },\n });\n },\n updatePreviousContext(context) {\n patchState(store, {\n previousContext: { ...store.previousContext(), ...context },\n });\n },\n setActivateGroup(group) {\n patchState(store, {\n activateGroup: group,\n });\n },\n unloadActivateGroup() {\n patchState(store, {\n activateGroup: undefined,\n });\n },\n setActivateGroupByName(name) {\n const group = store.groups().find(g => g.name === name);\n if (group) {\n patchState(store, {\n activateGroup: group,\n });\n }\n },\n //\n async search(expression) {\n if (!isNil(expression) && !isEmpty(expression)) {\n patchState(store, {\n searchExpression: expression,\n });\n }\n else {\n patchState(store, {\n searchExpression: null,\n });\n }\n },\n clearSearch() {\n patchState(store, {\n searchExpression: null,\n });\n },\n isDirty() {\n return store.groups()?.some((group) => group.sections.some((sec) => sec.settings.some((setting) => {\n const currentValue = get(store.context(), setting.name);\n const previousValue = get(store.previousContext(), setting.name);\n return !isEqual(currentValue, previousValue);\n }))) || false;\n },\n async apply() {\n const i18nScope = \"settings\";\n try {\n if (await store.form() && this.isDirty()) {\n const form = store.form();\n form.resetErrors();\n //\n patchState(store, {\n status: AXPPageStatus.Submitting,\n });\n const formResult = await form.validate();\n if (!formResult.result) {\n toastService.show({\n color: 'danger',\n title: await translateService.translateAsync('actions.apply.invalid.title', { scope: i18nScope }),\n content: await translateService.translateAsync('actions.apply.invalid.message', { scope: i18nScope }),\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n patchState(store, {\n status: AXPPageStatus.Error,\n });\n return false;\n }\n await settingValueService.scope(store.scope()).set(store.context());\n // Show success notification\n toastService.show({\n color: 'success',\n title: await translateService.translateAsync('actions.apply.success.title', { scope: i18nScope }),\n content: await translateService.translateAsync('actions.apply.success.message', { scope: i18nScope }),\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n patchState(store, {\n status: AXPPageStatus.Submitted,\n });\n return true;\n }\n return false;\n }\n catch (error) {\n toastService.show({\n color: 'danger',\n title: await translateService.translateAsync('actions.apply.error.title', { scope: i18nScope }),\n content: await translateService.translateAsync('actions.apply.error.message', { scope: i18nScope }),\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n patchState(store, {\n status: AXPPageStatus.Error,\n });\n return false;\n }\n },\n async discard() {\n const form = store.form();\n form.resetErrors();\n //\n patchState(store, {\n status: AXPPageStatus.Rendered,\n });\n patchState(store, {\n context: store.previousContext(),\n });\n },\n async resetToDefault() {\n // Update the context with the defaults\n const defaults = await settingValueService.scope(store.scope()).defaultValues();\n patchState(store, {\n context: defaults,\n });\n //\n const result = await this.apply();\n if (!result) {\n this.discard();\n }\n },\n})), withHooks((store, settingValueService = inject(AXPSettingService), translationService = inject(AXTranslationService), localeService = inject(AXLocaleService)) => ({\n async onInit() {\n //\n settingValueService.onChanged.pipe(filter((c) => c.scope == store.scope())).subscribe((e) => {\n e.keys.forEach((k) => {\n const currentValue = e.values[k];\n const contextValue = get(store.context(), k);\n const previousValue = get(store.previousContext(), k);\n // Update only if there are actual changes\n if (!isEqual(previousValue, currentValue) || !isEqual(currentValue, contextValue)) {\n patchState(store, {\n previousContext: {\n ...store.previousContext(),\n [k]: currentValue,\n }\n });\n patchState(store, {\n context: {\n ...store.context(),\n [k]: currentValue,\n }\n });\n }\n });\n });\n //\n merge(translationService.langChanges$, localeService.profileChanged$).subscribe(async () => {\n if (store.isLoaded()) {\n await store.reload();\n }\n });\n },\n onDestroy() { },\n})));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3Mudmlld21vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3NldHRpbmdzLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9zZXR0aW5ncy9zZXR0aW5ncy52aWV3bW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE2QixtQ0FBbUMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBdUIsd0JBQXdCLEVBQW9CLE1BQU0sdUJBQXVCLENBQUM7QUFDeEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSXZFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLFdBQVcsQ0FDM0MsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFD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QUFFO3dCQUNkLGVBQWUsRUFBRTs0QkFDYixHQUFHLEtBQUssQ0FBQyxlQUFlLEVBQUU7NEJBQzFCLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWTt5QkFDcEI7cUJBQ0osQ0FBQyxDQUFDO29CQUNILFVBQVUsQ0FBQyxLQUFLLEVBQUU7d0JBQ2QsT0FBTyxFQUFFOzRCQUNMLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRTs0QkFDbEIsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZO3lCQUNwQjtxQkFDSixDQUFDLENBQUM7Z0JBQ1AsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFO1FBQ0YsS0FBSyxDQUNELGtCQUFrQixDQUFDLFlBQVksRUFDL0IsYUFBYSxDQUFDLGVBQWUsQ0FDaEMsQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDbkIsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztnQkFDbkIsTUFBTSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDekIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBRVAsQ0FBQztJQUNELFNBQVMsS0FBSyxDQUFDO0NBQ2xCLENBQUMsQ0FBQyxDQUVOLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBTZXR0aW5nRGVmaW5pdGlvbkdyb3VwLCBBWFBTZXR0aW5nRGVmaW5pdGlvblByb3ZpZGVyU2VydmljZSwgQVhQU2V0dGluZ1NlcnZpY2UgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS9jb21tb25cIjtcbmltcG9ydCB7IEFYUFBhZ2VTdGF0dXMgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlclwiO1xuaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBzaWduYWxTdG9yZSwgd2l0aE1ldGhvZHMsIHdpdGhDb21wdXRlZCwgd2l0aFN0YXRlLCB3aXRoSG9va3MsIHBhdGNoU3RhdGUgfSBmcm9tIFwiQG5ncngvc2lnbmFsc1wiO1xuaW1wb3J0IHsgZ2V0LCBpc0VtcHR5LCBpc0VxdWFsLCBpc05pbCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IGZpbHRlciwgbWVyZ2UgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgc2VhcmNoU2V0dGluZ3MgfSBmcm9tIFwiLi9jb252ZXJ0LXNldHRpbmctZGF0YVwiO1xuaW1wb3J0IHsgQVhGb3JtQ29tcG9uZW50IH0gZnJvbSBcIkBhY29yZXgvY29tcG9uZW50cy9mb3JtXCI7XG5pbXBvcnQgeyBBWFRvYXN0U2VydmljZSB9IGZyb20gXCJAYWNvcmV4L2NvbXBvbmVudHMvdG9hc3RcIjtcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSBcIkBhY29yZXgvY29yZS90cmFuc2xhdGlvblwiO1xuaW1wb3J0IHsgQVhQUGxhdGZvcm1TY29wZUtleSwgcmVzb2x2ZVBsYXRmb3JtU2NvcGVOYW1lLCBBWFBQbGF0Zm9ybVNjb3BlIH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vY29yZVwiO1xuaW1wb3J0IHsgQVhMb2NhbGVTZXJ2aWNlIH0gZnJvbSBcIkBhY29yZXgvY29yZS9sb2NhbGVcIjtcbmltcG9ydCB7IEFYUExheW91dFRoZW1lU2VydmljZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL3RoZW1lcy9zaGFyZWRcIjtcblxuXG5cbmV4cG9ydCBjb25zdCBBWFBTZXR0aW5nc1ZpZXdNb2RlbCA9IHNpZ25hbFN0b3JlKFxuICAgIHdpdGhTdGF0ZSgoKSA9PiAoe1xuICAgICAgICBncm91cHM6IFtdIGFzIEFYUFNldHRpbmdEZWZpbml0aW9uR3JvdXBbXSxcbiAgICAgICAgYWN0aXZhdGVHcm91cDogdW5kZWZpbmVkIGFzIEFYUFNldHRpbmdEZWZpbml0aW9uR3JvdXAgfCB1bmRlZmluZWQsXG4gICAgICAgIHNjb3BlOiAnVScgYXMgQVhQUGxhdGZvcm1TY29wZUtleSxcbiAgICAgICAgLy9cbiAgICAgICAgc2VhcmNoRXhwcmVzc2lvbjogbnVsbCBhcyBzdHJpbmcgfCBudWxsLFxuICAgICAgICAvL1xuICAgICAgICBwcmV2aW91c0NvbnRleHQ6IHt9IGFzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICAgIGNvbnRleHQ6IHt9IGFzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICAgIC8vXG4gICAgICAgIHN0YXR1czogQVhQUGFnZVN0YXR1cy5Qcm9jZXNzaW5nLFxuICAgICAgICBmb3JtOiBudWxsIGFzIEFYRm9ybUNvbXBvbmVudCB8IG51bGwsXG4gICAgfSkpLFxuICAgIHdpdGhDb21wdXRlZCgoc3RvcmUsIGxheW91dCA9IGluamVjdChBWFBMYXlvdXRUaGVtZVNlcnZpY2UpKSA9PiAoe1xuICAgICAgICBzZWFyY2hSZXN1bHRzOiBjb21wdXRlZCgoKSA9PiBzZWFyY2hTZXR0aW5ncyhzdG9yZS5ncm91cHMoKSwgc3RvcmUuc2VhcmNoRXhwcmVzc2lvbigpISkpLFxuICAgICAgICBoYXNBY3RpdmF0ZUdyb3VwOiBjb21wdXRlZCgoKSA9PiBzdG9yZS5hY3RpdmF0ZUdyb3VwKCkgIT0gbnVsbCksXG4gICAgICAgIHNob3dHcm91cHM6IGNvbXB1dGVkKCgpID0+IHN0b3JlLmFjdGl2YXRlR3JvdXAoKSAhPSBudWxsICYmIGxheW91dC5pc0xhcmdlKCkpLFxuICAgICAgICBzY29wZVRpdGxlOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYCR7cmVzb2x2ZVBsYXRmb3JtU2NvcGVOYW1lKHN0b3JlLnNjb3BlKCkpfS50aXRsZWA7XG4gICAgICAgIH0pLFxuICAgICAgICBzY29wZURlc2NyaXB0aW9uOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYCR7cmVzb2x2ZVBsYXRmb3JtU2NvcGVOYW1lKHN0b3JlLnNjb3BlKCkpfS5kZXNjcmlwdGlvbmA7XG4gICAgICAgIH0pLFxuICAgICAgICBpc1NlYXJjaGluZzogY29tcHV0ZWQoKCkgPT4gc3RvcmUuc2VhcmNoRXhwcmVzc2lvbigpICE9IG51bGwpLFxuICAgICAgICBpc0J1c3k6IGNvbXB1dGVkKCgpID0+IHN0b3JlLnN0YXR1cygpID09IEFYUFBhZ2VTdGF0dXMuUHJvY2Vzc2luZyksXG4gICAgICAgIGlzU2F2aW5nOiBjb21wdXRlZCgoKSA9PiBzdG9yZS5zdGF0dXMoKSA9PSBBWFBQYWdlU3RhdHVzLlN1Ym1pdHRpbmcpLFxuICAgICAgICBpc0xvYWRlZDogY29tcHV0ZWQoKCkgPT4gc3RvcmUuZ3JvdXBzKCkubGVuZ3RoID4gMCksXG4gICAgfSkpLFxuICAgIHdpdGhNZXRob2RzKFxuICAgICAgICAoc3RvcmUsXG4gICAgICAgICAgICBzZXR0aW5nRGVmaW5pdGlvblNlcnZpY2UgPSBpbmplY3QoQVhQU2V0dGluZ0RlZmluaXRpb25Qcm92aWRlclNlcnZpY2UpLFxuICAgICAgICAgICAgc2V0dGluZ1ZhbHVlU2VydmljZSA9IGluamVjdChBWFBTZXR0aW5nU2VydmljZSksXG4gICAgICAgICAgICB0b2FzdFNlcnZpY2UgPSBpbmplY3QoQVhUb2FzdFNlcnZpY2UpLFxuICAgICAgICAgICAgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSksXG4gICAgICAgICkgPT4gKHtcbiAgICAgICAgICAgIHJlZ2lzdGVyRm9ybShmb3JtOiBBWEZvcm1Db21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm06IGZvcm0sXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhc3luYyBsb2FkKHNjb3BlOiBBWFBQbGF0Zm9ybVNjb3BlS2V5KSB7XG4gICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICBzY29wZTogc2NvcGUsXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogQVhQUGFnZVN0YXR1cy5Qcm9jZXNzaW5nLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICBjb25zdCBncm91cHMgPSBhd2FpdCBzZXR0aW5nRGVmaW5pdGlvblNlcnZpY2UuZ2V0TGlzdEFzeW5jKHNjb3BlKTtcbiAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwczogZ3JvdXBzLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudENvbnRleHQgPSBhd2FpdCBzZXR0aW5nVmFsdWVTZXJ2aWNlLnNjb3BlKHNjb3BlIGFzIEFYUFBsYXRmb3JtU2NvcGUpLmFsbCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRzID0gYXdhaXQgc2V0dGluZ1ZhbHVlU2VydmljZS5zY29wZShzY29wZSBhcyBBWFBQbGF0Zm9ybVNjb3BlKS5kZWZhdWx0VmFsdWVzKCk7XG4gICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7IC4uLmRlZmF1bHRzLCAuLi5jdXJyZW50Q29udGV4dCB9LFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0NvbnRleHQ6IHN0b3JlLmNvbnRleHQoKSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBBWFBQYWdlU3RhdHVzLlJlbmRlcmVkLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXN5bmMgcmVsb2FkKCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHNldHRpbmdEZWZpbml0aW9uU2VydmljZS5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cHMgPSBhd2FpdCBzZXR0aW5nRGVmaW5pdGlvblNlcnZpY2UuZ2V0TGlzdEFzeW5jKHN0b3JlLnNjb3BlKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9sZEFjdGl2YXRlR3JvdXBOYW1lID0gc3RvcmUuYWN0aXZhdGVHcm91cCgpPy5uYW1lO1xuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiBncm91cHMsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlR3JvdXA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIGlmIChvbGRBY3RpdmF0ZUdyb3VwTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEFjdGl2YXRlR3JvdXBCeU5hbWUob2xkQWN0aXZhdGVHcm91cE5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1cGRhdGVDb250ZXh0KGNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgLi4uc3RvcmUuY29udGV4dCgpLCAuLi5jb250ZXh0IH0sXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1cGRhdGVQcmV2aW91c0NvbnRleHQoY29udGV4dDogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNDb250ZXh0OiB7IC4uLnN0b3JlLnByZXZpb3VzQ29udGV4dCgpLCAuLi5jb250ZXh0IH0sXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRBY3RpdmF0ZUdyb3VwKGdyb3VwOiBBWFBTZXR0aW5nRGVmaW5pdGlvbkdyb3VwKSB7XG4gICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICBhY3RpdmF0ZUdyb3VwOiBncm91cCxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVubG9hZEFjdGl2YXRlR3JvdXAoKSB7XG4gICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICBhY3RpdmF0ZUdyb3VwOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRBY3RpdmF0ZUdyb3VwQnlOYW1lKG5hbWU6IHN0cmluZykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gc3RvcmUuZ3JvdXBzKCkuZmluZChnID0+IGcubmFtZSA9PT0gbmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlR3JvdXA6IGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgYXN5bmMgc2VhcmNoKGV4cHJlc3Npb246IHN0cmluZykge1xuICAgICAgICAgICAgICAgIGlmICghaXNOaWwoZXhwcmVzc2lvbikgJiYgIWlzRW1wdHkoZXhwcmVzc2lvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoRXhwcmVzc2lvbjogZXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEV4cHJlc3Npb246IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsZWFyU2VhcmNoKCkge1xuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoRXhwcmVzc2lvbjogbnVsbCxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzRGlydHkoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmdyb3VwcygpPy5zb21lKChncm91cCkgPT5cbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAuc2VjdGlvbnMuc29tZSgoc2VjKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjLnNldHRpbmdzLnNvbWUoKHNldHRpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBnZXQoc3RvcmUuY29udGV4dCgpLCBzZXR0aW5nLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBnZXQoc3RvcmUucHJldmlvdXNDb250ZXh0KCksIHNldHRpbmcubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFpc0VxdWFsKGN1cnJlbnRWYWx1ZSwgcHJldmlvdXNWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSB8fCBmYWxzZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFzeW5jIGFwcGx5KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGkxOG5TY29wZSA9IFwic2V0dGluZ3NcIjtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXdhaXQgc3RvcmUuZm9ybSgpICYmIHRoaXMuaXNEaXJ0eSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtID0gc3RvcmUuZm9ybSgpITtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0ucmVzZXRFcnJvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBBWFBQYWdlU3RhdHVzLlN1Ym1pdHRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1SZXN1bHQgPSBhd2FpdCBmb3JtLnZhbGlkYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZvcm1SZXN1bHQucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3RTZXJ2aWNlLnNob3coe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhd2FpdCB0cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdhY3Rpb25zLmFwcGx5LmludmFsaWQudGl0bGUnLCB7IHNjb3BlOiBpMThuU2NvcGUgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGF3YWl0IHRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ2FjdGlvbnMuYXBwbHkuaW52YWxpZC5tZXNzYWdlJywgeyBzY29wZTogaTE4blNjb3BlIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZU91dFByb2dyZXNzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBBWFBQYWdlU3RhdHVzLkVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHNldHRpbmdWYWx1ZVNlcnZpY2Uuc2NvcGUoc3RvcmUuc2NvcGUoKSBhcyBBWFBQbGF0Zm9ybVNjb3BlKS5zZXQoc3RvcmUuY29udGV4dCgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNob3cgc3VjY2VzcyBub3RpZmljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhd2FpdCB0cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdhY3Rpb25zLmFwcGx5LnN1Y2Nlc3MudGl0bGUnLCB7IHNjb3BlOiBpMThuU2NvcGUgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogYXdhaXQgdHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnYWN0aW9ucy5hcHBseS5zdWNjZXNzLm1lc3NhZ2UnLCB7IHNjb3BlOiBpMThuU2NvcGUgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lT3V0OiAzMDAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVPdXRQcm9ncmVzczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogQVhQUGFnZVN0YXR1cy5TdWJtaXR0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYXdhaXQgdHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnYWN0aW9ucy5hcHBseS5lcnJvci50aXRsZScsIHsgc2NvcGU6IGkxOG5TY29wZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGF3YWl0IHRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ2FjdGlvbnMuYXBwbHkuZXJyb3IubWVzc2FnZScsIHsgc2NvcGU6IGkxOG5TY29wZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVPdXQ6IDMwMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXMuRXJyb3IsXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXN5bmMgZGlzY2FyZCgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtID0gc3RvcmUuZm9ybSgpITtcbiAgICAgICAgICAgICAgICBmb3JtLnJlc2V0RXJyb3JzKCk7XG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogQVhQUGFnZVN0YXR1cy5SZW5kZXJlZCxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogc3RvcmUucHJldmlvdXNDb250ZXh0KCksXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhc3luYyByZXNldFRvRGVmYXVsdCgpIHtcbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGNvbnRleHQgIHdpdGggdGhlIGRlZmF1bHRzXG4gICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdHMgPSBhd2FpdCBzZXR0aW5nVmFsdWVTZXJ2aWNlLnNjb3BlKHN0b3JlLnNjb3BlKCkgYXMgQVhQUGxhdGZvcm1TY29wZSkuZGVmYXVsdFZhbHVlcygpO1xuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogZGVmYXVsdHMsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYXBwbHkoKTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2NhcmQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KSksXG4gICAgd2l0aEhvb2tzKChzdG9yZSxcbiAgICAgICAgc2V0dGluZ1ZhbHVlU2VydmljZSA9IGluamVjdChBWFBTZXR0aW5nU2VydmljZSksXG4gICAgICAgIHRyYW5zbGF0aW9uU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSksXG4gICAgICAgIGxvY2FsZVNlcnZpY2UgPSBpbmplY3QoQVhMb2NhbGVTZXJ2aWNlKVxuICAgICkgPT4gKHtcbiAgICAgICAgYXN5bmMgb25Jbml0KCkge1xuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIHNldHRpbmdWYWx1ZVNlcnZpY2Uub25DaGFuZ2VkLnBpcGUoZmlsdGVyKChjKSA9PiBjLnNjb3BlID09IHN0b3JlLnNjb3BlKCkpKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgICAgICBlLmtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBlLnZhbHVlc1trXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGV4dFZhbHVlID0gZ2V0KHN0b3JlLmNvbnRleHQoKSwgayk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBnZXQoc3RvcmUucHJldmlvdXNDb250ZXh0KCksIGspO1xuICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgb25seSBpZiB0aGVyZSBhcmUgYWN0dWFsIGNoYW5nZXNcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0VxdWFsKHByZXZpb3VzVmFsdWUsIGN1cnJlbnRWYWx1ZSkgfHwgIWlzRXF1YWwoY3VycmVudFZhbHVlLCBjb250ZXh0VmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNDb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnN0b3JlLnByZXZpb3VzQ29udGV4dCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBba106IGN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnN0b3JlLmNvbnRleHQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tdOiBjdXJyZW50VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIG1lcmdlKFxuICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uU2VydmljZS5sYW5nQ2hhbmdlcyQsXG4gICAgICAgICAgICAgICAgbG9jYWxlU2VydmljZS5wcm9maWxlQ2hhbmdlZCRcbiAgICAgICAgICAgICkuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3RvcmUuaXNMb2FkZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBzdG9yZS5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9LFxuICAgICAgICBvbkRlc3Ryb3koKSB7IH0sXG4gICAgfSkpXG5cbikiXX0=","export class AXPSettingSearchDefinitionProvider {\n async provide(context) {\n context.addDefinition('setting', 'Setting', 'setting', 'fa-solid fa-gear', 3, {\n format: {\n id: '{{data.name}}',\n },\n actions: [\n {\n name: 'navigate',\n type: 'view',\n priority: 'primary',\n },\n ],\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWRlZmluaXRpb24ucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvc2V0dGluZ3MtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NldHRpbmdzL3NlYXJjaC1kZWZpbml0aW9uLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxrQ0FBa0M7SUFDN0MsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUEyQztRQUN2RCxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUMsRUFBRTtZQUM1RSxNQUFNLEVBQUU7Z0JBQ04sRUFBRSxFQUFFLGVBQWU7YUFDcEI7WUFDRCxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLElBQUksRUFBRSxNQUFNO29CQUNaLFFBQVEsRUFBRSxTQUFTO2lCQUNwQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQU2VhcmNoRGVmaW5pdGlvblByb3ZpZGVyLCBBWFBTZWFyY2hEZWZpbml0aW9uUHJvdmlkZXJDb250ZXh0IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuXG5leHBvcnQgY2xhc3MgQVhQU2V0dGluZ1NlYXJjaERlZmluaXRpb25Qcm92aWRlciBpbXBsZW1lbnRzIEFYUFNlYXJjaERlZmluaXRpb25Qcm92aWRlciB7XG4gIGFzeW5jIHByb3ZpZGUoY29udGV4dDogQVhQU2VhcmNoRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnRleHQuYWRkRGVmaW5pdGlvbignc2V0dGluZycsICdTZXR0aW5nJywgJ3NldHRpbmcnLCAnZmEtc29saWQgZmEtZ2VhcicsIDMsIHtcbiAgICAgIGZvcm1hdDoge1xuICAgICAgICBpZDogJ3t7ZGF0YS5uYW1lfX0nLFxuICAgICAgfSxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICduYXZpZ2F0ZScsXG4gICAgICAgICAgdHlwZTogJ3ZpZXcnLFxuICAgICAgICAgIHByaW9yaXR5OiAncHJpbWFyeScsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=","import { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPSettingDefinitionProviderService, } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { inject } from '@angular/core';\nimport { sortBy } from 'lodash-es';\nexport class AXPSettingSearchProvider {\n constructor() {\n this.settingService = inject(AXPSettingDefinitionProviderService);\n this.sessionService = inject(AXPSessionService);\n }\n async search(text) {\n const groupsSetting = this.settingService.getList(AXPPlatformScope.User);\n if (groupsSetting.length == 0) {\n groupsSetting.push(...(await this.settingService.getListAsync(AXPPlatformScope.User)));\n }\n // Step 2: Flatten settings from groups\n const allSettings = [];\n const extractSettings = (group) => {\n for (const section of group.sections) {\n allSettings.push(...section.settings.map((x) => ({ ...x, group })));\n }\n for (const subGroup of group.groups) {\n extractSettings(subGroup); // Recursive extraction\n }\n };\n for (const group of groupsSetting) {\n extractSettings(group);\n }\n // Step 3: Search settings by title\n const searchResults = allSettings.filter((setting) => setting.title.toLowerCase().includes(text.toLowerCase()));\n return sortBy(searchResults.map((setting) => ({\n title: setting.title,\n description: setting.description,\n group: 'setting',\n data: setting,\n command: {\n name: 'navigate',\n options: {\n type: 'router',\n options: {\n path: `/${this.sessionService.application?.name}/settings/user/${setting.group.name}#${setting.title}`,\n },\n }\n },\n parent: setting.group\n ? {\n title: setting.group.title,\n data: setting.group,\n }\n : undefined,\n })), ['title']);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3NldHRpbmdzLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9zZXR0aW5ncy9zZWFyY2gucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUtMLG1DQUFtQyxHQUNwQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQU1uQyxNQUFNLE9BQU8sd0JBQXdCO0lBQXJDO1FBQ1UsbUJBQWMsR0FBRyxNQUFNLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUM3RCxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBbURyRCxDQUFDO0lBakRDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBWTtRQUN2QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RSxJQUFJLGFBQWEsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDOUIsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekYsQ0FBQztRQUVELHVDQUF1QztRQUN2QyxNQUFNLFdBQVcsR0FBaUMsRUFBRSxDQUFDO1FBQ3JELE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBZ0MsRUFBRSxFQUFFO1lBQzNELEtBQUssTUFBTSxPQUFPLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNyQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQWlDLENBQUEsQ0FBQyxDQUFDLENBQUM7WUFDcEcsQ0FBQztZQUNELEtBQUssTUFBTSxRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNwQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyx1QkFBdUI7WUFDcEQsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLEtBQUssTUFBTSxLQUFLLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFFRCxtQ0FBbUM7UUFDbkMsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVoSCxPQUFPLE1BQU0sQ0FDWCxhQUFhLENBQUMsR0FBRyxDQUFrQixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMvQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7WUFDcEIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1lBQ2hDLEtBQUssRUFBRSxTQUFTO1lBQ2hCLElBQUksRUFBRSxPQUFPO1lBQ2IsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxVQUFVO2dCQUNoQixPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsT0FBTyxFQUFFO3dCQUNQLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLElBQUksa0JBQWtCLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7cUJBQ3ZHO2lCQUNGO2FBQ0Y7WUFDRCxNQUFNLEVBQUUsT0FBTyxDQUFDLEtBQUs7Z0JBQ25CLENBQUMsQ0FBQztvQkFDQSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLO29CQUMxQixJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQWtDO2lCQUNqRDtnQkFDRCxDQUFDLENBQUMsU0FBUztTQUNkLENBQUMsQ0FBQyxFQUNILENBQUMsT0FBTyxDQUFDLENBQ1YsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7XG4gIEFYUFNlYXJjaFByb3ZpZGVyLFxuICBBWFBTZWFyY2hSZXN1bHQsXG4gIEFYUFNldHRpbmdEZWZpbml0aW9uLFxuICBBWFBTZXR0aW5nRGVmaW5pdGlvbkdyb3VwLFxuICBBWFBTZXR0aW5nRGVmaW5pdGlvblByb3ZpZGVyU2VydmljZSxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQUGxhdGZvcm1TY29wZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNvcnRCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQU2V0dGluZ0RlZmluaXRpb25TZWFyY2ggZXh0ZW5kcyBBWFBTZXR0aW5nRGVmaW5pdGlvbiB7XG4gIGdyb3VwOiBBWFBTZXR0aW5nRGVmaW5pdGlvbkdyb3VwO1xufVxuXG5leHBvcnQgY2xhc3MgQVhQU2V0dGluZ1NlYXJjaFByb3ZpZGVyIGltcGxlbWVudHMgQVhQU2VhcmNoUHJvdmlkZXIge1xuICBwcml2YXRlIHNldHRpbmdTZXJ2aWNlID0gaW5qZWN0KEFYUFNldHRpbmdEZWZpbml0aW9uUHJvdmlkZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZSA9IGluamVjdChBWFBTZXNzaW9uU2VydmljZSk7XG5cbiAgYXN5bmMgc2VhcmNoKHRleHQ6IHN0cmluZyk6IFByb21pc2U8QVhQU2VhcmNoUmVzdWx0W10+IHtcbiAgICBjb25zdCBncm91cHNTZXR0aW5nID0gdGhpcy5zZXR0aW5nU2VydmljZS5nZXRMaXN0KEFYUFBsYXRmb3JtU2NvcGUuVXNlcik7XG4gICAgaWYgKGdyb3Vwc1NldHRpbmcubGVuZ3RoID09IDApIHtcbiAgICAgIGdyb3Vwc1NldHRpbmcucHVzaCguLi4oYXdhaXQgdGhpcy5zZXR0aW5nU2VydmljZS5nZXRMaXN0QXN5bmMoQVhQUGxhdGZvcm1TY29wZS5Vc2VyKSkpO1xuICAgIH1cblxuICAgIC8vIFN0ZXAgMjogRmxhdHRlbiBzZXR0aW5ncyBmcm9tIGdyb3Vwc1xuICAgIGNvbnN0IGFsbFNldHRpbmdzOiBBWFBTZXR0aW5nRGVmaW5pdGlvblNlYXJjaFtdID0gW107XG4gICAgY29uc3QgZXh0cmFjdFNldHRpbmdzID0gKGdyb3VwOiBBWFBTZXR0aW5nRGVmaW5pdGlvbkdyb3VwKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2YgZ3JvdXAuc2VjdGlvbnMpIHtcbiAgICAgICAgYWxsU2V0dGluZ3MucHVzaCguLi5zZWN0aW9uLnNldHRpbmdzLm1hcCgoeCkgPT4gKHsgLi4ueCwgZ3JvdXAgfSBhcyBBWFBTZXR0aW5nRGVmaW5pdGlvblNlYXJjaCkpKTtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qgc3ViR3JvdXAgb2YgZ3JvdXAuZ3JvdXBzKSB7XG4gICAgICAgIGV4dHJhY3RTZXR0aW5ncyhzdWJHcm91cCk7IC8vIFJlY3Vyc2l2ZSBleHRyYWN0aW9uXG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzU2V0dGluZykge1xuICAgICAgZXh0cmFjdFNldHRpbmdzKGdyb3VwKTtcbiAgICB9XG5cbiAgICAvLyBTdGVwIDM6IFNlYXJjaCBzZXR0aW5ncyBieSB0aXRsZVxuICAgIGNvbnN0IHNlYXJjaFJlc3VsdHMgPSBhbGxTZXR0aW5ncy5maWx0ZXIoKHNldHRpbmcpID0+IHNldHRpbmcudGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXh0LnRvTG93ZXJDYXNlKCkpKTtcblxuICAgIHJldHVybiBzb3J0QnkoXG4gICAgICBzZWFyY2hSZXN1bHRzLm1hcDxBWFBTZWFyY2hSZXN1bHQ+KChzZXR0aW5nKSA9PiAoe1xuICAgICAgICB0aXRsZTogc2V0dGluZy50aXRsZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHNldHRpbmcuZGVzY3JpcHRpb24sXG4gICAgICAgIGdyb3VwOiAnc2V0dGluZycsXG4gICAgICAgIGRhdGE6IHNldHRpbmcsXG4gICAgICAgIGNvbW1hbmQ6IHtcbiAgICAgICAgICBuYW1lOiAnbmF2aWdhdGUnLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIHR5cGU6ICdyb3V0ZXInLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBwYXRoOiBgLyR7dGhpcy5zZXNzaW9uU2VydmljZS5hcHBsaWNhdGlvbj8ubmFtZX0vc2V0dGluZ3MvdXNlci8ke3NldHRpbmcuZ3JvdXAubmFtZX0jJHtzZXR0aW5nLnRpdGxlfWAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcGFyZW50OiBzZXR0aW5nLmdyb3VwXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICB0aXRsZTogc2V0dGluZy5ncm91cC50aXRsZSxcbiAgICAgICAgICAgIGRhdGE6IHNldHRpbmcuZ3JvdXAgYXMgQVhQU2V0dGluZ0RlZmluaXRpb25Hcm91cCxcbiAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICB9KSksXG4gICAgICBbJ3RpdGxlJ11cbiAgICApO1xuICB9XG59XG4iXX0=","import { AXPSessionService } from '@acorex/platform/auth';\nimport { inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nexport class AXMMenuProvider {\n constructor() {\n this.sessionService = inject(AXPSessionService);\n }\n async provide(context) {\n const appName = this.sessionService.application?.name;\n const isAuthorized = await firstValueFrom(this.sessionService.isAuthorized$);\n if (!isAuthorized) {\n return;\n }\n context.find('user-profile').addItems([\n {\n text: `t('user.title', {scope: \"settings\"})`,\n name: 'user-settings',\n icon: 'fa-light fa-gear',\n path: `/${this.sessionService.application?.name}/settings/user`,\n },\n ]);\n context.addItems([\n {\n name: 'tenant-application-settings',\n priority: 10000000,\n text: `t('tenant.title', {scope: \"settings\"})`,\n type: 'menu',\n icon: 'fa-light fa-gear',\n path: `/${appName}/settings/tenant`,\n data: {\n requiredPermission: 'admin',\n },\n },\n ]);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9zZXR0aW5ncy1tYW5hZ2VtZW50L3NyYy9saWIvbWVudS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsTUFBTSxPQUFPLGVBQWU7SUFBNUI7UUFDVSxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBaUNyRCxDQUFDO0lBL0JDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBK0I7UUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDO1FBRXRELE1BQU0sWUFBWSxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFDcEM7Z0JBQ0UsSUFBSSxFQUFFLHNDQUFzQztnQkFDNUMsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLElBQUksRUFBRSxrQkFBa0I7Z0JBQ3hCLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLElBQUksZ0JBQWdCO2FBQ2hFO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUNmO2dCQUNFLElBQUksRUFBRSw2QkFBNkI7Z0JBQ25DLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixJQUFJLEVBQUUsd0NBQXdDO2dCQUM5QyxJQUFJLEVBQUUsTUFBTTtnQkFDWixJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixJQUFJLEVBQUUsSUFBSSxPQUFPLGtCQUFrQjtnQkFDbkMsSUFBSSxFQUFFO29CQUNKLGtCQUFrQixFQUFFLE9BQU87aUJBQzVCO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWFBNZW51UHJvdmlkZXIsIEFYUE1lbnVQcm92aWRlckNvbnRleHQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBBWE1NZW51UHJvdmlkZXIgaW1wbGVtZW50cyBBWFBNZW51UHJvdmlkZXIge1xuICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcblxuICBhc3luYyBwcm92aWRlKGNvbnRleHQ6IEFYUE1lbnVQcm92aWRlckNvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBhcHBOYW1lID0gdGhpcy5zZXNzaW9uU2VydmljZS5hcHBsaWNhdGlvbj8ubmFtZTtcblxuICAgIGNvbnN0IGlzQXV0aG9yaXplZCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2Vzc2lvblNlcnZpY2UuaXNBdXRob3JpemVkJCk7XG4gICAgaWYgKCFpc0F1dGhvcml6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb250ZXh0LmZpbmQoJ3VzZXItcHJvZmlsZScpLmFkZEl0ZW1zKFtcbiAgICAgIHtcbiAgICAgICAgdGV4dDogYHQoJ3VzZXIudGl0bGUnLCB7c2NvcGU6IFwic2V0dGluZ3NcIn0pYCxcbiAgICAgICAgbmFtZTogJ3VzZXItc2V0dGluZ3MnLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtZ2VhcicsXG4gICAgICAgIHBhdGg6IGAvJHt0aGlzLnNlc3Npb25TZXJ2aWNlLmFwcGxpY2F0aW9uPy5uYW1lfS9zZXR0aW5ncy91c2VyYCxcbiAgICAgIH0sXG4gICAgXSk7XG5cbiAgICBjb250ZXh0LmFkZEl0ZW1zKFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3RlbmFudC1hcHBsaWNhdGlvbi1zZXR0aW5ncycsXG4gICAgICAgIHByaW9yaXR5OiAxMDAwMDAwMCxcbiAgICAgICAgdGV4dDogYHQoJ3RlbmFudC50aXRsZScsIHtzY29wZTogXCJzZXR0aW5nc1wifSlgLFxuICAgICAgICB0eXBlOiAnbWVudScsXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1nZWFyJyxcbiAgICAgICAgcGF0aDogYC8ke2FwcE5hbWV9L3NldHRpbmdzL3RlbmFudGAsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICByZXF1aXJlZFBlcm1pc3Npb246ICdhZG1pbicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG59XG4iXX0=","import { AXPAuthGuard } from '@acorex/platform/auth';\nimport { AXP_MENU_PROVIDER, AXP_SEARCH_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex/platform/common';\nimport { AXPAppStartUpService } from '@acorex/platform/core';\nimport { AXPRootLayoutComponent } from '@acorex/platform/themes/default';\nimport { Injector, NgModule } from '@angular/core';\nimport { ROUTES } from '@angular/router';\nimport { AXPSettingSearchDefinitionProvider } from './features/settings/search-definition.provider';\nimport { AXPSettingSearchProvider } from './features/settings/search.provider';\nimport { AXMMenuProvider } from './menu.provider';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/core\";\nfunction routesFacory() {\n let routes = [\n {\n path: ':app/settings/:scope',\n canActivate: [AXPAuthGuard],\n loadComponent: () => {\n return AXPRootLayoutComponent;\n },\n children: [\n {\n path: '',\n loadComponent: () => import('./features/settings/setting-page/setting-page.component').then((c) => c.AXPSettingPageComponent),\n data: { reuse: true },\n children: [\n {\n path: ':group',\n loadComponent: () => import('./features/settings/setting-view/setting-view.component').then((c) => c.AXPSettingsViewComponent),\n },\n ],\n },\n ],\n },\n ];\n return routes;\n}\nexport class AXMSettingsManagementModule {\n constructor(appInitService, injector) { }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXMSettingsManagementModule, deps: [{ token: i1.AXPAppStartUpService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: AXMSettingsManagementModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXMSettingsManagementModule, providers: [\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXPSettingSearchProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_DEFINITION_PROVIDER,\n useClass: AXPSettingSearchDefinitionProvider,\n multi: true,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXMSettingsManagementModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXPSettingSearchProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_DEFINITION_PROVIDER,\n useClass: AXPSettingSearchDefinitionProvider,\n multi: true,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n ],\n }]\n }], ctorParameters: () => [{ type: i1.AXPAppStartUpService }, { type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MtbWFuYWdlbWVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvc2V0dGluZ3MtbWFuYWdlbWVudC9zcmMvbGliL3NldHRpbmdzLW1hbmFnZW1lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsOEJBQThCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQVUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDcEcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFFbEQsU0FBUyxZQUFZO0lBQ25CLElBQUksTUFBTSxHQUFXO1FBQ25CO1lBQ0UsSUFBSSxFQUFFLHNCQUFzQjtZQUM1QixXQUFXLEVBQUUsQ0FBQyxZQUFZLENBQUM7WUFDM0IsYUFBYSxFQUFFLEdBQUcsRUFBRTtnQkFDbEIsT0FBTyxzQkFBc0IsQ0FBQztZQUNoQyxDQUFDO1lBQ0QsUUFBUSxFQUFFO2dCQUNSO29CQUNFLElBQUksRUFBRSxFQUFFO29CQUNSLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FDbEIsTUFBTSxDQUFDLHlEQUF5RCxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUM7b0JBQzFHLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7b0JBQ3JCLFFBQVEsRUFBRTt3QkFDUjs0QkFDRSxJQUFJLEVBQUUsUUFBUTs0QkFDZCxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQ2xCLE1BQU0sQ0FBQyx5REFBeUQsQ0FBQyxDQUFDLElBQUksQ0FDcEUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FDbEM7eUJBQ0o7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQztJQUNGLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUE2QkQsTUFBTSxPQUFPLDJCQUEyQjtJQUN0QyxZQUFZLGNBQW9DLEVBQUUsUUFBa0IsSUFBSSxDQUFDOzhHQUQ5RCwyQkFBMkI7K0dBQTNCLDJCQUEyQjsrR0FBM0IsMkJBQTJCLGFBdkIzQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxtQkFBbUI7Z0JBQzVCLFFBQVEsRUFBRSx3QkFBd0I7Z0JBQ2xDLEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRDtnQkFDRSxPQUFPLEVBQUUsOEJBQThCO2dCQUN2QyxRQUFRLEVBQUUsa0NBQWtDO2dCQUM1QyxLQUFLLEVBQUUsSUFBSTthQUNaO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLE1BQU07Z0JBQ2YsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsVUFBVSxFQUFFLFlBQVk7YUFDekI7WUFDRDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixRQUFRLEVBQUUsZUFBZTtnQkFDekIsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGOzsyRkFFVSwyQkFBMkI7a0JBM0J2QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxFQUFFO29CQUNYLE9BQU8sRUFBRSxFQUFFO29CQUNYLFlBQVksRUFBRSxFQUFFO29CQUNoQixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsUUFBUSxFQUFFLHdCQUF3Qjs0QkFDbEMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLDhCQUE4Qjs0QkFDdkMsUUFBUSxFQUFFLGtDQUFrQzs0QkFDNUMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLE1BQU07NEJBQ2YsS0FBSyxFQUFFLElBQUk7NEJBQ1gsVUFBVSxFQUFFLFlBQVk7eUJBQ3pCO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFFBQVEsRUFBRSxlQUFlOzRCQUN6QixLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUEF1dGhHdWFyZCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWFBfTUVOVV9QUk9WSURFUiwgQVhQX1NFQVJDSF9ERUZJTklUSU9OX1BST1ZJREVSLCBBWFBfU0VBUkNIX1BST1ZJREVSIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQQXBwU3RhcnRVcFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQUm9vdExheW91dENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vdGhlbWVzL2RlZmF1bHQnO1xuaW1wb3J0IHsgSW5qZWN0b3IsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXMsIFJPVVRFUyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBWFBTZXR0aW5nU2VhcmNoRGVmaW5pdGlvblByb3ZpZGVyIH0gZnJvbSAnLi9mZWF0dXJlcy9zZXR0aW5ncy9zZWFyY2gtZGVmaW5pdGlvbi5wcm92aWRlcic7XG5pbXBvcnQgeyBBWFBTZXR0aW5nU2VhcmNoUHJvdmlkZXIgfSBmcm9tICcuL2ZlYXR1cmVzL3NldHRpbmdzL3NlYXJjaC5wcm92aWRlcic7XG5pbXBvcnQgeyBBWE1NZW51UHJvdmlkZXIgfSBmcm9tICcuL21lbnUucHJvdmlkZXInO1xuXG5mdW5jdGlvbiByb3V0ZXNGYWNvcnkoKSB7XG4gIGxldCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAgICB7XG4gICAgICBwYXRoOiAnOmFwcC9zZXR0aW5ncy86c2NvcGUnLFxuICAgICAgY2FuQWN0aXZhdGU6IFtBWFBBdXRoR3VhcmRdLFxuICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gQVhQUm9vdExheW91dENvbXBvbmVudDtcbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICB7XG4gICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgIGltcG9ydCgnLi9mZWF0dXJlcy9zZXR0aW5ncy9zZXR0aW5nLXBhZ2Uvc2V0dGluZy1wYWdlLmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuQVhQU2V0dGluZ1BhZ2VDb21wb25lbnQpLFxuICAgICAgICAgIGRhdGE6IHsgcmV1c2U6IHRydWUgfSxcbiAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwYXRoOiAnOmdyb3VwJyxcbiAgICAgICAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICBpbXBvcnQoJy4vZmVhdHVyZXMvc2V0dGluZ3Mvc2V0dGluZy12aWV3L3NldHRpbmctdmlldy5jb21wb25lbnQnKS50aGVuKFxuICAgICAgICAgICAgICAgICAgKGMpID0+IGMuQVhQU2V0dGluZ3NWaWV3Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIF07XG4gIHJldHVybiByb3V0ZXM7XG59XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtdLFxuICBleHBvcnRzOiBbXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX1NFQVJDSF9QUk9WSURFUixcbiAgICAgIHVzZUNsYXNzOiBBWFBTZXR0aW5nU2VhcmNoUHJvdmlkZXIsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUF9TRUFSQ0hfREVGSU5JVElPTl9QUk9WSURFUixcbiAgICAgIHVzZUNsYXNzOiBBWFBTZXR0aW5nU2VhcmNoRGVmaW5pdGlvblByb3ZpZGVyLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBST1VURVMsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUZhY3Rvcnk6IHJvdXRlc0ZhY29yeSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUF9NRU5VX1BST1ZJREVSLFxuICAgICAgdXNlQ2xhc3M6IEFYTU1lbnVQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTVNldHRpbmdzTWFuYWdlbWVudE1vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKGFwcEluaXRTZXJ2aWNlOiBBWFBBcHBTdGFydFVwU2VydmljZSwgaW5qZWN0b3I6IEluamVjdG9yKSB7IH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LW1vZHVsZXMtc2V0dGluZ3MtbWFuYWdlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9zZXR0aW5ncy1tYW5hZ2VtZW50L3NyYy9hY29yZXgtbW9kdWxlcy1zZXR0aW5ncy1tYW5hZ2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-modules-settings-management.mjs","sources":["../tmp-esm2022/settings-management/lib/features/settings/convert-setting-data.js","../tmp-esm2022/settings-management/lib/features/settings/settings.viewmodel.js","../tmp-esm2022/settings-management/lib/features/settings/search-definition.provider.js","../tmp-esm2022/settings-management/lib/features/settings/search.provider.js","../tmp-esm2022/settings-management/lib/menu.provider.js","../tmp-esm2022/settings-management/lib/settings-management.module.js","../tmp-esm2022/settings-management/acorex-modules-settings-management.js"],"sourcesContent":["export function searchSettings(groups, search) {\n const sectionMatchResult = [];\n const settingMatchResult = [];\n const processedGroups = new Set();\n const createGroupIdentifier = (group) => `${group.name}-${group.title}`;\n const addGroupToResult = (group, sections, resultArray) => {\n const groupId = createGroupIdentifier(group);\n if (!processedGroups.has(groupId)) {\n resultArray.push({\n ...group,\n sections,\n groups: [], // Exclude nested groups\n });\n processedGroups.add(groupId);\n }\n };\n const processSections = (group, filterFn) => {\n const matchedSections = group.sections.filter(filterFn);\n if (matchedSections.length > 0) {\n addGroupToResult(group, matchedSections, sectionMatchResult);\n }\n };\n const processSettings = (group, filterFn) => {\n const matchedSections = group.sections\n .map(filterFn)\n .filter((section) => section !== null);\n if (matchedSections.length > 0) {\n addGroupToResult(group, matchedSections, settingMatchResult);\n }\n };\n const sectionMatches = (section) => section.name.toLowerCase().includes(search.toLowerCase()) ||\n section.title.toLowerCase().includes(search.toLowerCase());\n const filterSettings = (section) => {\n const matchedSettings = section.settings.filter((setting) => setting.name.toLowerCase().includes(search.toLowerCase()) ||\n setting.title.toLowerCase().includes(search.toLowerCase()));\n return matchedSettings.length > 0 ? { ...section, settings: matchedSettings } : null;\n };\n const processGroupRecursively = (group) => {\n processSections(group, sectionMatches); // Match sections with all settings\n processSettings(group, filterSettings); // Match settings within sections\n group.groups.forEach(processGroupRecursively); // Recurse into nested groups\n };\n groups.forEach(processGroupRecursively);\n return [...sectionMatchResult, ...settingMatchResult];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC1zZXR0aW5nLWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvc2V0dGluZ3MtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NldHRpbmdzL2NvbnZlcnQtc2V0dGluZy1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sVUFBVSxjQUFjLENBQUMsTUFBbUMsRUFBRSxNQUFjO0lBQ2hGLE1BQU0sa0JBQWtCLEdBQWdDLEVBQUUsQ0FBQztJQUMzRCxNQUFNLGtCQUFrQixHQUFnQyxFQUFFLENBQUM7SUFDM0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUUxQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBZ0MsRUFBVSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUUzRyxNQUFNLGdCQUFnQixHQUFHLENBQ3ZCLEtBQWdDLEVBQ2hDLFFBQXVDLEVBQ3ZDLFdBQXdDLEVBQ3hDLEVBQUU7UUFDRixNQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2xDLFdBQVcsQ0FBQyxJQUFJLENBQUM7Z0JBQ2YsR0FBRyxLQUFLO2dCQUNSLFFBQVE7Z0JBQ1IsTUFBTSxFQUFFLEVBQUUsRUFBRSx3QkFBd0I7YUFDckMsQ0FBQyxDQUFDO1lBQ0gsZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsTUFBTSxlQUFlLEdBQUcsQ0FDdEIsS0FBZ0MsRUFDaEMsUUFBMkQsRUFDM0QsRUFBRTtRQUNGLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvQixnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDL0QsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLE1BQU0sZUFBZSxHQUFHLENBQ3RCLEtBQWdDLEVBQ2hDLFFBQXNGLEVBQ3RGLEVBQUU7UUFDRixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsUUFBUTthQUNuQyxHQUFHLENBQUMsUUFBUSxDQUFDO2FBQ2IsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUEwQyxFQUFFLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ2pGLElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvQixnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDL0QsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsT0FBb0MsRUFBVyxFQUFFLENBQ3ZFLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6RCxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUU3RCxNQUFNLGNBQWMsR0FBRyxDQUFDLE9BQW9DLEVBQXNDLEVBQUU7UUFDbEcsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQzdDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDVixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDekQsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQzdELENBQUM7UUFDRixPQUFPLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3ZGLENBQUMsQ0FBQztJQUVGLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxLQUFnQyxFQUFFLEVBQUU7UUFDbkUsZUFBZSxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLG1DQUFtQztRQUMzRSxlQUFlLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsaUNBQWlDO1FBQ3pFLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyw2QkFBNkI7SUFDOUUsQ0FBQyxDQUFDO0lBRUYsTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBRXhDLE9BQU8sQ0FBQyxHQUFHLGtCQUFrQixFQUFFLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztBQUN4RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQU2V0dGluZ0RlZmluaXRpb25Hcm91cCwgQVhQU2V0dGluZ0RlZmluaXRpb25TZWN0aW9uIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBzZWFyY2hTZXR0aW5ncyhncm91cHM6IEFYUFNldHRpbmdEZWZpbml0aW9uR3JvdXBbXSwgc2VhcmNoOiBzdHJpbmcpOiBBWFBTZXR0aW5nRGVmaW5pdGlvbkdyb3VwW10ge1xuICBjb25zdCBzZWN0aW9uTWF0Y2hSZXN1bHQ6IEFYUFNldHRpbmdEZWZpbml0aW9uR3JvdXBbXSA9IFtdO1xuICBjb25zdCBzZXR0aW5nTWF0Y2hSZXN1bHQ6IEFYUFNldHRpbmdEZWZpbml0aW9uR3JvdXBbXSA9IFtdO1xuICBjb25zdCBwcm9jZXNzZWRHcm91cHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICBjb25zdCBjcmVhdGVHcm91cElkZW50aWZpZXIgPSAoZ3JvdXA6IEFYUFNldHRpbmdEZWZpbml0aW9uR3JvdXApOiBzdHJpbmcgPT4gYCR7Z3JvdXAubmFtZX0tJHtncm91cC50aXRsZX1gO1xuXG4gIGNvbnN0IGFkZEdyb3VwVG9SZXN1bHQgPSAoXG4gICAgZ3JvdXA6IEFYUFNldHRpbmdEZWZpbml0aW9uR3JvdXAsXG4gICAgc2VjdGlvbnM6IEFYUFNldHRpbmdEZWZpbml0aW9uU2VjdGlvbltdLFxuICAgIHJlc3VsdEFycmF5OiBBWFBTZXR0aW5nRGVmaW5pdGlvbkdyb3VwW11cbiAgKSA9PiB7XG4gICAgY29uc3QgZ3JvdXBJZCA9IGNyZWF0ZUdyb3VwSWRlbnRpZmllcihncm91cCk7XG4gICAgaWYgKCFwcm9jZXNzZWRHcm91cHMuaGFzKGdyb3VwSWQpKSB7XG4gICAgICByZXN1bHRBcnJheS5wdXNoKHtcbiAgICAgICAgLi4uZ3JvdXAsXG4gICAgICAgIHNlY3Rpb25zLFxuICAgICAgICBncm91cHM6IFtdLCAvLyBFeGNsdWRlIG5lc3RlZCBncm91cHNcbiAgICAgIH0pO1xuICAgICAgcHJvY2Vzc2VkR3JvdXBzLmFkZChncm91cElkKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcHJvY2Vzc1NlY3Rpb25zID0gKFxuICAgIGdyb3VwOiBBWFBTZXR0aW5nRGVmaW5pdGlvbkdyb3VwLFxuICAgIGZpbHRlckZuOiAoc2VjdGlvbjogQVhQU2V0dGluZ0RlZmluaXRpb25TZWN0aW9uKSA9PiBib29sZWFuXG4gICkgPT4ge1xuICAgIGNvbnN0IG1hdGNoZWRTZWN0aW9ucyA9IGdyb3VwLnNlY3Rpb25zLmZpbHRlcihmaWx0ZXJGbik7XG4gICAgaWYgKG1hdGNoZWRTZWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBhZGRHcm91cFRvUmVzdWx0KGdyb3VwLCBtYXRjaGVkU2VjdGlvbnMsIHNlY3Rpb25NYXRjaFJlc3VsdCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHByb2Nlc3NTZXR0aW5ncyA9IChcbiAgICBncm91cDogQVhQU2V0dGluZ0RlZmluaXRpb25Hcm91cCxcbiAgICBmaWx0ZXJGbjogKHNlY3Rpb246IEFYUFNldHRpbmdEZWZpbml0aW9uU2VjdGlvbikgPT4gQVhQU2V0dGluZ0RlZmluaXRpb25TZWN0aW9uIHwgbnVsbFxuICApID0+IHtcbiAgICBjb25zdCBtYXRjaGVkU2VjdGlvbnMgPSBncm91cC5zZWN0aW9uc1xuICAgICAgLm1hcChmaWx0ZXJGbilcbiAgICAgIC5maWx0ZXIoKHNlY3Rpb24pOiBzZWN0aW9uIGlzIEFYUFNldHRpbmdEZWZpbml0aW9uU2VjdGlvbiA9PiBzZWN0aW9uICE9PSBudWxsKTtcbiAgICBpZiAobWF0Y2hlZFNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGFkZEdyb3VwVG9SZXN1bHQoZ3JvdXAsIG1hdGNoZWRTZWN0aW9ucywgc2V0dGluZ01hdGNoUmVzdWx0KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgc2VjdGlvbk1hdGNoZXMgPSAoc2VjdGlvbjogQVhQU2V0dGluZ0RlZmluaXRpb25TZWN0aW9uKTogYm9vbGVhbiA9PlxuICAgIHNlY3Rpb24ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaC50b0xvd2VyQ2FzZSgpKSB8fFxuICAgIHNlY3Rpb24udGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gudG9Mb3dlckNhc2UoKSk7XG5cbiAgY29uc3QgZmlsdGVyU2V0dGluZ3MgPSAoc2VjdGlvbjogQVhQU2V0dGluZ0RlZmluaXRpb25TZWN0aW9uKTogQVhQU2V0dGluZ0RlZmluaXRpb25TZWN0aW9uIHwgbnVsbCA9PiB7XG4gICAgY29uc3QgbWF0Y2hlZFNldHRpbmdzID0gc2VjdGlvbi5zZXR0aW5ncy5maWx0ZXIoXG4gICAgICAoc2V0dGluZykgPT5cbiAgICAgICAgc2V0dGluZy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoLnRvTG93ZXJDYXNlKCkpIHx8XG4gICAgICAgIHNldHRpbmcudGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gudG9Mb3dlckNhc2UoKSlcbiAgICApO1xuICAgIHJldHVybiBtYXRjaGVkU2V0dGluZ3MubGVuZ3RoID4gMCA/IHsgLi4uc2VjdGlvbiwgc2V0dGluZ3M6IG1hdGNoZWRTZXR0aW5ncyB9IDogbnVsbDtcbiAgfTtcblxuICBjb25zdCBwcm9jZXNzR3JvdXBSZWN1cnNpdmVseSA9IChncm91cDogQVhQU2V0dGluZ0RlZmluaXRpb25Hcm91cCkgPT4ge1xuICAgIHByb2Nlc3NTZWN0aW9ucyhncm91cCwgc2VjdGlvbk1hdGNoZXMpOyAvLyBNYXRjaCBzZWN0aW9ucyB3aXRoIGFsbCBzZXR0aW5nc1xuICAgIHByb2Nlc3NTZXR0aW5ncyhncm91cCwgZmlsdGVyU2V0dGluZ3MpOyAvLyBNYXRjaCBzZXR0aW5ncyB3aXRoaW4gc2VjdGlvbnNcbiAgICBncm91cC5ncm91cHMuZm9yRWFjaChwcm9jZXNzR3JvdXBSZWN1cnNpdmVseSk7IC8vIFJlY3Vyc2UgaW50byBuZXN0ZWQgZ3JvdXBzXG4gIH07XG5cbiAgZ3JvdXBzLmZvckVhY2gocHJvY2Vzc0dyb3VwUmVjdXJzaXZlbHkpO1xuXG4gIHJldHVybiBbLi4uc2VjdGlvbk1hdGNoUmVzdWx0LCAuLi5zZXR0aW5nTWF0Y2hSZXN1bHRdO1xufVxuIl19","import { AXPSettingDefinitionProviderService, AXPSettingService } from \"@acorex/platform/common\";\nimport { AXPPageStatus } from \"@acorex/platform/layout/builder\";\nimport { computed, inject } from \"@angular/core\";\nimport { signalStore, withMethods, withComputed, withState, withHooks, patchState } from \"@ngrx/signals\";\nimport { get, isEmpty, isEqual, isNil } from \"lodash-es\";\nimport { filter, merge } from \"rxjs\";\nimport { searchSettings } from \"./convert-setting-data\";\nimport { AXToastService } from \"@acorex/components/toast\";\nimport { AXTranslationService } from \"@acorex/core/translation\";\nimport { resolvePlatformScopeName } from \"@acorex/platform/core\";\nimport { AXLocaleService } from \"@acorex/core/locale\";\nimport { AXPLayoutThemeService } from \"@acorex/platform/themes/shared\";\nexport const AXPSettingsViewModel = signalStore(withState(() => ({\n groups: [],\n activateGroup: undefined,\n scope: 'U',\n //\n searchExpression: null,\n //\n previousContext: {},\n context: {},\n //\n status: AXPPageStatus.Processing,\n form: null,\n})), withComputed((store, layout = inject(AXPLayoutThemeService)) => ({\n searchResults: computed(() => searchSettings(store.groups(), store.searchExpression())),\n hasActivateGroup: computed(() => store.activateGroup() != null),\n showGroups: computed(() => store.activateGroup() != null && layout.isLarge()),\n scopeTitle: computed(() => {\n return `${resolvePlatformScopeName(store.scope())}.title`;\n }),\n scopeDescription: computed(() => {\n return `${resolvePlatformScopeName(store.scope())}.description`;\n }),\n isSearching: computed(() => store.searchExpression() != null),\n isBusy: computed(() => store.status() == AXPPageStatus.Processing),\n isSaving: computed(() => store.status() == AXPPageStatus.Submitting),\n isLoaded: computed(() => store.groups().length > 0),\n})), withMethods((store, settingDefinitionService = inject(AXPSettingDefinitionProviderService), settingValueService = inject(AXPSettingService), toastService = inject(AXToastService), translateService = inject(AXTranslationService)) => ({\n registerForm(form) {\n patchState(store, {\n form: form,\n });\n },\n async load(scope) {\n patchState(store, {\n scope: scope,\n status: AXPPageStatus.Processing,\n });\n //\n const groups = await settingDefinitionService.getListAsync(scope);\n patchState(store, {\n groups: groups,\n });\n const currentContext = await settingValueService.scope(scope).all();\n const defaults = await settingValueService.scope(scope).defaultValues();\n patchState(store, {\n context: { ...defaults, ...currentContext },\n });\n patchState(store, {\n previousContext: store.context(),\n status: AXPPageStatus.Rendered,\n });\n },\n async reload() {\n await settingDefinitionService.reload();\n const groups = await settingDefinitionService.getListAsync(store.scope());\n const oldActivateGroupName = store.activateGroup()?.name;\n patchState(store, {\n groups: groups,\n activateGroup: undefined,\n });\n if (oldActivateGroupName) {\n this.setActivateGroupByName(oldActivateGroupName);\n }\n },\n updateContext(context) {\n patchState(store, {\n context: { ...store.context(), ...context },\n });\n },\n updatePreviousContext(context) {\n patchState(store, {\n previousContext: { ...store.previousContext(), ...context },\n });\n },\n setActivateGroup(group) {\n patchState(store, {\n activateGroup: group,\n });\n },\n unloadActivateGroup() {\n patchState(store, {\n activateGroup: undefined,\n });\n },\n setActivateGroupByName(name) {\n const group = store.groups().find(g => g.name === name);\n if (group) {\n patchState(store, {\n activateGroup: group,\n });\n }\n },\n //\n async search(expression) {\n if (!isNil(expression) && !isEmpty(expression)) {\n patchState(store, {\n searchExpression: expression,\n });\n }\n else {\n patchState(store, {\n searchExpression: null,\n });\n }\n },\n clearSearch() {\n patchState(store, {\n searchExpression: null,\n });\n },\n isDirty() {\n return store.groups()?.some((group) => group.sections.some((sec) => sec.settings.some((setting) => {\n const currentValue = get(store.context(), setting.name);\n const previousValue = get(store.previousContext(), setting.name);\n return !isEqual(currentValue, previousValue);\n }))) || false;\n },\n async apply() {\n const i18nScope = \"settings\";\n try {\n if (await store.form() && this.isDirty()) {\n const form = store.form();\n form.resetErrors();\n //\n patchState(store, {\n status: AXPPageStatus.Submitting,\n });\n const formResult = await form.validate();\n if (!formResult.result) {\n toastService.show({\n color: 'danger',\n title: await translateService.translateAsync('actions.apply.invalid.title', { scope: i18nScope }),\n content: await translateService.translateAsync('actions.apply.invalid.message', { scope: i18nScope }),\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n patchState(store, {\n status: AXPPageStatus.Error,\n });\n return false;\n }\n await settingValueService.scope(store.scope()).set(store.context());\n // Show success notification\n toastService.show({\n color: 'success',\n title: await translateService.translateAsync('actions.apply.success.title', { scope: i18nScope }),\n content: await translateService.translateAsync('actions.apply.success.message', { scope: i18nScope }),\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n patchState(store, {\n status: AXPPageStatus.Submitted,\n });\n return true;\n }\n return false;\n }\n catch (error) {\n toastService.show({\n color: 'danger',\n title: await translateService.translateAsync('actions.apply.error.title', { scope: i18nScope }),\n content: await translateService.translateAsync('actions.apply.error.message', { scope: i18nScope }),\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n patchState(store, {\n status: AXPPageStatus.Error,\n });\n return false;\n }\n },\n async discard() {\n const form = store.form();\n form.resetErrors();\n //\n patchState(store, {\n status: AXPPageStatus.Rendered,\n });\n patchState(store, {\n context: store.previousContext(),\n });\n },\n async resetToDefault() {\n // Update the context with the defaults\n const defaults = await settingValueService.scope(store.scope()).defaultValues();\n patchState(store, {\n context: defaults,\n });\n //\n const result = await this.apply();\n if (!result) {\n this.discard();\n }\n },\n})), withHooks((store, settingValueService = inject(AXPSettingService), translationService = inject(AXTranslationService), localeService = inject(AXLocaleService)) => ({\n async onInit() {\n //\n settingValueService.onChanged.pipe(filter((c) => c.scope == store.scope())).subscribe((e) => {\n e.keys.forEach((k) => {\n const currentValue = e.values[k];\n const contextValue = get(store.context(), k);\n const previousValue = get(store.previousContext(), k);\n // Update only if there are actual changes\n if (!isEqual(previousValue, currentValue) || !isEqual(currentValue, contextValue)) {\n patchState(store, {\n previousContext: {\n ...store.previousContext(),\n [k]: currentValue,\n }\n });\n patchState(store, {\n context: {\n ...store.context(),\n [k]: currentValue,\n }\n });\n }\n });\n });\n //\n merge(translationService.langChanges$, localeService.profileChanged$).subscribe(async () => {\n if (store.isLoaded()) {\n await store.reload();\n }\n });\n },\n onDestroy() { },\n})));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3Mudmlld21vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3NldHRpbmdzLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9zZXR0aW5ncy9zZXR0aW5ncy52aWV3bW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE2QixtQ0FBbUMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBdUIsd0JBQXdCLEVBQW9CLE1BQU0sdUJBQXVCLENBQUM7QUFDeEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSXZFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLFdBQVcsQ0FDM0MsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDYixNQUFNLEVBQUUsRUFBaUM7SUFDekMsYUFBYSxFQUFFLFNBQWtEO0lBQ2pFLEtBQUssRUFBRSxHQUEwQjtJQUNqQyxFQUFFO0lBQ0YsZ0JBQWdCLEVBQUUsSUFBcUI7SUFDdkMsRUFBRTtJQUNGLGVBQWUsRUFBRSxFQUF5QjtJQUMxQyxPQUFPLEVBQUUsRUFBeUI7SUFDbEMsRUFBRTtJQUNGLE1BQU0sRUFBRSxhQUFhLENBQUMsVUFBVTtJQUNoQyxJQUFJLEVBQUUsSUFBOEI7Q0FDdkMsQ0FBQyxDQUFDLEVBQ0gsWUFBWSxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3RCxhQUFhLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixFQUFHLENBQUMsQ0FBQztJQUN4RixnQkFBZ0IsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxJQUFJLElBQUksQ0FBQztJQUMvRCxVQUFVLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzdFLFVBQVUsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ3RCLE9BQU8sR0FBRyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQzlELENBQUMsQ0FBQztJQUNGLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDNUIsT0FBTyxHQUFHLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxjQUFjLENBQUM7SUFDcEUsQ0FBQyxDQUFDO0lBQ0YsV0FBVyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxJQUFJLENBQUM7SUFDN0QsTUFBTSxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksYUFBYSxDQUFDLFVBQVUsQ0FBQztJQUNsRSxRQUFRLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxhQUFhLENBQUMsVUFBVSxDQUFDO0lBQ3BFLFFBQVEsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Q0FDdEQsQ0FBQyxDQUFDLEVBQ0gsV0FBVyxDQUNQLENBQUMsS0FBSyxFQUNGLHdCQUF3QixHQUFHLE1BQU0sQ0FBQyxtQ0FBbUMsQ0FBQyxFQUN0RSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsRUFDL0MsWUFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFDckMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEVBRWpELEVBQUUsQ0FBQyxDQUFDO0lBQ0YsWUFBWSxDQUFDLElBQXFCO1FBQzlCLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLEVBQUUsSUFBSTtTQUNiLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQTBCO1FBQ2pDLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDZCxLQUFLLEVBQUUsS0FBSztZQUNaLE1BQU0sRUFBRSxhQUFhLENBQUMsVUFBVTtTQUNuQyxDQUFDLENBQUE7UUFDRixFQUFFO1FBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEUsVUFBVSxDQUFDLEtBQUssRUFBRTtZQUNkLE1BQU0sRUFBRSxNQUFNO1NBQ2pCLENBQUMsQ0FBQTtRQUNGLE1BQU0sY0FBYyxHQUFHLE1BQU0sbUJBQW1CLENBQUMsS0FBSyxDQUFDLEtBQXlCLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN4RixNQUFNLFFBQVEsR0FBRyxNQUFNLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxLQUF5QixDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDNUYsVUFBVSxDQUFDLEtBQUssRUFBRTtZQUNkLE9BQU8sRUFBRSxFQUFFLEdBQUcsUUFBUSxFQUFFLEdBQUcsY0FBYyxFQUFFO1NBQzlDLENBQUMsQ0FBQTtRQUNGLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDZCxlQUFlLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNoQyxNQUFNLEVBQUUsYUFBYSxDQUFDLFFBQVE7U0FDakMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUNELEtBQUssQ0FBQyxNQUFNO1FBQ1IsTUFBTSx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN4QyxNQUFNLE1BQU0sR0FBRyxNQUFNLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRSxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLENBQUM7UUFDekQsVUFBVSxDQUFDLEtBQUssRUFBRTtZQUNkLE1BQU0sRUFBRSxNQUFNO1lBQ2QsYUFBYSxFQUFFLFNBQVM7U0FDM0IsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDTCxDQUFDO0lBQ0QsYUFBYSxDQUFDLE9BQTRCO1FBQ3RDLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDZCxPQUFPLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRTtTQUM5QyxDQUFDLENBQUE7SUFDTixDQUFDO0lBQ0QscUJBQXFCLENBQUMsT0FBNEI7UUFDOUMsVUFBVSxDQUFDLEtBQUssRUFBRTtZQUNkLGVBQWUsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLGVBQWUsRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFO1NBQzlELENBQUMsQ0FBQTtJQUNOLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxLQUFnQztRQUM3QyxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQ2QsYUFBYSxFQUFFLEtBQUs7U0FDdkIsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUNELG1CQUFtQjtRQUNmLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDZCxhQUFhLEVBQUUsU0FBUztTQUMzQixDQUFDLENBQUE7SUFDTixDQUFDO0lBQ0Qsc0JBQXNCLENBQUMsSUFBWTtRQUMvQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztRQUN4RCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1IsVUFBVSxDQUFDLEtBQUssRUFBRTtnQkFDZCxhQUFhLEVBQUUsS0FBSzthQUN2QixDQUFDLENBQUE7UUFDTixDQUFDO0lBQ0wsQ0FBQztJQUNELEVBQUU7SUFDRixLQUFLLENBQUMsTUFBTSxDQUFDLFVBQWtCO1FBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM3QyxVQUFVLENBQUMsS0FBSyxFQUFFO2dCQUNkLGdCQUFnQixFQUFFLFVBQVU7YUFDL0IsQ0FBQyxDQUFBO1FBQ04sQ0FBQzthQUNJLENBQUM7WUFDRixVQUFVLENBQUMsS0FBSyxFQUFFO2dCQUNkLGdCQUFnQixFQUFFLElBQUk7YUFDekIsQ0FBQyxDQUFBO1FBQ04sQ0FBQztJQUNMLENBQUM7SUFDRCxXQUFXO1FBQ1AsVUFBVSxDQUFDLEtBQUssRUFBRTtZQUNkLGdCQUFnQixFQUFFLElBQUk7U0FDekIsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUNELE9BQU87UUFDSCxPQUFPLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNsQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ3hCLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDMUIsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEQsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQ0wsQ0FDSixJQUFJLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFDRCxLQUFLLENBQUMsS0FBSztRQUNQLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUM7WUFDRCxJQUFJLE1BQU0sS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUN2QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFHLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbkIsRUFBRTtnQkFDRixVQUFVLENBQUMsS0FBSyxFQUFFO29CQUNkLE1BQU0sRUFBRSxhQUFhLENBQUMsVUFBVTtpQkFDbkMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNyQixZQUFZLENBQUMsSUFBSSxDQUFDO3dCQUNkLEtBQUssRUFBRSxRQUFRO3dCQUNmLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyw2QkFBNkIsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQzt3QkFDakcsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUMsY0FBYyxDQUFDLCtCQUErQixFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDO3dCQUNyRyxRQUFRLEVBQUUsZUFBZTt3QkFDekIsV0FBVyxFQUFFLElBQUk7d0JBQ2pCLE9BQU8sRUFBRSxJQUFJO3dCQUNiLGVBQWUsRUFBRSxJQUFJO3FCQUN4QixDQUFDLENBQUM7b0JBQ0gsVUFBVSxDQUFDLEtBQUssRUFBRTt3QkFDZCxNQUFNLEVBQUUsYUFBYSxDQUFDLEtBQUs7cUJBQzlCLENBQUMsQ0FBQztvQkFDSCxPQUFPLEtBQUssQ0FBQztnQkFDakIsQ0FBQztnQkFDRCxNQUFNLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFzQixDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUN4Riw0QkFBNEI7Z0JBQzVCLFlBQVksQ0FBQyxJQUFJLENBQUM7b0JBQ2QsS0FBSyxFQUFFLFNBQVM7b0JBQ2hCLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyw2QkFBNkIsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztvQkFDakcsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUMsY0FBYyxDQUFDLCtCQUErQixFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDO29CQUNyRyxRQUFRLEVBQUUsZUFBZTtvQkFDekIsV0FBVyxFQUFFLElBQUk7b0JBQ2pCLE9BQU8sRUFBRSxJQUFJO29CQUNiLGVBQWUsRUFBRSxJQUFJO2lCQUN4QixDQUFDLENBQUM7Z0JBQ0gsVUFBVSxDQUFDLEtBQUssRUFBRTtvQkFDZCxNQUFNLEVBQUUsYUFBYSxDQUFDLFNBQVM7aUJBQ2xDLENBQUMsQ0FBQztnQkFDSCxPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDYixZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNkLEtBQUssRUFBRSxRQUFRO2dCQUNmLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDLGNBQWMsQ0FBQywyQkFBMkIsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztnQkFDL0YsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUMsY0FBYyxDQUFDLDZCQUE2QixFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDO2dCQUNuRyxRQUFRLEVBQUUsZUFBZTtnQkFDekIsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLE9BQU8sRUFBRSxJQUFJO2dCQUNiLGVBQWUsRUFBRSxJQUFJO2FBQ3hCLENBQUMsQ0FBQztZQUNILFVBQVUsQ0FBQyxLQUFLLEVBQUU7Z0JBQ2QsTUFBTSxFQUFFLGFBQWEsQ0FBQyxLQUFLO2FBQzlCLENBQUMsQ0FBQTtZQUNGLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7SUFDTCxDQUFDO0lBQ0QsS0FBSyxDQUFDLE9BQU87UUFDVCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFHLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLEVBQUU7UUFDRixVQUFVLENBQUMsS0FBSyxFQUFFO1lBQ2QsTUFBTSxFQUFFLGFBQWEsQ0FBQyxRQUFRO1NBQ2pDLENBQUMsQ0FBQTtRQUNGLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDZCxPQUFPLEVBQUUsS0FBSyxDQUFDLGVBQWUsRUFBRTtTQUNuQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBQ0QsS0FBSyxDQUFDLGNBQWM7UUFDaEIsd0NBQXdDO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sbUJBQW1CLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQXNCLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNwRyxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQ2QsT0FBTyxFQUFFLFFBQVE7U0FDcEIsQ0FBQyxDQUFBO1FBQ0YsRUFBRTtRQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0wsQ0FBQztDQUNKLENBQUMsQ0FBQyxFQUNQLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFDWixtQkFBbUIsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsRUFDL0Msa0JBQWtCLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEVBQ2pELGFBQWEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQ3pDLEVBQUUsQ0FBQyxDQUFDO0lBQ0YsS0FBSyxDQUFDLE1BQU07UUFDUixFQUFFO1FBQ0YsbUJBQW1CLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN4RixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNqQixNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNqQyxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM3QyxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCwwQ0FBMEM7Z0JBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDO29CQUNoRixVQUFVLENBQUMsS0FBSyxFQUFFO3dCQUNkLGVBQWUsRUFBRTs0QkFDYixHQUFHLEtBQUssQ0FBQyxlQUFlLEVBQUU7NEJBQzFCLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWTt5QkFDcEI7cUJBQ0osQ0FBQyxDQUFDO29CQUNILFVBQVUsQ0FBQyxLQUFLLEVBQUU7d0JBQ2QsT0FBTyxFQUFFOzRCQUNMLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRTs0QkFDbEIsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZO3lCQUNwQjtxQkFDSixDQUFDLENBQUM7Z0JBQ1AsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFO1FBQ0YsS0FBSyxDQUNELGtCQUFrQixDQUFDLFlBQVksRUFDL0IsYUFBYSxDQUFDLGVBQWUsQ0FDaEMsQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDbkIsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztnQkFDbkIsTUFBTSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDekIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBRVAsQ0FBQztJQUNELFNBQVMsS0FBSyxDQUFDO0NBQ2xCLENBQUMsQ0FBQyxDQUVOLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBTZXR0aW5nRGVmaW5pdGlvbkdyb3VwLCBBWFBTZXR0aW5nRGVmaW5pdGlvblByb3ZpZGVyU2VydmljZSwgQVhQU2V0dGluZ1NlcnZpY2UgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS9jb21tb25cIjtcbmltcG9ydCB7IEFYUFBhZ2VTdGF0dXMgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlclwiO1xuaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBzaWduYWxTdG9yZSwgd2l0aE1ldGhvZHMsIHdpdGhDb21wdXRlZCwgd2l0aFN0YXRlLCB3aXRoSG9va3MsIHBhdGNoU3RhdGUgfSBmcm9tIFwiQG5ncngvc2lnbmFsc1wiO1xuaW1wb3J0IHsgZ2V0LCBpc0VtcHR5LCBpc0VxdWFsLCBpc05pbCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IGZpbHRlciwgbWVyZ2UgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgc2VhcmNoU2V0dGluZ3MgfSBmcm9tIFwiLi9jb252ZXJ0LXNldHRpbmctZGF0YVwiO1xuaW1wb3J0IHsgQVhGb3JtQ29tcG9uZW50IH0gZnJvbSBcIkBhY29yZXgvY29tcG9uZW50cy9mb3JtXCI7XG5pbXBvcnQgeyBBWFRvYXN0U2VydmljZSB9IGZyb20gXCJAYWNvcmV4L2NvbXBvbmVudHMvdG9hc3RcIjtcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSBcIkBhY29yZXgvY29yZS90cmFuc2xhdGlvblwiO1xuaW1wb3J0IHsgQVhQUGxhdGZvcm1TY29wZUtleSwgcmVzb2x2ZVBsYXRmb3JtU2NvcGVOYW1lLCBBWFBQbGF0Zm9ybVNjb3BlIH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vY29yZVwiO1xuaW1wb3J0IHsgQVhMb2NhbGVTZXJ2aWNlIH0gZnJvbSBcIkBhY29yZXgvY29yZS9sb2NhbGVcIjtcbmltcG9ydCB7IEFYUExheW91dFRoZW1lU2VydmljZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL3RoZW1lcy9zaGFyZWRcIjtcblxuXG5cbmV4cG9ydCBjb25zdCBBWFBTZXR0aW5nc1ZpZXdNb2RlbCA9IHNpZ25hbFN0b3JlKFxuICAgIHdpdGhTdGF0ZSgoKSA9PiAoe1xuICAgICAgICBncm91cHM6IFtdIGFzIEFYUFNldHRpbmdEZWZpbml0aW9uR3JvdXBbXSxcbiAgICAgICAgYWN0aXZhdGVHcm91cDogdW5kZWZpbmVkIGFzIEFYUFNldHRpbmdEZWZpbml0aW9uR3JvdXAgfCB1bmRlZmluZWQsXG4gICAgICAgIHNjb3BlOiAnVScgYXMgQVhQUGxhdGZvcm1TY29wZUtleSxcbiAgICAgICAgLy9cbiAgICAgICAgc2VhcmNoRXhwcmVzc2lvbjogbnVsbCBhcyBzdHJpbmcgfCBudWxsLFxuICAgICAgICAvL1xuICAgICAgICBwcmV2aW91c0NvbnRleHQ6IHt9IGFzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICAgIGNvbnRleHQ6IHt9IGFzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICAgIC8vXG4gICAgICAgIHN0YXR1czogQVhQUGFnZVN0YXR1cy5Qcm9jZXNzaW5nLFxuICAgICAgICBmb3JtOiBudWxsIGFzIEFYRm9ybUNvbXBvbmVudCB8IG51bGwsXG4gICAgfSkpLFxuICAgIHdpdGhDb21wdXRlZCgoc3RvcmUsIGxheW91dCA9IGluamVjdChBWFBMYXlvdXRUaGVtZVNlcnZpY2UpKSA9PiAoe1xuICAgICAgICBzZWFyY2hSZXN1bHRzOiBjb21wdXRlZCgoKSA9PiBzZWFyY2hTZXR0aW5ncyhzdG9yZS5ncm91cHMoKSwgc3RvcmUuc2VhcmNoRXhwcmVzc2lvbigpISkpLFxuICAgICAgICBoYXNBY3RpdmF0ZUdyb3VwOiBjb21wdXRlZCgoKSA9PiBzdG9yZS5hY3RpdmF0ZUdyb3VwKCkgIT0gbnVsbCksXG4gICAgICAgIHNob3dHcm91cHM6IGNvbXB1dGVkKCgpID0+IHN0b3JlLmFjdGl2YXRlR3JvdXAoKSAhPSBudWxsICYmIGxheW91dC5pc0xhcmdlKCkpLFxuICAgICAgICBzY29wZVRpdGxlOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYCR7cmVzb2x2ZVBsYXRmb3JtU2NvcGVOYW1lKHN0b3JlLnNjb3BlKCkpfS50aXRsZWA7XG4gICAgICAgIH0pLFxuICAgICAgICBzY29wZURlc2NyaXB0aW9uOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYCR7cmVzb2x2ZVBsYXRmb3JtU2NvcGVOYW1lKHN0b3JlLnNjb3BlKCkpfS5kZXNjcmlwdGlvbmA7XG4gICAgICAgIH0pLFxuICAgICAgICBpc1NlYXJjaGluZzogY29tcHV0ZWQoKCkgPT4gc3RvcmUuc2VhcmNoRXhwcmVzc2lvbigpICE9IG51bGwpLFxuICAgICAgICBpc0J1c3k6IGNvbXB1dGVkKCgpID0+IHN0b3JlLnN0YXR1cygpID09IEFYUFBhZ2VTdGF0dXMuUHJvY2Vzc2luZyksXG4gICAgICAgIGlzU2F2aW5nOiBjb21wdXRlZCgoKSA9PiBzdG9yZS5zdGF0dXMoKSA9PSBBWFBQYWdlU3RhdHVzLlN1Ym1pdHRpbmcpLFxuICAgICAgICBpc0xvYWRlZDogY29tcHV0ZWQoKCkgPT4gc3RvcmUuZ3JvdXBzKCkubGVuZ3RoID4gMCksXG4gICAgfSkpLFxuICAgIHdpdGhNZXRob2RzKFxuICAgICAgICAoc3RvcmUsXG4gICAgICAgICAgICBzZXR0aW5nRGVmaW5pdGlvblNlcnZpY2UgPSBpbmplY3QoQVhQU2V0dGluZ0RlZmluaXRpb25Qcm92aWRlclNlcnZpY2UpLFxuICAgICAgICAgICAgc2V0dGluZ1ZhbHVlU2VydmljZSA9IGluamVjdChBWFBTZXR0aW5nU2VydmljZSksXG4gICAgICAgICAgICB0b2FzdFNlcnZpY2UgPSBpbmplY3QoQVhUb2FzdFNlcnZpY2UpLFxuICAgICAgICAgICAgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSksXG5cbiAgICAgICAgKSA9PiAoe1xuICAgICAgICAgICAgcmVnaXN0ZXJGb3JtKGZvcm06IEFYRm9ybUNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybTogZm9ybSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFzeW5jIGxvYWQoc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGVLZXkpIHtcbiAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgICAgIHNjb3BlOiBzY29wZSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBBWFBQYWdlU3RhdHVzLlByb2Nlc3NpbmcsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwcyA9IGF3YWl0IHNldHRpbmdEZWZpbml0aW9uU2VydmljZS5nZXRMaXN0QXN5bmMoc2NvcGUpO1xuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiBncm91cHMsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Q29udGV4dCA9IGF3YWl0IHNldHRpbmdWYWx1ZVNlcnZpY2Uuc2NvcGUoc2NvcGUgYXMgQVhQUGxhdGZvcm1TY29wZSkuYWxsKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdHMgPSBhd2FpdCBzZXR0aW5nVmFsdWVTZXJ2aWNlLnNjb3BlKHNjb3BlIGFzIEFYUFBsYXRmb3JtU2NvcGUpLmRlZmF1bHRWYWx1ZXMoKTtcbiAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgLi4uZGVmYXVsdHMsIC4uLmN1cnJlbnRDb250ZXh0IH0sXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzQ29udGV4dDogc3RvcmUuY29udGV4dCgpLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXMuUmVuZGVyZWQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhc3luYyByZWxvYWQoKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgc2V0dGluZ0RlZmluaXRpb25TZXJ2aWNlLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwcyA9IGF3YWl0IHNldHRpbmdEZWZpbml0aW9uU2VydmljZS5nZXRMaXN0QXN5bmMoc3RvcmUuc2NvcGUoKSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2xkQWN0aXZhdGVHcm91cE5hbWUgPSBzdG9yZS5hY3RpdmF0ZUdyb3VwKCk/Lm5hbWU7XG4gICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICBncm91cHM6IGdyb3VwcyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZhdGVHcm91cDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgaWYgKG9sZEFjdGl2YXRlR3JvdXBOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZhdGVHcm91cEJ5TmFtZShvbGRBY3RpdmF0ZUdyb3VwTmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVwZGF0ZUNvbnRleHQoY29udGV4dDogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAuLi5zdG9yZS5jb250ZXh0KCksIC4uLmNvbnRleHQgfSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVwZGF0ZVByZXZpb3VzQ29udGV4dChjb250ZXh0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0NvbnRleHQ6IHsgLi4uc3RvcmUucHJldmlvdXNDb250ZXh0KCksIC4uLmNvbnRleHQgfSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldEFjdGl2YXRlR3JvdXAoZ3JvdXA6IEFYUFNldHRpbmdEZWZpbml0aW9uR3JvdXApIHtcbiAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlR3JvdXA6IGdyb3VwLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdW5sb2FkQWN0aXZhdGVHcm91cCgpIHtcbiAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlR3JvdXA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldEFjdGl2YXRlR3JvdXBCeU5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBzdG9yZS5ncm91cHMoKS5maW5kKGcgPT4gZy5uYW1lID09PSBuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZhdGVHcm91cDogZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICBhc3luYyBzZWFyY2goZXhwcmVzc2lvbjogc3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc05pbChleHByZXNzaW9uKSAmJiAhaXNFbXB0eShleHByZXNzaW9uKSkge1xuICAgICAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hFeHByZXNzaW9uOiBleHByZXNzaW9uLFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoRXhwcmVzc2lvbjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2xlYXJTZWFyY2goKSB7XG4gICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hFeHByZXNzaW9uOiBudWxsLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNEaXJ0eSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RvcmUuZ3JvdXBzKCk/LnNvbWUoKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICBncm91cC5zZWN0aW9ucy5zb21lKChzZWMpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWMuc2V0dGluZ3Muc29tZSgoc2V0dGluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGdldChzdG9yZS5jb250ZXh0KCksIHNldHRpbmcubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IGdldChzdG9yZS5wcmV2aW91c0NvbnRleHQoKSwgc2V0dGluZy5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWlzRXF1YWwoY3VycmVudFZhbHVlLCBwcmV2aW91c1ZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApIHx8IGZhbHNlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXN5bmMgYXBwbHkoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaTE4blNjb3BlID0gXCJzZXR0aW5nc1wiO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhd2FpdCBzdG9yZS5mb3JtKCkgJiYgdGhpcy5pc0RpcnR5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm0gPSBzdG9yZS5mb3JtKCkhO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybS5yZXNldEVycm9ycygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXMuU3VibWl0dGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybVJlc3VsdCA9IGF3YWl0IGZvcm0udmFsaWRhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZm9ybVJlc3VsdC5yZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGF3YWl0IHRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ2FjdGlvbnMuYXBwbHkuaW52YWxpZC50aXRsZScsIHsgc2NvcGU6IGkxOG5TY29wZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogYXdhaXQgdHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnYWN0aW9ucy5hcHBseS5pbnZhbGlkLm1lc3NhZ2UnLCB7IHNjb3BlOiBpMThuU2NvcGUgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lT3V0OiAzMDAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXMuRXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgc2V0dGluZ1ZhbHVlU2VydmljZS5zY29wZShzdG9yZS5zY29wZSgpIGFzIEFYUFBsYXRmb3JtU2NvcGUpLnNldChzdG9yZS5jb250ZXh0KCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2hvdyBzdWNjZXNzIG5vdGlmaWNhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3RTZXJ2aWNlLnNob3coe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGF3YWl0IHRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ2FjdGlvbnMuYXBwbHkuc3VjY2Vzcy50aXRsZScsIHsgc2NvcGU6IGkxOG5TY29wZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBhd2FpdCB0cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdhY3Rpb25zLmFwcGx5LnN1Y2Nlc3MubWVzc2FnZScsIHsgc2NvcGU6IGkxOG5TY29wZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVPdXQ6IDMwMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZU91dFByb2dyZXNzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBBWFBQYWdlU3RhdHVzLlN1Ym1pdHRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhd2FpdCB0cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdhY3Rpb25zLmFwcGx5LmVycm9yLnRpdGxlJywgeyBzY29wZTogaTE4blNjb3BlIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogYXdhaXQgdHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnYWN0aW9ucy5hcHBseS5lcnJvci5tZXNzYWdlJywgeyBzY29wZTogaTE4blNjb3BlIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVPdXRQcm9ncmVzczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogQVhQUGFnZVN0YXR1cy5FcnJvcixcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhc3luYyBkaXNjYXJkKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm0gPSBzdG9yZS5mb3JtKCkhO1xuICAgICAgICAgICAgICAgIGZvcm0ucmVzZXRFcnJvcnMoKTtcbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBBWFBQYWdlU3RhdHVzLlJlbmRlcmVkLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBzdG9yZS5wcmV2aW91c0NvbnRleHQoKSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFzeW5jIHJlc2V0VG9EZWZhdWx0KCkge1xuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgY29udGV4dCAgd2l0aCB0aGUgZGVmYXVsdHNcbiAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0cyA9IGF3YWl0IHNldHRpbmdWYWx1ZVNlcnZpY2Uuc2NvcGUoc3RvcmUuc2NvcGUoKSBhcyBBWFBQbGF0Zm9ybVNjb3BlKS5kZWZhdWx0VmFsdWVzKCk7XG4gICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBkZWZhdWx0cyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hcHBseSgpO1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzY2FyZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pKSxcbiAgICB3aXRoSG9va3MoKHN0b3JlLFxuICAgICAgICBzZXR0aW5nVmFsdWVTZXJ2aWNlID0gaW5qZWN0KEFYUFNldHRpbmdTZXJ2aWNlKSxcbiAgICAgICAgdHJhbnNsYXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKSxcbiAgICAgICAgbG9jYWxlU2VydmljZSA9IGluamVjdChBWExvY2FsZVNlcnZpY2UpXG4gICAgKSA9PiAoe1xuICAgICAgICBhc3luYyBvbkluaXQoKSB7XG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgc2V0dGluZ1ZhbHVlU2VydmljZS5vbkNoYW5nZWQucGlwZShmaWx0ZXIoKGMpID0+IGMuc2NvcGUgPT0gc3RvcmUuc2NvcGUoKSkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGUua2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGUudmFsdWVzW2tdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0VmFsdWUgPSBnZXQoc3RvcmUuY29udGV4dCgpLCBrKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IGdldChzdG9yZS5wcmV2aW91c0NvbnRleHQoKSwgayk7XG4gICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBvbmx5IGlmIHRoZXJlIGFyZSBhY3R1YWwgY2hhbmdlc1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRXF1YWwocHJldmlvdXNWYWx1ZSwgY3VycmVudFZhbHVlKSB8fCAhaXNFcXVhbChjdXJyZW50VmFsdWUsIGNvbnRleHRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0NvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uc3RvcmUucHJldmlvdXNDb250ZXh0KCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrXTogY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uc3RvcmUuY29udGV4dCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBba106IGN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRpb25TZXJ2aWNlLmxhbmdDaGFuZ2VzJCxcbiAgICAgICAgICAgICAgICBsb2NhbGVTZXJ2aWNlLnByb2ZpbGVDaGFuZ2VkJFxuICAgICAgICAgICAgKS5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdG9yZS5pc0xvYWRlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHN0b3JlLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0sXG4gICAgICAgIG9uRGVzdHJveSgpIHsgfSxcbiAgICB9KSlcblxuKSJdfQ==","export class AXPSettingSearchDefinitionProvider {\n async provide(context) {\n context.addDefinition('setting', 'Setting', 'setting', 'fa-solid fa-gear', 3, {\n format: {\n id: '{{data.name}}',\n },\n actions: [\n {\n name: 'navigate',\n type: 'view',\n priority: 'primary',\n },\n ],\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWRlZmluaXRpb24ucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvc2V0dGluZ3MtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NldHRpbmdzL3NlYXJjaC1kZWZpbml0aW9uLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxrQ0FBa0M7SUFDN0MsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUEyQztRQUN2RCxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUMsRUFBRTtZQUM1RSxNQUFNLEVBQUU7Z0JBQ04sRUFBRSxFQUFFLGVBQWU7YUFDcEI7WUFDRCxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLElBQUksRUFBRSxNQUFNO29CQUNaLFFBQVEsRUFBRSxTQUFTO2lCQUNwQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQU2VhcmNoRGVmaW5pdGlvblByb3ZpZGVyLCBBWFBTZWFyY2hEZWZpbml0aW9uUHJvdmlkZXJDb250ZXh0IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuXG5leHBvcnQgY2xhc3MgQVhQU2V0dGluZ1NlYXJjaERlZmluaXRpb25Qcm92aWRlciBpbXBsZW1lbnRzIEFYUFNlYXJjaERlZmluaXRpb25Qcm92aWRlciB7XG4gIGFzeW5jIHByb3ZpZGUoY29udGV4dDogQVhQU2VhcmNoRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnRleHQuYWRkRGVmaW5pdGlvbignc2V0dGluZycsICdTZXR0aW5nJywgJ3NldHRpbmcnLCAnZmEtc29saWQgZmEtZ2VhcicsIDMsIHtcbiAgICAgIGZvcm1hdDoge1xuICAgICAgICBpZDogJ3t7ZGF0YS5uYW1lfX0nLFxuICAgICAgfSxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICduYXZpZ2F0ZScsXG4gICAgICAgICAgdHlwZTogJ3ZpZXcnLFxuICAgICAgICAgIHByaW9yaXR5OiAncHJpbWFyeScsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=","import { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPSettingDefinitionProviderService, } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { inject } from '@angular/core';\nimport { sortBy } from 'lodash-es';\nexport class AXPSettingSearchProvider {\n constructor() {\n this.settingService = inject(AXPSettingDefinitionProviderService);\n this.sessionService = inject(AXPSessionService);\n }\n async search(text) {\n const groupsSetting = this.settingService.getList(AXPPlatformScope.User);\n if (groupsSetting.length == 0) {\n groupsSetting.push(...(await this.settingService.getListAsync(AXPPlatformScope.User)));\n }\n // Step 2: Flatten settings from groups\n const allSettings = [];\n const extractSettings = (group) => {\n for (const section of group.sections) {\n allSettings.push(...section.settings.map((x) => ({ ...x, group })));\n }\n for (const subGroup of group.groups) {\n extractSettings(subGroup); // Recursive extraction\n }\n };\n for (const group of groupsSetting) {\n extractSettings(group);\n }\n // Step 3: Search settings by title\n const searchResults = allSettings.filter((setting) => setting.title.toLowerCase().includes(text.toLowerCase()));\n return sortBy(searchResults.map((setting) => ({\n title: setting.title,\n description: setting.description,\n group: 'setting',\n data: setting,\n command: {\n name: 'navigate',\n options: {\n type: 'router',\n options: {\n path: `/${this.sessionService.application?.name}/settings/user/${setting.group.name}#${setting.title}`,\n },\n }\n },\n parent: setting.group\n ? {\n title: setting.group.title,\n data: setting.group,\n }\n : undefined,\n })), ['title']);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3NldHRpbmdzLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9zZXR0aW5ncy9zZWFyY2gucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUtMLG1DQUFtQyxHQUNwQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQU1uQyxNQUFNLE9BQU8sd0JBQXdCO0lBQXJDO1FBQ1UsbUJBQWMsR0FBRyxNQUFNLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUM3RCxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBbURyRCxDQUFDO0lBakRDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBWTtRQUN2QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RSxJQUFJLGFBQWEsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDOUIsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekYsQ0FBQztRQUVELHVDQUF1QztRQUN2QyxNQUFNLFdBQVcsR0FBaUMsRUFBRSxDQUFDO1FBQ3JELE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBZ0MsRUFBRSxFQUFFO1lBQzNELEtBQUssTUFBTSxPQUFPLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNyQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQWlDLENBQUEsQ0FBQyxDQUFDLENBQUM7WUFDcEcsQ0FBQztZQUNELEtBQUssTUFBTSxRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNwQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyx1QkFBdUI7WUFDcEQsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLEtBQUssTUFBTSxLQUFLLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFFRCxtQ0FBbUM7UUFDbkMsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVoSCxPQUFPLE1BQU0sQ0FDWCxhQUFhLENBQUMsR0FBRyxDQUFrQixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMvQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7WUFDcEIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1lBQ2hDLEtBQUssRUFBRSxTQUFTO1lBQ2hCLElBQUksRUFBRSxPQUFPO1lBQ2IsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxVQUFVO2dCQUNoQixPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsT0FBTyxFQUFFO3dCQUNQLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLElBQUksa0JBQWtCLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7cUJBQ3ZHO2lCQUNGO2FBQ0Y7WUFDRCxNQUFNLEVBQUUsT0FBTyxDQUFDLEtBQUs7Z0JBQ25CLENBQUMsQ0FBQztvQkFDQSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLO29CQUMxQixJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQWtDO2lCQUNqRDtnQkFDRCxDQUFDLENBQUMsU0FBUztTQUNkLENBQUMsQ0FBQyxFQUNILENBQUMsT0FBTyxDQUFDLENBQ1YsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7XG4gIEFYUFNlYXJjaFByb3ZpZGVyLFxuICBBWFBTZWFyY2hSZXN1bHQsXG4gIEFYUFNldHRpbmdEZWZpbml0aW9uLFxuICBBWFBTZXR0aW5nRGVmaW5pdGlvbkdyb3VwLFxuICBBWFBTZXR0aW5nRGVmaW5pdGlvblByb3ZpZGVyU2VydmljZSxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQUGxhdGZvcm1TY29wZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNvcnRCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQU2V0dGluZ0RlZmluaXRpb25TZWFyY2ggZXh0ZW5kcyBBWFBTZXR0aW5nRGVmaW5pdGlvbiB7XG4gIGdyb3VwOiBBWFBTZXR0aW5nRGVmaW5pdGlvbkdyb3VwO1xufVxuXG5leHBvcnQgY2xhc3MgQVhQU2V0dGluZ1NlYXJjaFByb3ZpZGVyIGltcGxlbWVudHMgQVhQU2VhcmNoUHJvdmlkZXIge1xuICBwcml2YXRlIHNldHRpbmdTZXJ2aWNlID0gaW5qZWN0KEFYUFNldHRpbmdEZWZpbml0aW9uUHJvdmlkZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZSA9IGluamVjdChBWFBTZXNzaW9uU2VydmljZSk7XG5cbiAgYXN5bmMgc2VhcmNoKHRleHQ6IHN0cmluZyk6IFByb21pc2U8QVhQU2VhcmNoUmVzdWx0W10+IHtcbiAgICBjb25zdCBncm91cHNTZXR0aW5nID0gdGhpcy5zZXR0aW5nU2VydmljZS5nZXRMaXN0KEFYUFBsYXRmb3JtU2NvcGUuVXNlcik7XG4gICAgaWYgKGdyb3Vwc1NldHRpbmcubGVuZ3RoID09IDApIHtcbiAgICAgIGdyb3Vwc1NldHRpbmcucHVzaCguLi4oYXdhaXQgdGhpcy5zZXR0aW5nU2VydmljZS5nZXRMaXN0QXN5bmMoQVhQUGxhdGZvcm1TY29wZS5Vc2VyKSkpO1xuICAgIH1cblxuICAgIC8vIFN0ZXAgMjogRmxhdHRlbiBzZXR0aW5ncyBmcm9tIGdyb3Vwc1xuICAgIGNvbnN0IGFsbFNldHRpbmdzOiBBWFBTZXR0aW5nRGVmaW5pdGlvblNlYXJjaFtdID0gW107XG4gICAgY29uc3QgZXh0cmFjdFNldHRpbmdzID0gKGdyb3VwOiBBWFBTZXR0aW5nRGVmaW5pdGlvbkdyb3VwKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2YgZ3JvdXAuc2VjdGlvbnMpIHtcbiAgICAgICAgYWxsU2V0dGluZ3MucHVzaCguLi5zZWN0aW9uLnNldHRpbmdzLm1hcCgoeCkgPT4gKHsgLi4ueCwgZ3JvdXAgfSBhcyBBWFBTZXR0aW5nRGVmaW5pdGlvblNlYXJjaCkpKTtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qgc3ViR3JvdXAgb2YgZ3JvdXAuZ3JvdXBzKSB7XG4gICAgICAgIGV4dHJhY3RTZXR0aW5ncyhzdWJHcm91cCk7IC8vIFJlY3Vyc2l2ZSBleHRyYWN0aW9uXG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzU2V0dGluZykge1xuICAgICAgZXh0cmFjdFNldHRpbmdzKGdyb3VwKTtcbiAgICB9XG5cbiAgICAvLyBTdGVwIDM6IFNlYXJjaCBzZXR0aW5ncyBieSB0aXRsZVxuICAgIGNvbnN0IHNlYXJjaFJlc3VsdHMgPSBhbGxTZXR0aW5ncy5maWx0ZXIoKHNldHRpbmcpID0+IHNldHRpbmcudGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXh0LnRvTG93ZXJDYXNlKCkpKTtcblxuICAgIHJldHVybiBzb3J0QnkoXG4gICAgICBzZWFyY2hSZXN1bHRzLm1hcDxBWFBTZWFyY2hSZXN1bHQ+KChzZXR0aW5nKSA9PiAoe1xuICAgICAgICB0aXRsZTogc2V0dGluZy50aXRsZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHNldHRpbmcuZGVzY3JpcHRpb24sXG4gICAgICAgIGdyb3VwOiAnc2V0dGluZycsXG4gICAgICAgIGRhdGE6IHNldHRpbmcsXG4gICAgICAgIGNvbW1hbmQ6IHtcbiAgICAgICAgICBuYW1lOiAnbmF2aWdhdGUnLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIHR5cGU6ICdyb3V0ZXInLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBwYXRoOiBgLyR7dGhpcy5zZXNzaW9uU2VydmljZS5hcHBsaWNhdGlvbj8ubmFtZX0vc2V0dGluZ3MvdXNlci8ke3NldHRpbmcuZ3JvdXAubmFtZX0jJHtzZXR0aW5nLnRpdGxlfWAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcGFyZW50OiBzZXR0aW5nLmdyb3VwXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICB0aXRsZTogc2V0dGluZy5ncm91cC50aXRsZSxcbiAgICAgICAgICAgIGRhdGE6IHNldHRpbmcuZ3JvdXAgYXMgQVhQU2V0dGluZ0RlZmluaXRpb25Hcm91cCxcbiAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICB9KSksXG4gICAgICBbJ3RpdGxlJ11cbiAgICApO1xuICB9XG59XG4iXX0=","import { AXPSessionService } from '@acorex/platform/auth';\nimport { inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nexport class AXMMenuProvider {\n constructor() {\n this.sessionService = inject(AXPSessionService);\n }\n async provide(context) {\n const appName = this.sessionService.application?.name;\n const isAuthorized = await firstValueFrom(this.sessionService.isAuthorized$);\n if (!isAuthorized) {\n return;\n }\n context.find('user-profile').addItems([\n {\n text: `t('user.title', {scope: \"settings\"})`,\n name: 'user-settings',\n icon: 'fa-light fa-gear',\n path: `/${this.sessionService.application?.name}/settings/user`,\n },\n ]);\n context.addItems([\n {\n name: 'tenant-application-settings',\n priority: 10000000,\n text: `t('tenant.title', {scope: \"settings\"})`,\n type: 'menu',\n icon: 'fa-light fa-gear',\n path: `/${appName}/settings/tenant`,\n data: {\n requiredPermission: 'admin',\n },\n },\n ]);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9zZXR0aW5ncy1tYW5hZ2VtZW50L3NyYy9saWIvbWVudS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsTUFBTSxPQUFPLGVBQWU7SUFBNUI7UUFDVSxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBaUNyRCxDQUFDO0lBL0JDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBK0I7UUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDO1FBRXRELE1BQU0sWUFBWSxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFDcEM7Z0JBQ0UsSUFBSSxFQUFFLHNDQUFzQztnQkFDNUMsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLElBQUksRUFBRSxrQkFBa0I7Z0JBQ3hCLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLElBQUksZ0JBQWdCO2FBQ2hFO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUNmO2dCQUNFLElBQUksRUFBRSw2QkFBNkI7Z0JBQ25DLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixJQUFJLEVBQUUsd0NBQXdDO2dCQUM5QyxJQUFJLEVBQUUsTUFBTTtnQkFDWixJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixJQUFJLEVBQUUsSUFBSSxPQUFPLGtCQUFrQjtnQkFDbkMsSUFBSSxFQUFFO29CQUNKLGtCQUFrQixFQUFFLE9BQU87aUJBQzVCO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWFBNZW51UHJvdmlkZXIsIEFYUE1lbnVQcm92aWRlckNvbnRleHQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBBWE1NZW51UHJvdmlkZXIgaW1wbGVtZW50cyBBWFBNZW51UHJvdmlkZXIge1xuICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcblxuICBhc3luYyBwcm92aWRlKGNvbnRleHQ6IEFYUE1lbnVQcm92aWRlckNvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBhcHBOYW1lID0gdGhpcy5zZXNzaW9uU2VydmljZS5hcHBsaWNhdGlvbj8ubmFtZTtcblxuICAgIGNvbnN0IGlzQXV0aG9yaXplZCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2Vzc2lvblNlcnZpY2UuaXNBdXRob3JpemVkJCk7XG4gICAgaWYgKCFpc0F1dGhvcml6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb250ZXh0LmZpbmQoJ3VzZXItcHJvZmlsZScpLmFkZEl0ZW1zKFtcbiAgICAgIHtcbiAgICAgICAgdGV4dDogYHQoJ3VzZXIudGl0bGUnLCB7c2NvcGU6IFwic2V0dGluZ3NcIn0pYCxcbiAgICAgICAgbmFtZTogJ3VzZXItc2V0dGluZ3MnLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtZ2VhcicsXG4gICAgICAgIHBhdGg6IGAvJHt0aGlzLnNlc3Npb25TZXJ2aWNlLmFwcGxpY2F0aW9uPy5uYW1lfS9zZXR0aW5ncy91c2VyYCxcbiAgICAgIH0sXG4gICAgXSk7XG5cbiAgICBjb250ZXh0LmFkZEl0ZW1zKFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3RlbmFudC1hcHBsaWNhdGlvbi1zZXR0aW5ncycsXG4gICAgICAgIHByaW9yaXR5OiAxMDAwMDAwMCxcbiAgICAgICAgdGV4dDogYHQoJ3RlbmFudC50aXRsZScsIHtzY29wZTogXCJzZXR0aW5nc1wifSlgLFxuICAgICAgICB0eXBlOiAnbWVudScsXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1nZWFyJyxcbiAgICAgICAgcGF0aDogYC8ke2FwcE5hbWV9L3NldHRpbmdzL3RlbmFudGAsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICByZXF1aXJlZFBlcm1pc3Npb246ICdhZG1pbicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG59XG4iXX0=","import { AXPAuthGuard } from '@acorex/platform/auth';\nimport { AXP_MENU_PROVIDER, AXP_SEARCH_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex/platform/common';\nimport { AXPAppStartUpService } from '@acorex/platform/core';\nimport { AXPRootLayoutComponent } from '@acorex/platform/themes/default';\nimport { Injector, NgModule } from '@angular/core';\nimport { ROUTES } from '@angular/router';\nimport { AXPSettingSearchDefinitionProvider } from './features/settings/search-definition.provider';\nimport { AXPSettingSearchProvider } from './features/settings/search.provider';\nimport { AXMMenuProvider } from './menu.provider';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/core\";\nfunction routesFacory() {\n let routes = [\n {\n path: ':app/settings/:scope',\n canActivate: [AXPAuthGuard],\n loadComponent: () => {\n return AXPRootLayoutComponent;\n },\n children: [\n {\n path: '',\n loadComponent: () => import('./features/settings/setting-page/setting-page.component').then((c) => c.AXPSettingPageComponent),\n data: { reuse: true },\n children: [\n {\n path: ':group',\n loadComponent: () => import('./features/settings/setting-view/setting-view.component').then((c) => c.AXPSettingsViewComponent),\n },\n ],\n },\n ],\n },\n ];\n return routes;\n}\nexport class AXMSettingsManagementModule {\n constructor(appInitService, injector) { }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXMSettingsManagementModule, deps: [{ token: i1.AXPAppStartUpService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: AXMSettingsManagementModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXMSettingsManagementModule, providers: [\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXPSettingSearchProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_DEFINITION_PROVIDER,\n useClass: AXPSettingSearchDefinitionProvider,\n multi: true,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXMSettingsManagementModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXPSettingSearchProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_DEFINITION_PROVIDER,\n useClass: AXPSettingSearchDefinitionProvider,\n multi: true,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n ],\n }]\n }], ctorParameters: () => [{ type: i1.AXPAppStartUpService }, { type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MtbWFuYWdlbWVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvc2V0dGluZ3MtbWFuYWdlbWVudC9zcmMvbGliL3NldHRpbmdzLW1hbmFnZW1lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsOEJBQThCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQVUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDcEcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFFbEQsU0FBUyxZQUFZO0lBQ25CLElBQUksTUFBTSxHQUFXO1FBQ25CO1lBQ0UsSUFBSSxFQUFFLHNCQUFzQjtZQUM1QixXQUFXLEVBQUUsQ0FBQyxZQUFZLENBQUM7WUFDM0IsYUFBYSxFQUFFLEdBQUcsRUFBRTtnQkFDbEIsT0FBTyxzQkFBc0IsQ0FBQztZQUNoQyxDQUFDO1lBQ0QsUUFBUSxFQUFFO2dCQUNSO29CQUNFLElBQUksRUFBRSxFQUFFO29CQUNSLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FDbEIsTUFBTSxDQUFDLHlEQUF5RCxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUM7b0JBQzFHLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7b0JBQ3JCLFFBQVEsRUFBRTt3QkFDUjs0QkFDRSxJQUFJLEVBQUUsUUFBUTs0QkFDZCxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQ2xCLE1BQU0sQ0FBQyx5REFBeUQsQ0FBQyxDQUFDLElBQUksQ0FDcEUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FDbEM7eUJBQ0o7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQztJQUNGLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUE2QkQsTUFBTSxPQUFPLDJCQUEyQjtJQUN0QyxZQUFZLGNBQW9DLEVBQUUsUUFBa0IsSUFBSSxDQUFDOzhHQUQ5RCwyQkFBMkI7K0dBQTNCLDJCQUEyQjsrR0FBM0IsMkJBQTJCLGFBdkIzQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxtQkFBbUI7Z0JBQzVCLFFBQVEsRUFBRSx3QkFBd0I7Z0JBQ2xDLEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRDtnQkFDRSxPQUFPLEVBQUUsOEJBQThCO2dCQUN2QyxRQUFRLEVBQUUsa0NBQWtDO2dCQUM1QyxLQUFLLEVBQUUsSUFBSTthQUNaO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLE1BQU07Z0JBQ2YsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsVUFBVSxFQUFFLFlBQVk7YUFDekI7WUFDRDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixRQUFRLEVBQUUsZUFBZTtnQkFDekIsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGOzsyRkFFVSwyQkFBMkI7a0JBM0J2QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxFQUFFO29CQUNYLE9BQU8sRUFBRSxFQUFFO29CQUNYLFlBQVksRUFBRSxFQUFFO29CQUNoQixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsUUFBUSxFQUFFLHdCQUF3Qjs0QkFDbEMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLDhCQUE4Qjs0QkFDdkMsUUFBUSxFQUFFLGtDQUFrQzs0QkFDNUMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLE1BQU07NEJBQ2YsS0FBSyxFQUFFLElBQUk7NEJBQ1gsVUFBVSxFQUFFLFlBQVk7eUJBQ3pCO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFFBQVEsRUFBRSxlQUFlOzRCQUN6QixLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUEF1dGhHdWFyZCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWFBfTUVOVV9QUk9WSURFUiwgQVhQX1NFQVJDSF9ERUZJTklUSU9OX1BST1ZJREVSLCBBWFBfU0VBUkNIX1BST1ZJREVSIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQQXBwU3RhcnRVcFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQUm9vdExheW91dENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vdGhlbWVzL2RlZmF1bHQnO1xuaW1wb3J0IHsgSW5qZWN0b3IsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXMsIFJPVVRFUyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBWFBTZXR0aW5nU2VhcmNoRGVmaW5pdGlvblByb3ZpZGVyIH0gZnJvbSAnLi9mZWF0dXJlcy9zZXR0aW5ncy9zZWFyY2gtZGVmaW5pdGlvbi5wcm92aWRlcic7XG5pbXBvcnQgeyBBWFBTZXR0aW5nU2VhcmNoUHJvdmlkZXIgfSBmcm9tICcuL2ZlYXR1cmVzL3NldHRpbmdzL3NlYXJjaC5wcm92aWRlcic7XG5pbXBvcnQgeyBBWE1NZW51UHJvdmlkZXIgfSBmcm9tICcuL21lbnUucHJvdmlkZXInO1xuXG5mdW5jdGlvbiByb3V0ZXNGYWNvcnkoKSB7XG4gIGxldCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAgICB7XG4gICAgICBwYXRoOiAnOmFwcC9zZXR0aW5ncy86c2NvcGUnLFxuICAgICAgY2FuQWN0aXZhdGU6IFtBWFBBdXRoR3VhcmRdLFxuICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gQVhQUm9vdExheW91dENvbXBvbmVudDtcbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICB7XG4gICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgIGltcG9ydCgnLi9mZWF0dXJlcy9zZXR0aW5ncy9zZXR0aW5nLXBhZ2Uvc2V0dGluZy1wYWdlLmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuQVhQU2V0dGluZ1BhZ2VDb21wb25lbnQpLFxuICAgICAgICAgIGRhdGE6IHsgcmV1c2U6IHRydWUgfSxcbiAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwYXRoOiAnOmdyb3VwJyxcbiAgICAgICAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICBpbXBvcnQoJy4vZmVhdHVyZXMvc2V0dGluZ3Mvc2V0dGluZy12aWV3L3NldHRpbmctdmlldy5jb21wb25lbnQnKS50aGVuKFxuICAgICAgICAgICAgICAgICAgKGMpID0+IGMuQVhQU2V0dGluZ3NWaWV3Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIF07XG4gIHJldHVybiByb3V0ZXM7XG59XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtdLFxuICBleHBvcnRzOiBbXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX1NFQVJDSF9QUk9WSURFUixcbiAgICAgIHVzZUNsYXNzOiBBWFBTZXR0aW5nU2VhcmNoUHJvdmlkZXIsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUF9TRUFSQ0hfREVGSU5JVElPTl9QUk9WSURFUixcbiAgICAgIHVzZUNsYXNzOiBBWFBTZXR0aW5nU2VhcmNoRGVmaW5pdGlvblByb3ZpZGVyLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBST1VURVMsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUZhY3Rvcnk6IHJvdXRlc0ZhY29yeSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUF9NRU5VX1BST1ZJREVSLFxuICAgICAgdXNlQ2xhc3M6IEFYTU1lbnVQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTVNldHRpbmdzTWFuYWdlbWVudE1vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKGFwcEluaXRTZXJ2aWNlOiBBWFBBcHBTdGFydFVwU2VydmljZSwgaW5qZWN0b3I6IEluamVjdG9yKSB7IH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LW1vZHVsZXMtc2V0dGluZ3MtbWFuYWdlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9zZXR0aW5ncy1tYW5hZ2VtZW50L3NyYy9hY29yZXgtbW9kdWxlcy1zZXR0aW5ncy1tYW5hZ2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,99 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Organization Management
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Complete module for managing organizational structures and the Organization Chart in the ACoreX Platform.
|
|
4
|
+
|
|
5
|
+
Key capabilities:
|
|
6
|
+
|
|
7
|
+
- Entities for Business Units, Business Unit Types, Positions, Roles, Responsibilities, Teams, and the Chart store
|
|
8
|
+
- Dynamic Organization Chart generation from entity data (versioned)
|
|
9
|
+
- Connectivity mocks and seeders for demo data
|
|
10
|
+
- i18n resources for EN/FA
|
|
11
|
+
|
|
12
|
+
## Entities
|
|
13
|
+
|
|
14
|
+
### BusinessUnitType
|
|
15
|
+
|
|
16
|
+
Defines business unit kinds and whether they are location-based.
|
|
17
|
+
|
|
18
|
+
Fields:
|
|
19
|
+
|
|
20
|
+
- `id: uuid`
|
|
21
|
+
- `code: string` (e.g., `division`, `department`, `branch`)
|
|
22
|
+
- `title: string`
|
|
23
|
+
- `isLocationBased: boolean`
|
|
24
|
+
|
|
25
|
+
### BusinessUnit
|
|
26
|
+
|
|
27
|
+
Unified node that represents Division / Department / Branch.
|
|
28
|
+
|
|
29
|
+
Fields:
|
|
30
|
+
|
|
31
|
+
- `id: uuid`
|
|
32
|
+
- `title: string`
|
|
33
|
+
- `description?: string`
|
|
34
|
+
- `typeId: string` → exposes `type.{ id, code, title, isLocationBased }`
|
|
35
|
+
- `parentId?: string` → exposes `parent.{ id, title }`
|
|
36
|
+
- `countryId? / stateId? / cityId?` → exposes `country/state/city.{ id, title }`
|
|
37
|
+
- Computed (plugin): `manager` (placeholder for now)
|
|
38
|
+
|
|
39
|
+
### Position
|
|
40
|
+
|
|
41
|
+
Standard position catalog with category support. Includes `isManager: boolean` for manager identification.
|
|
42
|
+
|
|
43
|
+
### Chart
|
|
44
|
+
|
|
45
|
+
Persists generated org chart data versions. Each record contains the `version` and the root `data` node.
|
|
46
|
+
|
|
47
|
+
## Org Chart
|
|
48
|
+
|
|
49
|
+
The chart is generated from entity data and rendered with a simplified legend. Nodes include:
|
|
50
|
+
|
|
51
|
+
- Company (virtual root from tenant)
|
|
52
|
+
- Location: Country → State → City (virtual grouping)
|
|
53
|
+
- Business Units: Division / Department / Branch (derived from `BusinessUnitType.code`)
|
|
54
|
+
- Position (subtitle shows employee display name, description shows employee role when available)
|
|
55
|
+
|
|
56
|
+
Example of the generated node (simplified):
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
{
|
|
60
|
+
id: '...',
|
|
61
|
+
title: 'QA Manager',
|
|
62
|
+
subtitle: 'Alexandra Kim',
|
|
63
|
+
description: 'QA Manager',
|
|
64
|
+
type: 'Position',
|
|
65
|
+
entity: { id: 'position-id', source: 'OrganizationManagement.Position' }
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Data Generation (Mocks)
|
|
70
|
+
|
|
71
|
+
- `BusinessUnitType` mocks: `division`, `department`, `branch`
|
|
72
|
+
- `BusinessUnit` mocks: hierarchical sample with `parent`, `type`, and location fields (hydrated from Location mocks)
|
|
73
|
+
- `Position` mocks: categorized with `isManager` inferred from title
|
|
74
|
+
- `PositionAssignment` mocks (HCM): one active primary per employee, scoped by `businessUnitId`
|
|
75
|
+
|
|
76
|
+
Seeders are registered in `connectivity/mock` under Organization Management.
|
|
77
|
+
|
|
78
|
+
## Generate Org Chart Version
|
|
79
|
+
|
|
80
|
+
Use the mock command `organization.chart.generate` to build a new version based on current entity data. The UI page exposes a "Generate" action that triggers the command.
|
|
81
|
+
|
|
82
|
+
## i18n
|
|
83
|
+
|
|
84
|
+
Demo app assets include `en-US` and `fa-IR` keys for:
|
|
85
|
+
|
|
86
|
+
- `business-unit-type` (title, code, is-location-based, basic-info)
|
|
87
|
+
- `business-unit` (basic-info, relation-info, geographic-info, type/parent)
|
|
88
|
+
- Chart labels and actions
|
|
89
|
+
|
|
90
|
+
## Importing
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
import {
|
|
94
|
+
AXMOrganizationManagementBusinessUnitEntityModule,
|
|
95
|
+
AXMOrganizationManagementBusinessUnitTypeEntityModule,
|
|
96
|
+
} from '@acorex/modules/organization-management';
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
This package is a secondary entry-point of `@acorex/modules`.
|