@openmfp/portal-ui-lib 0.195.17 → 0.196.1

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.
@@ -1 +1 @@
1
- {"LEFTNAV_COLLAPSE_NAVIGATION":"Navigation zuklappen","LEFTNAV_EXPAND_NAVIGATION":"Navigation ausklappen","USERSETTINGSDIALOG_SAVE":"Speichern","USERSETTINGSDIALOG_CANCEL":"Abbrechen","USERSETTINGSDIALOG_LANGUAGE":"Sprache","USERSETTINGSDIALOG_USER_ACCOUNT":"Benutzerkonto","USERSETTINGSDIALOG__APPEARANCE":"Aussehen","USERSETTINGSDIALOG_EMAIL":"E-Mail","USERSETTINGSDIALOG_NAME":"Name","USERSETTINGSDIALOG_LANGUAGE_EN":"English (en)","USERSETTINGSDIALOG_LANGUAGE_DE":"Deutsch (de)","USERSETTINGSDIALOG_HEADER":"Einstellungen","THEME_TAB":"Theme","USERSETTINGSPROFILEMENUENTRY_SETTINGS":"Einstellungen","PROFILE_SIGNOUT":"Abmelden","PROFILE_PROFILE":"Benutzerprofil","PROFILE_ORGANIZATION":"Organisation","PROFILE_ORGANIZATION_MANAGEMENT":"Organisation verwalten","PROFILE_FEEDBACK":"Feedback hinterlassen","PROFILE_REPORT_ISSUE":"Problem melden","LOGOUT_HEADLINE":"Sie haben sich erfolgreich ausgeloggt.","LOGOUT_HINT":"Melde dich wieder an um deine fantastische Arbeit fortzusetzen!","ORGANIZATION_MANAGEMENT_EXPLANATION":"Bitte verwenden Sie das folgende Formular, um eine neue Organisation aufzunehmen oder zu einer bestehenden zu wechseln.","ORGANIZATION_MANAGEMENT_SWITCH_LABEL":"Zu einer anderen Organisation wechseln","ORGANIZATION_MANAGEMENT_SWITCH_BUTTON":"Wechseln","ORGANIZATION_MANAGEMENT_ONBOARD_LABEL":"Neue Organisation hinzufügen","ORGANIZATION_MANAGEMENT_ONBOARD_BUTTON":"Hinzufügen","ORGANIZATION_MANAGEMENT_ONBOARD_PLACEHOLDER":"Organisationsname eingeben","ORGANIZATION_MANAGEMENT_NOT_READY_TOOLTIP":"Organisation ist noch nicht bereit","luigi.confirmationModal.header":"Bestätigungsmodal","luigi.confirmationModal.body":"Bestätigungsmodal Inhalt","luigi.button.dismiss":"Nein","luigi.button.confirm":"Ja","luigi.unsavedChangesAlert.header":"Ungesicherte Daten erkannt","luigi.unsavedChangesAlert.body":"Nicht gesicherte Daten gehen verloren. Trotzdem fortfahren?","luigi.requestedRouteNotFound":"Angefrage Route {route} kann nicht gefunden werden.","luigi.notExactTargetNode":"Der exakte Zielknoten für diese Route kann nicht gefunden werden.","SESSION_EXPIRED":"Ihre Sitzung ist abgelaufen.","SUCCESSFULLY_LOGGED_OUT":"Du hast dich erfolgreich ausgeloggt","SIGN_IN_HINT":"Melde dich erneut an um deine fantastische Arbeit fortzusetzen.","SIGN_IN_ERROR":"Hoppla, irgendwas ist schief gelaufen.","SIGN_IN_ERROR_HINT":"Bitte versuche noch einmal dich anzumelden.","INVALID_TOKEN_ERROR":"Ungültiger Token","INVALID_TOKEN_ERROR_HINT":"Der Token der OAuth Methode ist ungültig, stellen Sie sicher, dass sie nicht in einem falschen Account angemeldet sind. Versuchen Sie erneut, sich anzumelden.","LOGIN_AGAIN":"Anmelden","SEARCH_NOT_AVAILABLE":"Die Suche ist nicht verfügbar.","SEARCH_LABEL_IN_DOC_TITLE":"Suche","ERROR_ENTITY_NOT_FOUND_TITLE":"{entityType} {entityId} konnte nicht gefunden werden","ERROR_ENTITY_NOT_FOUND_TEXT_NO_LIST":"Prüfe, ob die URL korrekt ist.","ERROR_ENTITY_NOT_FOUND_TEXT_LIST":"Prüfe, ob die URL korrekt ist oder sieh dir alle {entityTypePlural} an.","ERROR_ENTITY_VIEW_ALL_BUTTON":"Alle {entityTypePlural} ansehen","ERROR_CONTENT_NOT_FOUND_TITLE":"Der gewünschte Inhalt kann nicht angezeigt werden","ERROR_CONTENT_NOT_FOUND_TEXT":"Prüfe, ob die URL korrekt ist oder benutze die Suche im Portal. Falls dieses Problem weiterhin auftritt, lege einen Issue an.","ERROR_CONTENT_NOT_FOUND_CREATE_ISSUE_BUTTON":"Issue anlegen","ERROR_CONTENT_NOT_ALLOWED_NO_PROJECT_MEMBER_TEXT":"Diese Seite ist nur für Projekt-Mitglieder erreichbar.","ERROR_CONTENT_NOT_ALLOWED_JOIN_PROJECT_BUTTON":"Projekt beitreten","ERROR_CONTENT_NOT_ALLOWED_VIEW_PROJECT_BUTTON":"Projekt ansehen","ERROR_UNIDENTIFIED_TITLE":"Ein unbekannter Fehler ist aufgetreten","PLUGIN_PAGE_CAN_NOT_BE_SHOWN":"Die Erweiterung '{extensionLabel}' ist so konfiguriert, dass sie externen Inhalt anzeigt, der im Portal nicht angezeigt werden kann","PLUGIN_PAGE_CAN_NOT_BE_SHOWN_UPDATE":"Die Erweiterung '{extensionLabel}' ist veraltet und so konfiguriert, dass sie externen Inhalt anzeigt, der im Portal nicht angezeigt werden kann","PLUGIN_PAGE_NEED_EXTENSION_UPDATE":"Die aktuelle Version der Erweiterung ist '{currentVersion}', benötigt wird jedoch Version '{requiredVersion}'","PLUGIN_PAGE_OPEN_IN_NEW_TAB":"Bitte öffnen Sie den Inhalt der Erweiterung in einem neuen Tab.","VPN_NEEDED_PAGE_TITLE":"VPN ist erforderlich","VPN_NEEDED_PAGE_DESCRIPTION":"Stellen Sie eine Verbindung zum Unternehmensnetzwerk her, um diese Seite direkt in Portal anzuzeigen.","CONFIGURATION_MISSING_PAGE_TITLE":"Konfiguration erforderlich","INFO_SETTINGS_DIALOG_LABEL":"Über","INFO_SETTINGS_DIALOG_SUBLABEL":"Informationen über die Anwendung","INFO_SETTINGS_DIALOG_TITLE":"Über","LOCAL_DEVELOPMENT_SETTINGS_ACTIVE_INDICATOR":"Lokale Anwendungsentwicklungmodus ON","LOCAL_DEVELOPMENT_SETTINGS_DIALOG_LABEL":"Entwicklung","LOCAL_DEVELOPMENT_SETTINGS_DIALOG_SUBLABEL":"Lokale Extension-Entwicklung","LOCAL_DEVELOPMENT_SETTINGS_DIALOG_TITLE":"Lokaler Entwicklungsmodus","LOCAL_DEVELOPMENT_SETTINGS_ADD_BUTTON":"Hinzufügen","LOCAL_DEVELOPMENT_SETTINGS_CLEAR_BUTTON":"Löschen","LOCAL_DEVELOPMENT_SETTINGS_REMOVE_BUTTON":"Entfernen","LOCAL_DEVELOPMENT_SETTINGS_EXPLANATION":"\n Die folgenden Einstellungen ermöglichen es Ihnen, Ihre lokal entwickelte Anwendung zusammen mit dieser Anwendung auszuführen und zu testen. Sobald der Entwicklungsmodus aktiv ist und die richtigen URLs bereitgestellt werden, werden Ihre lokal laufenden Anwendungen nahtlos integriert. Für weitere Informationen zur lokalen Entwicklung folgen Sie bitte dem Link:","LOCAL_DEVELOPMENT_SETTINGS_LINK":"Dokumentation zur lokalen Entwicklung","LOCAL_DEVELOPMENT_SETTINGS_IS_ACTIVE":"Ist der Entwicklungsmodus aktiv?","LOCAL_DEVELOPMENT_SETTINGS_URLS_TITLE":"Konfigurations-URLs","LOCAL_DEVELOPMENT_SETTINGS_URLS_LABEL":"Geben Sie eine URL an, unter der die Inhaltskonfigurationsdatei bereitgestellt wird","LOCAL_DEVELOPMENT_SETTINGS_URLS_ERROR":"Bitte geben Sie eine gültige URL ein","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_TITLE":"Service-Provider-Konfiguration","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_EXPLANATION":"\n Die Werte werden zu jedem Luigi-Knoten-Kontext im Feld serviceProviderConfig hinzugefügt.","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_KEY_INPUT_LABEL":"Schlüssel","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_KEY_INPUT_PLACEHOLDER":"Schlüssel angeben","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_VALUE_INPUT_LABEL":"Wert","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_VALUE_INPUT_PLACEHOLDER":"Wert angeben","FEATURE_TOGGLE_SETTINGS_DIALOG_LABEL":"Feature Toggles","FEATURE_TOGGLE_SETTINGS_DIALOG_SUBLABEL":"Feature Toggles Einstellungen","FEATURE_TOGGLE_SETTINGS_DIALOG_TITLE":"Feature Toggles","FEATURE_TOGGLE_SETTINGS_EXPLANATION":"Die folgende Einstellung ermöglicht es Ihnen, Features zu aktivieren oder zu deaktivieren. Für weitere Informationen zu Feature Toggles folgen Sie bitte dem Link:","FEATURE_TOGGLE_SETTINGS_LINK":"Feature Toggles Dokumentation","FEATURE_TOGGLE_SETTINGS_ADD_BUTTON":"Hinzufügen","FEATURE_TOGGLE_SETTINGS_CLEAR_BUTTON":"Löschen","FEATURE_TOGGLE_SETTINGS_NAME_INPUT_LABEL":"Feature Toggle Name","FEATURE_TOGGLE_SETTINGS_TOOLTIP_QUERY_PARAM":"Feature Toggle ist über Query-Parameter aktiviert","ERROR_NOT_FOUND_TITLE":"Seite nicht gefunden","ERROR_NOT_FOUND_SUBTITLE":"Die gesuchte Seite existiert nicht.","ERROR_NOT_AUTHORIZED_TITLE":"Zugriff verweigert","ERROR_NOT_AUTHORIZED_SUBTITLE":"Sie haben keine Berechtigung, auf diese Seite zuzugreifen.","ERROR_UNEXPECTED_TITLE":"Unerwarteter Fehler","ERROR_UNEXPECTED_SUBTITLE":"Ein unerwarteter Fehler ist aufgetreten. Bitte versuchen Sie es später erneut.","ERROR_GO_HOME_BUTTON":"Zur Startseite","ERROR_DETAILS_LABEL":"Fehlerdetails"}
1
+ {"LEFTNAV_COLLAPSE_NAVIGATION":"Navigation zuklappen","LEFTNAV_EXPAND_NAVIGATION":"Navigation ausklappen","USERSETTINGSDIALOG_SAVE":"Speichern","USERSETTINGSDIALOG_CANCEL":"Abbrechen","USERSETTINGSDIALOG_LANGUAGE":"Sprache","USERSETTINGSDIALOG_USER_ACCOUNT":"Benutzerkonto","USERSETTINGSDIALOG__APPEARANCE":"Aussehen","USERSETTINGSDIALOG_EMAIL":"E-Mail","USERSETTINGSDIALOG_NAME":"Name","USERSETTINGSDIALOG_LANGUAGE_EN":"English (en)","USERSETTINGSDIALOG_LANGUAGE_DE":"Deutsch (de)","USERSETTINGSDIALOG_HEADER":"Einstellungen","THEME_TAB":"Theme","USERSETTINGSPROFILEMENUENTRY_SETTINGS":"Einstellungen","PROFILE_SIGNOUT":"Abmelden","PROFILE_PROFILE":"Benutzerprofil","PROFILE_ORGANIZATION":"Organisation","PROFILE_ORGANIZATION_MANAGEMENT":"Organisation verwalten","PROFILE_FEEDBACK":"Feedback hinterlassen","PROFILE_REPORT_ISSUE":"Problem melden","LOGOUT_HEADLINE":"Sie haben sich erfolgreich ausgeloggt.","LOGOUT_HINT":"Melde dich wieder an um deine fantastische Arbeit fortzusetzen!","ORGANIZATION_MANAGEMENT_EXPLANATION":"Bitte verwenden Sie das folgende Formular, um eine neue Organisation aufzunehmen oder zu einer bestehenden zu wechseln.","ORGANIZATION_MANAGEMENT_SWITCH_LABEL":"Zu einer anderen Organisation wechseln","ORGANIZATION_MANAGEMENT_SWITCH_BUTTON":"Wechseln","ORGANIZATION_MANAGEMENT_ONBOARD_LABEL":"Neue Organisation hinzufügen","ORGANIZATION_MANAGEMENT_ONBOARD_BUTTON":"Hinzufügen","ORGANIZATION_MANAGEMENT_ONBOARD_PLACEHOLDER":"Organisationsname eingeben","ORGANIZATION_MANAGEMENT_NOT_READY_TOOLTIP":"Organisation ist noch nicht bereit","luigi.confirmationModal.header":"Bestätigungsmodal","luigi.confirmationModal.body":"Bestätigungsmodal Inhalt","luigi.button.dismiss":"Nein","luigi.button.confirm":"Ja","luigi.unsavedChangesAlert.header":"Ungesicherte Daten erkannt","luigi.unsavedChangesAlert.body":"Nicht gesicherte Daten gehen verloren. Trotzdem fortfahren?","luigi.requestedRouteNotFound":"Angefrage Route {route} kann nicht gefunden werden.","luigi.notExactTargetNode":"Der exakte Zielknoten für diese Route kann nicht gefunden werden.","SESSION_EXPIRED":"Ihre Sitzung ist abgelaufen.","SUCCESSFULLY_LOGGED_OUT":"Du hast dich erfolgreich ausgeloggt","SIGN_IN_HINT":"Melde dich erneut an um deine fantastische Arbeit fortzusetzen.","SIGN_IN_ERROR":"Hoppla, irgendwas ist schief gelaufen.","SIGN_IN_ERROR_HINT":"Bitte versuche noch einmal dich anzumelden.","INVALID_TOKEN_ERROR":"Ungültiger Token","INVALID_TOKEN_ERROR_HINT":"Der Token der OAuth Methode ist ungültig, stellen Sie sicher, dass sie nicht in einem falschen Account angemeldet sind. Versuchen Sie erneut, sich anzumelden.","LOGIN_AGAIN":"Anmelden","SEARCH_NOT_AVAILABLE":"Die Suche ist nicht verfügbar.","SEARCH_LABEL_IN_DOC_TITLE":"Suche","ERROR_ENTITY_NOT_FOUND_TITLE":"{entityType} {entityId} konnte nicht gefunden werden","ERROR_ENTITY_NOT_FOUND_TEXT_NO_LIST":"Prüfe, ob die URL korrekt ist.","ERROR_ENTITY_NOT_FOUND_TEXT_LIST":"Prüfe, ob die URL korrekt ist oder sieh dir alle {entityTypePlural} an.","ERROR_ENTITY_VIEW_ALL_BUTTON":"Alle {entityTypePlural} ansehen","ERROR_CONTENT_NOT_FOUND_TITLE":"Der gewünschte Inhalt kann nicht angezeigt werden","ERROR_CONTENT_NOT_FOUND_TEXT":"Prüfe, ob die URL korrekt ist oder benutze die Suche im Portal. Falls dieses Problem weiterhin auftritt, lege einen Issue an.","ERROR_CONTENT_NOT_FOUND_CREATE_ISSUE_BUTTON":"Issue anlegen","ERROR_CONTENT_NOT_ALLOWED_NO_PROJECT_MEMBER_TEXT":"Diese Seite ist nur für Projekt-Mitglieder erreichbar.","ERROR_CONTENT_NOT_ALLOWED_JOIN_PROJECT_BUTTON":"Projekt beitreten","ERROR_CONTENT_NOT_ALLOWED_VIEW_PROJECT_BUTTON":"Projekt ansehen","ERROR_UNIDENTIFIED_TITLE":"Ein unbekannter Fehler ist aufgetreten","PLUGIN_PAGE_CAN_NOT_BE_SHOWN":"Die Erweiterung '{extensionLabel}' ist so konfiguriert, dass sie externen Inhalt anzeigt, der im Portal nicht angezeigt werden kann","PLUGIN_PAGE_CAN_NOT_BE_SHOWN_UPDATE":"Die Erweiterung '{extensionLabel}' ist veraltet und so konfiguriert, dass sie externen Inhalt anzeigt, der im Portal nicht angezeigt werden kann","PLUGIN_PAGE_NEED_EXTENSION_UPDATE":"Die aktuelle Version der Erweiterung ist '{currentVersion}', benötigt wird jedoch Version '{requiredVersion}'","PLUGIN_PAGE_OPEN_IN_NEW_TAB":"Bitte öffnen Sie den Inhalt der Erweiterung in einem neuen Tab.","VPN_NEEDED_PAGE_TITLE":"VPN ist erforderlich","VPN_NEEDED_PAGE_DESCRIPTION":"Stellen Sie eine Verbindung zum Unternehmensnetzwerk her, um diese Seite direkt in Portal anzuzeigen.","VPN_NEEDED_PAGE_RETRY_BUTTON":"Erneut versuchen","CONFIGURATION_MISSING_PAGE_TITLE":"Konfiguration erforderlich","INFO_SETTINGS_DIALOG_LABEL":"Über","INFO_SETTINGS_DIALOG_SUBLABEL":"Informationen über die Anwendung","INFO_SETTINGS_DIALOG_TITLE":"Über","LOCAL_DEVELOPMENT_SETTINGS_ACTIVE_INDICATOR":"Lokale Anwendungsentwicklungmodus ON","LOCAL_DEVELOPMENT_SETTINGS_DIALOG_LABEL":"Entwicklung","LOCAL_DEVELOPMENT_SETTINGS_DIALOG_SUBLABEL":"Lokale Extension-Entwicklung","LOCAL_DEVELOPMENT_SETTINGS_DIALOG_TITLE":"Lokaler Entwicklungsmodus","LOCAL_DEVELOPMENT_SETTINGS_ADD_BUTTON":"Hinzufügen","LOCAL_DEVELOPMENT_SETTINGS_CLEAR_BUTTON":"Löschen","LOCAL_DEVELOPMENT_SETTINGS_REMOVE_BUTTON":"Entfernen","LOCAL_DEVELOPMENT_SETTINGS_EXPLANATION":"\n Die folgenden Einstellungen ermöglichen es Ihnen, Ihre lokal entwickelte Anwendung zusammen mit dieser Anwendung auszuführen und zu testen. Sobald der Entwicklungsmodus aktiv ist und die richtigen URLs bereitgestellt werden, werden Ihre lokal laufenden Anwendungen nahtlos integriert. Für weitere Informationen zur lokalen Entwicklung folgen Sie bitte dem Link:","LOCAL_DEVELOPMENT_SETTINGS_LINK":"Dokumentation zur lokalen Entwicklung","LOCAL_DEVELOPMENT_SETTINGS_IS_ACTIVE":"Ist der Entwicklungsmodus aktiv?","LOCAL_DEVELOPMENT_SETTINGS_URLS_TITLE":"Konfigurations-URLs","LOCAL_DEVELOPMENT_SETTINGS_URLS_LABEL":"Geben Sie eine URL an, unter der die Inhaltskonfigurationsdatei bereitgestellt wird","LOCAL_DEVELOPMENT_SETTINGS_URLS_ERROR":"Bitte geben Sie eine gültige URL ein","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_TITLE":"Service-Provider-Konfiguration","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_EXPLANATION":"\n Die Werte werden zu jedem Luigi-Knoten-Kontext im Feld serviceProviderConfig hinzugefügt.","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_KEY_INPUT_LABEL":"Schlüssel","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_KEY_INPUT_PLACEHOLDER":"Schlüssel angeben","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_VALUE_INPUT_LABEL":"Wert","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_VALUE_INPUT_PLACEHOLDER":"Wert angeben","FEATURE_TOGGLE_SETTINGS_DIALOG_LABEL":"Feature Toggles","FEATURE_TOGGLE_SETTINGS_DIALOG_SUBLABEL":"Feature Toggles Einstellungen","FEATURE_TOGGLE_SETTINGS_DIALOG_TITLE":"Feature Toggles","FEATURE_TOGGLE_SETTINGS_EXPLANATION":"Die folgende Einstellung ermöglicht es Ihnen, Features zu aktivieren oder zu deaktivieren. Für weitere Informationen zu Feature Toggles folgen Sie bitte dem Link:","FEATURE_TOGGLE_SETTINGS_LINK":"Feature Toggles Dokumentation","FEATURE_TOGGLE_SETTINGS_ADD_BUTTON":"Hinzufügen","FEATURE_TOGGLE_SETTINGS_CLEAR_BUTTON":"Löschen","FEATURE_TOGGLE_SETTINGS_NAME_INPUT_LABEL":"Feature Toggle Name","FEATURE_TOGGLE_SETTINGS_TOOLTIP_QUERY_PARAM":"Feature Toggle ist über Query-Parameter aktiviert","ERROR_NOT_FOUND_TITLE":"Seite nicht gefunden","ERROR_NOT_FOUND_SUBTITLE":"Die gesuchte Seite existiert nicht.","ERROR_NOT_AUTHORIZED_TITLE":"Zugriff verweigert","ERROR_NOT_AUTHORIZED_SUBTITLE":"Sie haben keine Berechtigung, auf diese Seite zuzugreifen.","ERROR_UNEXPECTED_TITLE":"Unerwarteter Fehler","ERROR_UNEXPECTED_SUBTITLE":"Ein unerwarteter Fehler ist aufgetreten. Bitte versuchen Sie es später erneut.","ERROR_GO_HOME_BUTTON":"Zur Startseite","ERROR_DETAILS_LABEL":"Fehlerdetails"}
@@ -1 +1 @@
1
- {"LEFTNAV_COLLAPSE_NAVIGATION":"Collapse navigation","LEFTNAV_EXPAND_NAVIGATION":"Expand navigation","USERSETTINGSDIALOG_SAVE":"Save","USERSETTINGSDIALOG_CANCEL":"Cancel","USERSETTINGSDIALOG_LANGUAGE":"Language","USERSETTINGSDIALOG_USER_ACCOUNT":"User Account","USERSETTINGSDIALOG__APPEARANCE":"Appearance","USERSETTINGSDIALOG_EMAIL":"E-Mail","USERSETTINGSDIALOG_NAME":"Name","USERSETTINGSDIALOG_LANGUAGE_EN":"English (en)","USERSETTINGSDIALOG_LANGUAGE_DE":"Deutsch (de)","USERSETTINGSDIALOG_HEADER":"Settings","THEME_TAB":"Theme","USERSETTINGSPROFILEMENUENTRY_SETTINGS":"Settings","PROFILE_SIGNOUT":"Sign out","PROFILE_PROFILE":"Profile","PROFILE_ORGANIZATION":"Organization","PROFILE_ORGANIZATION_MANAGEMENT":"Manage Organization","PROFILE_FEEDBACK":"Give Feedback","PROFILE_REPORT_ISSUE":"Report an Issue","LOGOUT_HEADLINE":"You have successfully logged out.","LOGOUT_HINT":"Sign in again to continue working on awesome things!","ORGANIZATION_MANAGEMENT_EXPLANATION":"Please use the form below to onboard a new organization or switch to an existing one.","ORGANIZATION_MANAGEMENT_SWITCH_LABEL":"Switch to a different organization","ORGANIZATION_MANAGEMENT_SWITCH_BUTTON":"Switch","ORGANIZATION_MANAGEMENT_ONBOARD_LABEL":"Onboard a new organization","ORGANIZATION_MANAGEMENT_ONBOARD_BUTTON":"Onboard","ORGANIZATION_MANAGEMENT_ONBOARD_PLACEHOLDER":"Enter organization name","ORGANIZATION_MANAGEMENT_NOT_READY_TOOLTIP":"Organization is not ready yet","luigi.confirmationModal.header":"Confirmation","luigi.confirmationModal.body":"Are you sure you want to do this?","luigi.button.dismiss":"No","luigi.button.confirm":"Yes","luigi.unsavedChangesAlert.header":"Unsaved changes detected","luigi.unsavedChangesAlert.body":"Unsaved changes will be lost. Do you want to continue?","luigi.requestedRouteNotFound":"Could not find the requested route {route}.","luigi.notExactTargetNode":"Could not map the exact target node for the requested route {route}.","SESSION_EXPIRED":"Your session has expired.","SUCCESSFULLY_LOGGED_OUT":"You have successfully logged out.","SIGN_IN_HINT":"Sign in again to continue working on awesome things!","SIGN_IN_ERROR":"Ooops, something went wrong.","SIGN_IN_ERROR_HINT":"Please try to log in again.","INVALID_TOKEN_ERROR":"Invalid Token","INVALID_TOKEN_ERROR_HINT":"The token provided by the OAuth method is not valid, make sure you are not logged in into a wrong account. Try to login again.","LOGIN_AGAIN":"Login again","SEARCH_NOT_AVAILABLE":"Search is not available.","SEARCH_LABEL_IN_DOC_TITLE":"Search","ERROR_ENTITY_NOT_FOUND_TITLE":"{entityType} {entityId} can't be found","ERROR_ENTITY_NOT_FOUND_TEXT_NO_LIST":"Check if the URL is correct.","ERROR_ENTITY_NOT_FOUND_TEXT_LIST":"Check if the URL is correct or view all {entityTypePlural_lowerCase}.","ERROR_ENTITY_VIEW_ALL_BUTTON":"View All {entityTypePlural}","ERROR_CONTENT_NOT_FOUND_TITLE":"The content you specified can't be found","ERROR_CONTENT_NOT_FOUND_TEXT":"Check if the URL is correct or search in the Portal. If this problem persists, create an issue.","ERROR_CONTENT_NOT_FOUND_CREATE_ISSUE_BUTTON":"Create issue","ERROR_CONTENT_NOT_ALLOWED_NO_PROJECT_MEMBER_TEXT":"Only members of the project can access this page.","ERROR_CONTENT_NOT_ALLOWED_JOIN_PROJECT_BUTTON":"Join project","ERROR_CONTENT_NOT_ALLOWED_VIEW_PROJECT_BUTTON":"View Project","ERROR_UNIDENTIFIED_TITLE":"An unidentified error has occured","PLUGIN_PAGE_CAN_NOT_BE_SHOWN":"The extension '{extensionLabel}' is configured to display external content that cannot be shown inside the Portal","PLUGIN_PAGE_CAN_NOT_BE_SHOWN_UPDATE":"The extension '{extensionLabel}' is outdated and configured to display external content that cannot be shown inside the Portal","PLUGIN_PAGE_NEED_EXTENSION_UPDATE":"The extensions current version is '{currentVersion}' but you require version '{requiredVersion}'","PLUGIN_PAGE_OPEN_IN_NEW_TAB":"Please open the extension's content in a new tab.","VPN_NEEDED_PAGE_TITLE":"VPN Needed","VPN_NEEDED_PAGE_DESCRIPTION":"Connect to the corporate network to view this extension UI directly in the Portal.","CONFIGURATION_MISSING_PAGE_TITLE":"Configuration Missing","INFO_SETTINGS_DIALOG_LABEL":"About","INFO_SETTINGS_DIALOG_SUBLABEL":"Information about application","INFO_SETTINGS_DIALOG_TITLE":"About","LOCAL_DEVELOPMENT_SETTINGS_ACTIVE_INDICATOR":"Local Development Mode ON","LOCAL_DEVELOPMENT_SETTINGS_DIALOG_LABEL":"Development","LOCAL_DEVELOPMENT_SETTINGS_DIALOG_SUBLABEL":"Local extension development","LOCAL_DEVELOPMENT_SETTINGS_DIALOG_TITLE":"Local Development Mode","LOCAL_DEVELOPMENT_SETTINGS_ADD_BUTTON":"Add","LOCAL_DEVELOPMENT_SETTINGS_CLEAR_BUTTON":"Clear","LOCAL_DEVELOPMENT_SETTINGS_REMOVE_BUTTON":"Remove","LOCAL_DEVELOPMENT_SETTINGS_EXPLANATION":"\n The following settings enable you to run and test your locally developed\n application alongside this application. Once Development Mode is\n active and the correct URLs are provided, your locally\n running applications will be seamlessly integrated. For more information\n about local development, please follow the link:","LOCAL_DEVELOPMENT_SETTINGS_LINK":"Local Development Documentation","LOCAL_DEVELOPMENT_SETTINGS_IS_ACTIVE":"Is Development Mode Active?","LOCAL_DEVELOPMENT_SETTINGS_URLS_TITLE":"Configuration URLs","LOCAL_DEVELOPMENT_SETTINGS_URLS_LABEL":"Provide a URL where the content configuration file is served","LOCAL_DEVELOPMENT_SETTINGS_URLS_ERROR":"Please enter a valid URL","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_TITLE":"Service Provider Config","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_EXPLANATION":"\n The values will be added to every Luigi node's context in the serviceProviderConfig field.","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_KEY_INPUT_LABEL":"Key","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_KEY_INPUT_PLACEHOLDER":"Provide key","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_VALUE_INPUT_LABEL":"Value","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_VALUE_INPUT_PLACEHOLDER":"Provide value","FEATURE_TOGGLE_SETTINGS_DIALOG_LABEL":"Feature Toggles","FEATURE_TOGGLE_SETTINGS_DIALOG_SUBLABEL":"Feature Toggles settings","FEATURE_TOGGLE_SETTINGS_DIALOG_TITLE":"Feature Toggles","FEATURE_TOGGLE_SETTINGS_EXPLANATION":"The following setting allows you to enable or disable features. For more information about feature toggles, please follow the link:","FEATURE_TOGGLE_SETTINGS_LINK":"Feature Toggles Documentation","FEATURE_TOGGLE_SETTINGS_ADD_BUTTON":"Add","FEATURE_TOGGLE_SETTINGS_CLEAR_BUTTON":"Clear","FEATURE_TOGGLE_SETTINGS_NAME_INPUT_LABEL":"Feature Toggle Name","FEATURE_TOGGLE_SETTINGS_TOOLTIP_QUERY_PARAM":"Feature toggle is enabled by query parameter","ERROR_NOT_FOUND_TITLE":"Page Not Found","ERROR_NOT_FOUND_SUBTITLE":"The page you are looking for does not exist.","ERROR_NOT_AUTHORIZED_TITLE":"Access Denied","ERROR_NOT_AUTHORIZED_SUBTITLE":"You do not have permission to access this page.","ERROR_UNEXPECTED_TITLE":"Unexpected Error","ERROR_UNEXPECTED_SUBTITLE":"An unexpected error occurred. Please try again later.","ERROR_GO_HOME_BUTTON":"Go Home","ERROR_DETAILS_LABEL":"Error details"}
1
+ {"LEFTNAV_COLLAPSE_NAVIGATION":"Collapse navigation","LEFTNAV_EXPAND_NAVIGATION":"Expand navigation","USERSETTINGSDIALOG_SAVE":"Save","USERSETTINGSDIALOG_CANCEL":"Cancel","USERSETTINGSDIALOG_LANGUAGE":"Language","USERSETTINGSDIALOG_USER_ACCOUNT":"User Account","USERSETTINGSDIALOG__APPEARANCE":"Appearance","USERSETTINGSDIALOG_EMAIL":"E-Mail","USERSETTINGSDIALOG_NAME":"Name","USERSETTINGSDIALOG_LANGUAGE_EN":"English (en)","USERSETTINGSDIALOG_LANGUAGE_DE":"Deutsch (de)","USERSETTINGSDIALOG_HEADER":"Settings","THEME_TAB":"Theme","USERSETTINGSPROFILEMENUENTRY_SETTINGS":"Settings","PROFILE_SIGNOUT":"Sign out","PROFILE_PROFILE":"Profile","PROFILE_ORGANIZATION":"Organization","PROFILE_ORGANIZATION_MANAGEMENT":"Manage Organization","PROFILE_FEEDBACK":"Give Feedback","PROFILE_REPORT_ISSUE":"Report an Issue","LOGOUT_HEADLINE":"You have successfully logged out.","LOGOUT_HINT":"Sign in again to continue working on awesome things!","ORGANIZATION_MANAGEMENT_EXPLANATION":"Please use the form below to onboard a new organization or switch to an existing one.","ORGANIZATION_MANAGEMENT_SWITCH_LABEL":"Switch to a different organization","ORGANIZATION_MANAGEMENT_SWITCH_BUTTON":"Switch","ORGANIZATION_MANAGEMENT_ONBOARD_LABEL":"Onboard a new organization","ORGANIZATION_MANAGEMENT_ONBOARD_BUTTON":"Onboard","ORGANIZATION_MANAGEMENT_ONBOARD_PLACEHOLDER":"Enter organization name","ORGANIZATION_MANAGEMENT_NOT_READY_TOOLTIP":"Organization is not ready yet","luigi.confirmationModal.header":"Confirmation","luigi.confirmationModal.body":"Are you sure you want to do this?","luigi.button.dismiss":"No","luigi.button.confirm":"Yes","luigi.unsavedChangesAlert.header":"Unsaved changes detected","luigi.unsavedChangesAlert.body":"Unsaved changes will be lost. Do you want to continue?","luigi.requestedRouteNotFound":"Could not find the requested route {route}.","luigi.notExactTargetNode":"Could not map the exact target node for the requested route {route}.","SESSION_EXPIRED":"Your session has expired.","SUCCESSFULLY_LOGGED_OUT":"You have successfully logged out.","SIGN_IN_HINT":"Sign in again to continue working on awesome things!","SIGN_IN_ERROR":"Ooops, something went wrong.","SIGN_IN_ERROR_HINT":"Please try to log in again.","INVALID_TOKEN_ERROR":"Invalid Token","INVALID_TOKEN_ERROR_HINT":"The token provided by the OAuth method is not valid, make sure you are not logged in into a wrong account. Try to login again.","LOGIN_AGAIN":"Login again","SEARCH_NOT_AVAILABLE":"Search is not available.","SEARCH_LABEL_IN_DOC_TITLE":"Search","ERROR_ENTITY_NOT_FOUND_TITLE":"{entityType} {entityId} can't be found","ERROR_ENTITY_NOT_FOUND_TEXT_NO_LIST":"Check if the URL is correct.","ERROR_ENTITY_NOT_FOUND_TEXT_LIST":"Check if the URL is correct or view all {entityTypePlural_lowerCase}.","ERROR_ENTITY_VIEW_ALL_BUTTON":"View All {entityTypePlural}","ERROR_CONTENT_NOT_FOUND_TITLE":"The content you specified can't be found","ERROR_CONTENT_NOT_FOUND_TEXT":"Check if the URL is correct or search in the Portal. If this problem persists, create an issue.","ERROR_CONTENT_NOT_FOUND_CREATE_ISSUE_BUTTON":"Create issue","ERROR_CONTENT_NOT_ALLOWED_NO_PROJECT_MEMBER_TEXT":"Only members of the project can access this page.","ERROR_CONTENT_NOT_ALLOWED_JOIN_PROJECT_BUTTON":"Join project","ERROR_CONTENT_NOT_ALLOWED_VIEW_PROJECT_BUTTON":"View Project","ERROR_UNIDENTIFIED_TITLE":"An unidentified error has occured","PLUGIN_PAGE_CAN_NOT_BE_SHOWN":"The extension '{extensionLabel}' is configured to display external content that cannot be shown inside the Portal","PLUGIN_PAGE_CAN_NOT_BE_SHOWN_UPDATE":"The extension '{extensionLabel}' is outdated and configured to display external content that cannot be shown inside the Portal","PLUGIN_PAGE_NEED_EXTENSION_UPDATE":"The extensions current version is '{currentVersion}' but you require version '{requiredVersion}'","PLUGIN_PAGE_OPEN_IN_NEW_TAB":"Please open the extension's content in a new tab.","VPN_NEEDED_PAGE_TITLE":"VPN Needed","VPN_NEEDED_PAGE_DESCRIPTION":"Connect to the corporate network to view this extension UI directly in the Portal.","VPN_NEEDED_PAGE_RETRY_BUTTON":"Retry","CONFIGURATION_MISSING_PAGE_TITLE":"Configuration Missing","INFO_SETTINGS_DIALOG_LABEL":"About","INFO_SETTINGS_DIALOG_SUBLABEL":"Information about application","INFO_SETTINGS_DIALOG_TITLE":"About","LOCAL_DEVELOPMENT_SETTINGS_ACTIVE_INDICATOR":"Local Development Mode ON","LOCAL_DEVELOPMENT_SETTINGS_DIALOG_LABEL":"Development","LOCAL_DEVELOPMENT_SETTINGS_DIALOG_SUBLABEL":"Local extension development","LOCAL_DEVELOPMENT_SETTINGS_DIALOG_TITLE":"Local Development Mode","LOCAL_DEVELOPMENT_SETTINGS_ADD_BUTTON":"Add","LOCAL_DEVELOPMENT_SETTINGS_CLEAR_BUTTON":"Clear","LOCAL_DEVELOPMENT_SETTINGS_REMOVE_BUTTON":"Remove","LOCAL_DEVELOPMENT_SETTINGS_EXPLANATION":"\n The following settings enable you to run and test your locally developed\n application alongside this application. Once Development Mode is\n active and the correct URLs are provided, your locally\n running applications will be seamlessly integrated. For more information\n about local development, please follow the link:","LOCAL_DEVELOPMENT_SETTINGS_LINK":"Local Development Documentation","LOCAL_DEVELOPMENT_SETTINGS_IS_ACTIVE":"Is Development Mode Active?","LOCAL_DEVELOPMENT_SETTINGS_URLS_TITLE":"Configuration URLs","LOCAL_DEVELOPMENT_SETTINGS_URLS_LABEL":"Provide a URL where the content configuration file is served","LOCAL_DEVELOPMENT_SETTINGS_URLS_ERROR":"Please enter a valid URL","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_TITLE":"Service Provider Config","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_EXPLANATION":"\n The values will be added to every Luigi node's context in the serviceProviderConfig field.","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_KEY_INPUT_LABEL":"Key","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_KEY_INPUT_PLACEHOLDER":"Provide key","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_VALUE_INPUT_LABEL":"Value","LOCAL_DEVELOPMENT_SETTINGS_SERVICE_PROVIDER_VALUE_INPUT_PLACEHOLDER":"Provide value","FEATURE_TOGGLE_SETTINGS_DIALOG_LABEL":"Feature Toggles","FEATURE_TOGGLE_SETTINGS_DIALOG_SUBLABEL":"Feature Toggles settings","FEATURE_TOGGLE_SETTINGS_DIALOG_TITLE":"Feature Toggles","FEATURE_TOGGLE_SETTINGS_EXPLANATION":"The following setting allows you to enable or disable features. For more information about feature toggles, please follow the link:","FEATURE_TOGGLE_SETTINGS_LINK":"Feature Toggles Documentation","FEATURE_TOGGLE_SETTINGS_ADD_BUTTON":"Add","FEATURE_TOGGLE_SETTINGS_CLEAR_BUTTON":"Clear","FEATURE_TOGGLE_SETTINGS_NAME_INPUT_LABEL":"Feature Toggle Name","FEATURE_TOGGLE_SETTINGS_TOOLTIP_QUERY_PARAM":"Feature toggle is enabled by query parameter","ERROR_NOT_FOUND_TITLE":"Page Not Found","ERROR_NOT_FOUND_SUBTITLE":"The page you are looking for does not exist.","ERROR_NOT_AUTHORIZED_TITLE":"Access Denied","ERROR_NOT_AUTHORIZED_SUBTITLE":"You do not have permission to access this page.","ERROR_UNEXPECTED_TITLE":"Unexpected Error","ERROR_UNEXPECTED_SUBTITLE":"An unexpected error occurred. Please try again later.","ERROR_GO_HOME_BUTTON":"Go Home","ERROR_DETAILS_LABEL":"Error details"}
@@ -8,8 +8,8 @@ import { ActivatedRoute, NavigationEnd, RouterOutlet, RouteReuseStrategy, UrlHan
8
8
  import { jwtDecode } from 'jwt-decode';
9
9
  import isEqual from 'lodash.isequal';
10
10
  import oAuth2 from '@luigi-project/plugin-auth-oauth2';
11
- import { filter as filter$1 } from 'rxjs/operators';
12
11
  import { search } from '@jmespath-community/jmespath';
12
+ import { filter as filter$1 } from 'rxjs/operators';
13
13
  import isMatch from 'lodash.ismatch';
14
14
  import { $localize } from '@angular/localize/init';
15
15
 
@@ -1822,6 +1822,179 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
1822
1822
  args: [{ providedIn: 'root' }]
1823
1823
  }] });
1824
1824
 
1825
+ class CustomReuseStrategy {
1826
+ shouldDetach(route) {
1827
+ // Optionally, you can customize which routes should be detached (stored)
1828
+ return false; // Not detaching any routes for now
1829
+ }
1830
+ store(route, handle) {
1831
+ // Optional: Store the detached route here if needed
1832
+ }
1833
+ shouldAttach(route) {
1834
+ // Optional: Specify which routes to reattach
1835
+ return false; // Not attaching any routes for now
1836
+ }
1837
+ retrieve(route) {
1838
+ // Optional: Retrieve the stored route if needed
1839
+ return null; // Returning null means no route is retrieved
1840
+ }
1841
+ shouldReuseRoute(future, curr) {
1842
+ return (future.routeConfig === curr.routeConfig ||
1843
+ future.routeConfig?.component === curr.routeConfig?.component);
1844
+ }
1845
+ }
1846
+
1847
+ const BACKTICK_LITERAL_REGEX = /`((?:[^`\\]|\\.)*)`/g;
1848
+ const warnedExpressions = new Set();
1849
+ function isValidJSON(str) {
1850
+ if (str === '')
1851
+ return false;
1852
+ try {
1853
+ JSON.parse(str);
1854
+ return true;
1855
+ }
1856
+ catch {
1857
+ return false;
1858
+ }
1859
+ }
1860
+ function transformLegacyBacktickLiterals(expression) {
1861
+ if (!expression.includes('`')) {
1862
+ return expression;
1863
+ }
1864
+ let transformed = false;
1865
+ const result = expression.replace(BACKTICK_LITERAL_REGEX, (match, content) => {
1866
+ if (isValidJSON(content)) {
1867
+ return match;
1868
+ }
1869
+ transformed = true;
1870
+ return '`' + JSON.stringify(content) + '`';
1871
+ });
1872
+ if (transformed && !warnedExpressions.has(expression)) {
1873
+ warnedExpressions.add(expression);
1874
+ console.warn(`[JMESPath Migration] Legacy backtick literal detected and auto-converted.\n` +
1875
+ ` Original: ${expression}\n` +
1876
+ ` Transformed: ${result}\n` +
1877
+ ` Please update your expression to use proper JSON literals (e.g., \`"value"\` instead of \`value\`).`);
1878
+ }
1879
+ return result;
1880
+ }
1881
+ function matchesJMESPath(context, jmesPathExpression) {
1882
+ if (!jmesPathExpression) {
1883
+ return true;
1884
+ }
1885
+ try {
1886
+ const normalizedExpression = transformLegacyBacktickLiterals(jmesPathExpression);
1887
+ return search(context, normalizedExpression) === true;
1888
+ }
1889
+ catch (e) {
1890
+ logJMESException(context, jmesPathExpression, e);
1891
+ return false;
1892
+ }
1893
+ }
1894
+ function logJMESException(context, jmesPathExpression, error) {
1895
+ console.warn('Error while evaluating JMESPath expression.', 'Please check your visibleForContext or configurationMissing key in your Configuration.', '\n', '\n', 'Context:', '\n', context, '\n', '\n', 'JMESPath expression:', '\n', jmesPathExpression, '\n', '\n', 'Exception: ', '\n', error);
1896
+ }
1897
+
1898
+ function potentialVPNResourceLoadable(url) {
1899
+ if (!url) {
1900
+ return Promise.resolve(false);
1901
+ }
1902
+ return new Promise((resolve) => {
1903
+ fetch(url, {
1904
+ method: 'HEAD',
1905
+ mode: 'no-cors',
1906
+ })
1907
+ .then(() => {
1908
+ resolve(true);
1909
+ })
1910
+ .catch(() => {
1911
+ resolve(false);
1912
+ });
1913
+ });
1914
+ }
1915
+
1916
+ class PreserveQueryParamsUrlHandlingStrategy {
1917
+ shouldProcessUrl(url) {
1918
+ return true;
1919
+ }
1920
+ extract(url) {
1921
+ return url;
1922
+ }
1923
+ merge(newUrlPart, wholeUrl) {
1924
+ const routerHasNoQueryParams = !newUrlPart.queryParams ||
1925
+ Object.keys(newUrlPart.queryParams).length === 0;
1926
+ const liveParams = Object.fromEntries(new URLSearchParams(location.search));
1927
+ if (routerHasNoQueryParams && Object.keys(liveParams).length > 0) {
1928
+ newUrlPart.queryParams = liveParams;
1929
+ }
1930
+ return newUrlPart;
1931
+ }
1932
+ }
1933
+
1934
+ class VPNService {
1935
+ constructor() {
1936
+ this.envConfigService = inject(EnvConfigService);
1937
+ this.i18nService = inject(I18nService);
1938
+ this.inVPN = false;
1939
+ this.ready = this.init();
1940
+ }
1941
+ whenReady() {
1942
+ return this.ready;
1943
+ }
1944
+ setVPN(inVPN) {
1945
+ this.inVPN = inVPN;
1946
+ }
1947
+ applyNetworkVisibility(node) {
1948
+ if (node.networkVisibility !== NetworkVisibility.INTERNAL) {
1949
+ return node;
1950
+ }
1951
+ return this.inVPN ? node : this.convertToNoVPNHandlingNode(node);
1952
+ }
1953
+ async init() {
1954
+ try {
1955
+ const url = (await this.envConfigService.getEnvConfig()).vpnCheckUrl;
1956
+ if (!url) {
1957
+ this.inVPN = true;
1958
+ return;
1959
+ }
1960
+ this.inVPN = await potentialVPNResourceLoadable(url);
1961
+ }
1962
+ catch {
1963
+ this.inVPN = true;
1964
+ }
1965
+ }
1966
+ convertToNoVPNHandlingNode(originalNode) {
1967
+ const fieldOverwrites = {
1968
+ viewUrl: '/assets/openmfp-portal-ui-wc.js#no-vpn',
1969
+ webcomponent: {
1970
+ selfRegistered: true,
1971
+ type: 'module',
1972
+ },
1973
+ context: {
1974
+ translationTable: this.i18nService.translationTable,
1975
+ },
1976
+ networkVisibility: undefined,
1977
+ visibleForPlugin: undefined,
1978
+ children: [],
1979
+ };
1980
+ if (!originalNode.statusBadge) {
1981
+ fieldOverwrites.statusBadge = {
1982
+ label: 'VPN',
1983
+ type: 'informative',
1984
+ };
1985
+ }
1986
+ return Object.assign({}, originalNode, fieldOverwrites);
1987
+ }
1988
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: VPNService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1989
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: VPNService, providedIn: 'root' }); }
1990
+ }
1991
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: VPNService, decorators: [{
1992
+ type: Injectable,
1993
+ args: [{
1994
+ providedIn: 'root',
1995
+ }]
1996
+ }] });
1997
+
1825
1998
  class RoutingConfigServiceImpl {
1826
1999
  constructor() {
1827
2000
  this.customRoutingConfigService = inject(LUIGI_ROUTING_CONFIG_SERVICE_INJECTION_TOKEN, { optional: true });
@@ -2173,57 +2346,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
2173
2346
  }]
2174
2347
  }], ctorParameters: () => [] });
2175
2348
 
2176
- const BACKTICK_LITERAL_REGEX = /`((?:[^`\\]|\\.)*)`/g;
2177
- const warnedExpressions = new Set();
2178
- function isValidJSON(str) {
2179
- if (str === '')
2180
- return false;
2181
- try {
2182
- JSON.parse(str);
2183
- return true;
2184
- }
2185
- catch {
2186
- return false;
2187
- }
2188
- }
2189
- function transformLegacyBacktickLiterals(expression) {
2190
- if (!expression.includes('`')) {
2191
- return expression;
2192
- }
2193
- let transformed = false;
2194
- const result = expression.replace(BACKTICK_LITERAL_REGEX, (match, content) => {
2195
- if (isValidJSON(content)) {
2196
- return match;
2197
- }
2198
- transformed = true;
2199
- return '`' + JSON.stringify(content) + '`';
2200
- });
2201
- if (transformed && !warnedExpressions.has(expression)) {
2202
- warnedExpressions.add(expression);
2203
- console.warn(`[JMESPath Migration] Legacy backtick literal detected and auto-converted.\n` +
2204
- ` Original: ${expression}\n` +
2205
- ` Transformed: ${result}\n` +
2206
- ` Please update your expression to use proper JSON literals (e.g., \`"value"\` instead of \`value\`).`);
2207
- }
2208
- return result;
2209
- }
2210
- function matchesJMESPath(context, jmesPathExpression) {
2211
- if (!jmesPathExpression) {
2212
- return true;
2213
- }
2214
- try {
2215
- const normalizedExpression = transformLegacyBacktickLiterals(jmesPathExpression);
2216
- return search(context, normalizedExpression) === true;
2217
- }
2218
- catch (e) {
2219
- logJMESException(context, jmesPathExpression, e);
2220
- return false;
2221
- }
2222
- }
2223
- function logJMESException(context, jmesPathExpression, error) {
2224
- console.warn('Error while evaluating JMESPath expression.', 'Please check your visibleForContext or configurationMissing key in your Configuration.', '\n', '\n', 'Context:', '\n', context, '\n', '\n', 'JMESPath expression:', '\n', jmesPathExpression, '\n', '\n', 'Exception: ', '\n', error);
2225
- }
2226
-
2227
2349
  const visibleForContext = (ctx, node) => {
2228
2350
  // visibleForEntityContext is deprecated
2229
2351
  if (!isMatch(ctx?.entityContext, node.visibleForEntityContext ?? {})) {
@@ -2381,6 +2503,7 @@ class ChildrenNodesService {
2381
2503
  this.configService = inject(ConfigService);
2382
2504
  this.nodeUtilsService = inject(NodeUtilsService);
2383
2505
  this.nodeSortingService = inject(NodeSortingService);
2506
+ this.vpnService = inject(VPNService);
2384
2507
  this.customNodeProcessingService = inject(LUIGI_CUSTOM_NODE_PROCESSING_SERVICE_INJECTION_TOKEN, { optional: true });
2385
2508
  }
2386
2509
  async processChildrenForEntity(entityNode, childrenNodes, ctx) {
@@ -2403,8 +2526,10 @@ class ChildrenNodesService {
2403
2526
  child.onNodeActivation =
2404
2527
  this.nodeUtilsService.retrieveGlobalHelpContext();
2405
2528
  });
2529
+ await this.vpnService.whenReady();
2406
2530
  const nodes = await Promise.all(childrenNodes
2407
2531
  .filter((child) => visibleForContext(child.context, child))
2532
+ .map((child) => this.vpnService.applyNetworkVisibility(child))
2408
2533
  .map((child) => this.customNodeProcessingService?.processNode(child.context, child) || child));
2409
2534
  return this.nodeSortingService.sortNodes(nodes);
2410
2535
  }
@@ -2424,6 +2549,7 @@ class NodesProcessingService {
2424
2549
  this.localConfigurationService = inject(LocalConfigurationServiceImpl);
2425
2550
  this.nodeSortingService = inject(NodeSortingService);
2426
2551
  this.childrenNodesService = inject(ChildrenNodesService);
2552
+ this.vpnService = inject(VPNService);
2427
2553
  this.customNodeProcessingService = inject(LUIGI_CUSTOM_NODE_PROCESSING_SERVICE_INJECTION_TOKEN, { optional: true });
2428
2554
  this.customGlobalNodesService = inject(LUIGI_NODES_CUSTOM_GLOBAL_SERVICE_INJECTION_TOKEN, { optional: true });
2429
2555
  }
@@ -2438,8 +2564,10 @@ class NodesProcessingService {
2438
2564
  node.globalNav = this.isGlobalNavNode(node);
2439
2565
  this.applyEntityChildrenRecursively(node, childrenByEntity, '');
2440
2566
  });
2441
- globalNodes.sort(this.nodeSortingService.nodeComparison);
2442
- return globalNodes;
2567
+ await this.vpnService.whenReady();
2568
+ const processedGlobalNodes = globalNodes.map((node) => this.vpnService.applyNetworkVisibility(node));
2569
+ processedGlobalNodes.sort(this.nodeSortingService.nodeComparison);
2570
+ return processedGlobalNodes;
2443
2571
  }
2444
2572
  isGlobalNavNode(node) {
2445
2573
  return !node.hideFromNav && node.entityType === EntityType.GLOBAL;
@@ -2457,10 +2585,11 @@ class NodesProcessingService {
2457
2585
  directChildren.forEach((child) => {
2458
2586
  this.applyEntityChildrenRecursively(child, childrenByEntity, parentEntityPath);
2459
2587
  });
2460
- node.children = (ctx) => Promise.all(directChildren
2588
+ node.children = (ctx) => this.vpnService.whenReady().then(() => Promise.all(directChildren
2461
2589
  .filter((child) => visibleForContext(ctx, child))
2590
+ .map((child) => this.vpnService.applyNetworkVisibility(child))
2462
2591
  .map((child) => this.customNodeProcessingService?.processNode(ctx, child) ||
2463
- child));
2592
+ child)));
2464
2593
  }
2465
2594
  if (node.virtualTree) {
2466
2595
  node.children = undefined;
@@ -2799,46 +2928,6 @@ const portalRouts = [
2799
2928
  { path: '**', component: LuigiComponent },
2800
2929
  ];
2801
2930
 
2802
- class CustomReuseStrategy {
2803
- shouldDetach(route) {
2804
- // Optionally, you can customize which routes should be detached (stored)
2805
- return false; // Not detaching any routes for now
2806
- }
2807
- store(route, handle) {
2808
- // Optional: Store the detached route here if needed
2809
- }
2810
- shouldAttach(route) {
2811
- // Optional: Specify which routes to reattach
2812
- return false; // Not attaching any routes for now
2813
- }
2814
- retrieve(route) {
2815
- // Optional: Retrieve the stored route if needed
2816
- return null; // Returning null means no route is retrieved
2817
- }
2818
- shouldReuseRoute(future, curr) {
2819
- return (future.routeConfig === curr.routeConfig ||
2820
- future.routeConfig?.component === curr.routeConfig?.component);
2821
- }
2822
- }
2823
-
2824
- class PreserveQueryParamsUrlHandlingStrategy {
2825
- shouldProcessUrl(url) {
2826
- return true;
2827
- }
2828
- extract(url) {
2829
- return url;
2830
- }
2831
- merge(newUrlPart, wholeUrl) {
2832
- const routerHasNoQueryParams = !newUrlPart.queryParams ||
2833
- Object.keys(newUrlPart.queryParams).length === 0;
2834
- const liveParams = Object.fromEntries(new URLSearchParams(location.search));
2835
- if (routerHasNoQueryParams && Object.keys(liveParams).length > 0) {
2836
- newUrlPart.queryParams = liveParams;
2837
- }
2838
- return newUrlPart;
2839
- }
2840
- }
2841
-
2842
2931
  function providePortal(options = {}) {
2843
2932
  const providers = [
2844
2933
  provideHttpClient(),
@@ -2965,5 +3054,5 @@ const addOptionalProviders = (options) => {
2965
3054
  * Generated bundle index. Do not edit.
2966
3055
  */
2967
3056
 
2968
- export { AppSwitcherConfigServiceImpl, AuthConfigService, AuthEvent, AuthService, ConfigService, CustomMessageListenersService, CustomReuseStrategy, DefaultNavigationRedirectStrategy, DefaultUserProfileConfigService, ERROR_COMPONENT_CONFIG, EntityType, EnvConfigService, ErrorScreenComponent, GlobalContextConfigService, HEADER_BAR_CONFIG_SERVICE_INJECTION_TOKEN, HeaderBarService, I18nService, IframeService, LOCAL_CONFIGURATION_SERVICE_INJECTION_TOKEN, LUIGI_APP_SWITCHER_CONFIG_SERVICE_INJECTION_TOKEN, LUIGI_AUTH_EVENTS_CALLBACKS_SERVICE_INJECTION_TOKEN, LUIGI_BREADCRUMB_CONFIG_SERVICE_INJECTION_TOKEN, LUIGI_CUSTOM_MESSAGE_LISTENERS_INJECTION_TOKEN, LUIGI_CUSTOM_NODE_CONTEXT_PROCESSING_SERVICE_INJECTION_TOKEN, LUIGI_CUSTOM_NODE_PROCESSING_SERVICE_INJECTION_TOKEN, LUIGI_EXTENDED_GLOBAL_CONTEXT_CONFIG_SERVICE_INJECTION_TOKEN, LUIGI_GLOBAL_SEARCH_CONFIG_SERVICE_INJECTION_TOKEN, LUIGI_NODES_CUSTOM_GLOBAL_SERVICE_INJECTION_TOKEN, LUIGI_NODE_CHANGE_HOOK_SERVICE_INJECTION_TOKEN, LUIGI_ROUTING_CONFIG_SERVICE_INJECTION_TOKEN, LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN, LUIGI_USER_PROFILE_CONFIG_SERVICE_INJECTION_TOKEN, LocalConfigurationServiceImpl, LocalNodesService, LocalStorageKeys, LoginEventService, LoginEventType, LuigiCoreService, LuigiNodesService, NAVIGATION_REDIRECT_STRATEGY_INJECTION_TOKEN, NavHeaderService, NetworkVisibility, NodeContextProcessingServiceImpl, NodeUtilsService, PortalComponent, PreserveQueryParamsUrlHandlingStrategy, RequestHeadersService, RoutingConfigServiceImpl, SessionRefreshService, StaticSettingsConfigServiceImpl, THEMING_SERVICE, UserSettingsConfigService, featureToggleLocalStorage, localDevelopmentSettingsLocalStorage, matchesJMESPath, providePortal, transformLegacyBacktickLiterals, userSettingsLocalStorage };
3057
+ export { AppSwitcherConfigServiceImpl, AuthConfigService, AuthEvent, AuthService, ConfigService, CustomMessageListenersService, CustomReuseStrategy, DefaultNavigationRedirectStrategy, DefaultUserProfileConfigService, ERROR_COMPONENT_CONFIG, EntityType, EnvConfigService, ErrorScreenComponent, GlobalContextConfigService, HEADER_BAR_CONFIG_SERVICE_INJECTION_TOKEN, HeaderBarService, I18nService, IframeService, LOCAL_CONFIGURATION_SERVICE_INJECTION_TOKEN, LUIGI_APP_SWITCHER_CONFIG_SERVICE_INJECTION_TOKEN, LUIGI_AUTH_EVENTS_CALLBACKS_SERVICE_INJECTION_TOKEN, LUIGI_BREADCRUMB_CONFIG_SERVICE_INJECTION_TOKEN, LUIGI_CUSTOM_MESSAGE_LISTENERS_INJECTION_TOKEN, LUIGI_CUSTOM_NODE_CONTEXT_PROCESSING_SERVICE_INJECTION_TOKEN, LUIGI_CUSTOM_NODE_PROCESSING_SERVICE_INJECTION_TOKEN, LUIGI_EXTENDED_GLOBAL_CONTEXT_CONFIG_SERVICE_INJECTION_TOKEN, LUIGI_GLOBAL_SEARCH_CONFIG_SERVICE_INJECTION_TOKEN, LUIGI_NODES_CUSTOM_GLOBAL_SERVICE_INJECTION_TOKEN, LUIGI_NODE_CHANGE_HOOK_SERVICE_INJECTION_TOKEN, LUIGI_ROUTING_CONFIG_SERVICE_INJECTION_TOKEN, LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN, LUIGI_USER_PROFILE_CONFIG_SERVICE_INJECTION_TOKEN, LocalConfigurationServiceImpl, LocalNodesService, LocalStorageKeys, LoginEventService, LoginEventType, LuigiCoreService, LuigiNodesService, NAVIGATION_REDIRECT_STRATEGY_INJECTION_TOKEN, NavHeaderService, NetworkVisibility, NodeContextProcessingServiceImpl, NodeUtilsService, PortalComponent, PreserveQueryParamsUrlHandlingStrategy, RequestHeadersService, RoutingConfigServiceImpl, SessionRefreshService, StaticSettingsConfigServiceImpl, THEMING_SERVICE, UserSettingsConfigService, VPNService, featureToggleLocalStorage, localDevelopmentSettingsLocalStorage, matchesJMESPath, potentialVPNResourceLoadable, providePortal, transformLegacyBacktickLiterals, userSettingsLocalStorage };
2969
3058
  //# sourceMappingURL=openmfp-portal-ui-lib.mjs.map