new file: a.out
new file: assets/conversatorai/fonts/SF-Pro-Display-Semibold.otf new file: assets/conversatorai/fonts/SF-Pro-Text-Regular.otf new file: assets/conversatorai/fonts/SF-Pro-Text-Regular.txt new file: assets/conversatorai/fonts/SF-Pro-Text-Regular_richtig.txt new file: assets/conversatorai/index.html new file: assets/conversatorai/scripts/all.js new file: assets/conversatorai/scripts/voice.js new file: assets/conversatorai/styles/all.css new file: assets/conversatorai/styles/mobile.css new file: assets/examples/rating/index.html new file: assets/fonts/SF-Pro-Display-Semibold.otf new file: assets/fonts/SF-Pro-Text-Regular.otf new file: assets/fonts/SF-Pro-Text-Semibold.otf new file: assets/i18n/de/main.js new file: assets/i18n/de/nav/globalfooter.js new file: assets/i18n/de/nav/menus/moreoptions.js new file: assets/i18n/de/pages/contact.js new file: assets/i18n/de/pages/files.js new file: assets/i18n/de/pages/home.js new file: assets/i18n/de/pages/index.js new file: assets/i18n/de/pages/login.js new file: assets/i18n/de/pages/signup.js new file: assets/i18n/de/popups/set-client-language.js new file: assets/i18n/de/private-application-banner.js new file: assets/i18n/de/search.js new file: assets/i18n/en/nav/globalfooter.js new file: assets/i18n/en/nav/menus/moreoptions.js new file: assets/i18n/en/pages/contact.js new file: assets/i18n/en/pages/files.js new file: assets/i18n/en/pages/home.js new file: assets/i18n/en/pages/i18n.js new file: assets/i18n/en/pages/index.js new file: assets/i18n/en/pages/login.js new file: assets/i18n/en/pages/signup.js new file: assets/i18n/en/popups/set-client-language.js new file: assets/i18n/en/private-application-banner.js new file: assets/i18n/en/search.js new file: assets/i18n/it/nav/globalfooter.js new file: assets/i18n/it/nav/menus/moreoptions.js new file: assets/i18n/it/pages/contact.js new file: assets/i18n/it/pages/files.js new file: assets/i18n/it/pages/home.js new file: assets/i18n/it/pages/index.js new file: assets/i18n/it/pages/login.js new file: assets/i18n/it/pages/signup.js new file: assets/i18n/it/popups/set-client-language.js new file: assets/i18n/it/private-application-banner.js new file: assets/i18n/it/search.js new file: assets/i18n/ui-labels/de/main.js new file: assets/i18n/ui-labels/en/main.js new file: assets/i18n/ui-labels/it/main.js new file: assets/img/apps/symbols/logo-150x150.png new file: assets/img/apps/symbols/logo-150x150.svg new file: assets/img/background.jfif new file: assets/img/check/main.svg new file: assets/img/favicon.ico new file: assets/img/favicon.png new file: assets/img/jcloud-ui-icons/angle-down.svg new file: assets/img/jcloud-ui-icons/angle-left.svg new file: assets/img/jcloud-ui-icons/angle-right.svg new file: assets/img/jcloud-ui-icons/angle-up.svg new file: assets/img/jcloud-ui-icons/autocomplete-insert.svg new file: assets/img/jcloud-ui-icons/folder-plus.svg new file: assets/img/jcloud-ui-icons/refresh.svg new file: assets/img/jcloud-ui-icons/search.svg new file: assets/img/jcloud-ui-icons/selected.svg new file: assets/img/jcloud-ui-icons/upload.svg new file: assets/img/logo/logo-30x45.svg new file: assets/img/logo/logo.svg new file: assets/img/nav/go/main.svg new file: assets/img/nav/moreoptions/more-options.svg new file: assets/img/qc/brightness/high.svg new file: assets/img/qc/brightness/low.svg new file: assets/img/qc/notifications/bell.svg new file: assets/img/qc/notifications/dnd.svg new file: assets/img/search.svg new file: assets/legal/de/termsofuse.markdown new file: assets/manifest.webmanifest new file: assets/scripts/change-language/main.js new file: assets/scripts/components/files-item.component.js new file: assets/scripts/constants/main.js new file: assets/scripts/constants/main.min.js new file: assets/scripts/constants/ui-labels/de/main.js new file: assets/scripts/constants/ui-labels/de/main.min.js new file: assets/scripts/constants/ui-labels/en/main.js new file: assets/scripts/constants/ui-labels/en/main.min.js new file: assets/scripts/constants/ui-labels/it/main.js new file: assets/scripts/constants/ui-labels/it/main.min.js new file: assets/scripts/constants/ui-labels/main.js new file: assets/scripts/constants/ui-labels/main.min.js new file: assets/scripts/contact/main.js new file: assets/scripts/contact/main.min.js new file: assets/scripts/elements/dropdown/main.js new file: assets/scripts/elements/dropdown/main.min.js new file: assets/scripts/files/main.js new file: assets/scripts/files/main.min.js new file: assets/scripts/home/main.js new file: assets/scripts/i18n/main.js new file: assets/scripts/i18n/main.min.js new file: assets/scripts/init/init.js new file: assets/scripts/init/init.min.js new file: assets/scripts/main/main.js new file: assets/scripts/main/main.min.js new file: assets/scripts/nav/menus/moreoptions/main.js new file: assets/scripts/nav/menus/moreoptions/main.min.js new file: assets/scripts/popups/change-language/main.js new file: assets/scripts/popups/change-language/main.min.js new file: assets/scripts/popups/popups.js new file: assets/scripts/popups/popups.min.js new file: assets/scripts/scroll/main.js new file: assets/scripts/scroll/main.min.js new file: assets/scripts/search/main.js new file: assets/scripts/tools/main.js new file: assets/scripts/tools/main.min.js new file: assets/scripts/users/main.js new file: assets/scripts/users/main.min.js new file: assets/sitemap.xml new file: assets/styles/elements/apportionment/main.css new file: assets/styles/elements/banners/main.css new file: assets/styles/elements/buttons/main.css new file: assets/styles/elements/checkbox/main.css new file: assets/styles/elements/dropdown/main.css new file: assets/styles/elements/flexbox/main.css new file: assets/styles/elements/inputs/main.css new file: assets/styles/elements/jcloud-ui/dialogs/main.css new file: assets/styles/elements/jcloud-ui/dialogs/mobile/main.css new file: assets/styles/elements/jcloud-ui/dialogs/prompt.css new file: assets/styles/elements/jcloud-ui/dialogs/tablet/main.css new file: assets/styles/elements/jcloud-ui/overlays.css new file: assets/styles/elements/jcloud-ui/textures/glass/main.css new file: assets/styles/elements/lists/actions-list/main.css new file: assets/styles/elements/lists/items-list/main.css new file: assets/styles/elements/lists/items-list/mobile.css new file: assets/styles/elements/main-elements/dark.css new file: assets/styles/elements/main-elements/desktop/main.css new file: assets/styles/elements/main-elements/desktop/main.min.css new file: assets/styles/elements/main-elements/main.css new file: assets/styles/elements/main-elements/mobile/main.css new file: assets/styles/elements/main-elements/tablet/main.css new file: assets/styles/elements/main-elements/tablet_and_desktop/main.css new file: assets/styles/elements/main-elements/tablet_and_desktop/main.min.css new file: assets/styles/elements/page-indicator/main.css new file: assets/styles/font-faces/main.css new file: assets/styles/loaders/loading/main.css new file: assets/styles/loaders/main.css new file: assets/styles/modules/contact/main.css new file: assets/styles/modules/contact/mobile.css new file: assets/styles/modules/files/main.css new file: assets/styles/modules/files/mobile.css new file: assets/styles/modules/home/main.css new file: assets/styles/modules/home/mobile.css new file: assets/styles/modules/home/tablet_and_desktop.css new file: assets/styles/modules/login/main.css new file: assets/styles/modules/search/main.css new file: assets/styles/modules/startpage/main.css new file: assets/styles/modules/startpage/mobile.css new file: assets/styles/modules/startpage/tablet_and_desktop.css new file: assets/styles/nav/globalfooter/main.css new file: assets/styles/nav/globalnav/main.css new file: assets/styles/nav/menus/moreoptions/main.css new file: assets/styles/var/main.css new file: bak new file: index.html new file: index2.html new file: jokisches-reich/Aemter.pdf new file: jokisches-reich/assets/fonts/Noto-Sans/NotoSans-Italic-VariableFont_wdth,wght.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/NotoSans-VariableFont_wdth,wght.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/OFL.txt new file: jokisches-reich/assets/fonts/Noto-Sans/README.txt new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-Black.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-BlackItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-Bold.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-BoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-ExtraBold.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-ExtraBoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-ExtraLight.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-ExtraLightItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-Italic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-Light.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-LightItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-Medium.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-MediumItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-Regular.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-SemiBold.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-SemiBoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-Thin.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans-ThinItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-Black.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-BlackItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-Bold.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-BoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-ExtraBold.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-ExtraBoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-ExtraLight.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-ExtraLightItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-Italic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-Light.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-LightItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-Medium.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-MediumItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-Regular.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-SemiBold.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-SemiBoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-Thin.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_Condensed-ThinItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-Black.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-BlackItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-Bold.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-BoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-ExtraBold.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-ExtraBoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-ExtraLight.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-ExtraLightItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-Italic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-Light.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-LightItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-Medium.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-MediumItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-Regular.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-SemiBold.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-SemiBoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-Thin.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_ExtraCondensed-ThinItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-Black.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-BlackItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-Bold.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-BoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-ExtraBold.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-ExtraBoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-ExtraLight.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-ExtraLightItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-Italic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-Light.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-LightItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-Medium.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-MediumItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-Regular.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-SemiBold.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-SemiBoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-Thin.ttf new file: jokisches-reich/assets/fonts/Noto-Sans/static/NotoSans_SemiCondensed-ThinItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/NotoSerif-Italic-VariableFont_wdth,wght.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/NotoSerif-VariableFont_wdth,wght.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/OFL.txt new file: jokisches-reich/assets/fonts/Noto-Serif/README.txt new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-Black.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-BlackItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-Bold.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-BoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-ExtraBold.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-ExtraBoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-ExtraLight.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-ExtraLightItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-Italic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-Light.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-LightItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-Medium.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-MediumItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-Regular.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-SemiBold.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-SemiBoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-Thin.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif-ThinItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-Black.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-BlackItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-Bold.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-BoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-ExtraBold.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-ExtraBoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-ExtraLight.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-ExtraLightItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-Italic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-Light.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-LightItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-Medium.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-MediumItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-Regular.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-SemiBold.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-SemiBoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-Thin.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_Condensed-ThinItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-Black.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-BlackItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-Bold.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-BoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-ExtraBold.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-ExtraBoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-ExtraLight.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-ExtraLightItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-Italic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-Light.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-LightItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-Medium.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-MediumItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-Regular.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-SemiBold.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-SemiBoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-Thin.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_ExtraCondensed-ThinItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-Black.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-BlackItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-Bold.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-BoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-ExtraBold.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-ExtraBoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-ExtraLight.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-ExtraLightItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-Italic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-Light.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-LightItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-Medium.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-MediumItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-Regular.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-SemiBold.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-SemiBoldItalic.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-Thin.ttf new file: jokisches-reich/assets/fonts/Noto-Serif/static/NotoSerif_SemiCondensed-ThinItalic.ttf new file: jokisches-reich/assets/fonts/noto-serif-v21-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-regular-eot.eot new file: jokisches-reich/assets/images/flag.jpg new file: jokisches-reich/assets/images/flag.png new file: jokisches-reich/assets/images/flag.svg new file: jokisches-reich/assets/manifest.webmanifest new file: jokisches-reich/assets/styles/main/main.css new file: jokisches-reich/geschichte/index.html new file: jokisches-reich/geschichte/informationen/index.html new file: jokisches-reich/gesetze/assets/styles/main/main.css new file: jokisches-reich/gesetze/index.html new file: jokisches-reich/gesetze/verfassung/index.html new file: jokisches-reich/index.html new file: jokisches-reich/internationales/assets/images/id-card-solid.jpg new file: jokisches-reich/internationales/assets/images/id-card-solid.svg new file: jokisches-reich/internationales/index.html new file: jokisches-reich/internationales/staatsbuergerschaft/index.html new file: jokisches-reich/presse/index.html new file: jokisches-reich/presse/kurzmeldungen/564878/index.html new file: jokisches-reich/presse/kurzmeldungen/753042/index.html new file: jokisches-reich/presse/kurzmeldungen/index.html new file: jokisches-reich/regierung/index.html new file: jokisches-reich/regierung/ministerien/finanzministerium/index.html new file: jokisches-reich/regierung/ministerien/index.html new file: jokisches-reich/regierung/ministerien/ministerium-fuer-aeussere-angelegenheiten/index.html new file: jokisches-reich/regierung/ministerien/ministerium-fuer-digitales/index.html new file: jokisches-reich/regierung/ministerien/ministerium-fuer-innere-angelegenheiten/index.html new file: jokisches-reich/regierung/ministerien/ministerium-fuer-wirtschaft/index.html new file: jokisches-reich/regierung/ministerien/verkehrsministerium/index.html new file: jokisches-reich/regierung/ministerien/verteidigungsministerium/index.html new file: jokisches-reich/sitemap/index.html new file: jokisches-reich/wirtschaft/assets/images/geldscheine-euro.jpg new file: jokisches-reich/wirtschaft/assets/images/gewinndiagramm-steigend.jpg new file: jokisches-reich/wirtschaft/assets/images/jok.png new file: jokisches-reich/wirtschaft/assets/images/jok.svg new file: jokisches-reich/wirtschaft/boerse/index.html new file: jokisches-reich/wirtschaft/index.html new file: jokisches-reich/wirtschaft/jok/index.html new file: legal/user-consent/de/index.html new file: legal/user-consent/en/index.html new file: legal/user-consent/it/index.html new file: seekra/index.html new file: seekra/sign-in-test/index.html new file: seekra/sign-in/index.html new file: seekra/static/aes/index.html new file: seekra/static/aes/main.js new file: seekra/static/img/favicon.ico new file: seekra/static/img/favicon.jpeg new file: seekra/static/img/favicon.png new file: seekra/static/img/favicon/Unbenannt.png new file: seekra/static/img/favicon/favicon.ico new file: seekra/static/img/favicon/favicon.png new file: seekra/static/img/favicon/favicon.svg new file: seekra/static/img/search/magnifying-glass.svg new file: seekra/static/img/user/main.svg new file: seekra/static/skr-clientlib/scripts/js/account/main.js new file: seekra/static/skr-clientlib/scripts/js/tools/main.js new file: seekra/static/skr-clientlib/styles/css/dark/var/main.css new file: seekra/static/skr-clientlib/styles/css/elements/inputs/main.css new file: seekra/static/skr-clientlib/styles/css/footer/globalfooter/main.css new file: seekra/static/skr-clientlib/styles/css/main/main.css new file: seekra/static/skr-clientlib/styles/css/nav/globalnav/navbar/main.css new file: seekra/static/skr-clientlib/styles/css/var/main.css
This commit is contained in:
@@ -0,0 +1,320 @@
|
||||
import { getUiLabels } from '../i18n/main.js';
|
||||
|
||||
const getCookie = function (name) {
|
||||
const cookies = document.cookie.split('; ');
|
||||
for (const cookie of cookies) {
|
||||
const [key, value] = cookie.split('=');
|
||||
if (key === name) return decodeURIComponent(value);
|
||||
};
|
||||
return null;
|
||||
};
|
||||
|
||||
const getFileExtension = function (filename) {
|
||||
const lastDot = filename.lastIndexOf('.');
|
||||
if (lastDot === -1 || lastDot === 0) {
|
||||
return '';
|
||||
};
|
||||
return filename.slice(lastDot + 1);
|
||||
};
|
||||
|
||||
const getFileName = function (path) {
|
||||
const dirs = path.split('/');
|
||||
if (path.endsWith('/')) {
|
||||
return dirs[dirs.length - 2];
|
||||
}
|
||||
return dirs[dirs.length - 1];
|
||||
};
|
||||
|
||||
const getDirName = function (path) {
|
||||
const dirs = path.split('/');
|
||||
if (path.endsWith('/')) {
|
||||
return dirs.slice(0, dirs.length - 2).join('/') + '/';
|
||||
}
|
||||
return dirs.slice(0, dirs.length - 1).join('/') + '/';
|
||||
};
|
||||
|
||||
const getHumanReadableFileSize = function (size, decimals = 1) {
|
||||
if (size >= 1e3 && size < 1e6) {
|
||||
return String(round(size / 1e3, decimals)) + ' KB';
|
||||
} else if (size >= 1e6 && size < 1e9) {
|
||||
return String(round(size / 1e6, decimals)) + ' MB';
|
||||
} else if (size >= 1e9 && size < 1e12) {
|
||||
return String(round(size / 1e9, decimals)) + ' GB';
|
||||
} else if (size >= 1e12) {
|
||||
return String(round(size / 1e9, decimals)) + ' TB';
|
||||
} else {
|
||||
return String(size) + ' B';
|
||||
};
|
||||
};
|
||||
|
||||
const round = function (n, decimals) {
|
||||
const factor = 10 ** decimals;
|
||||
return Math.round(n * factor) / factor;
|
||||
};
|
||||
|
||||
const validatePasswordSecurity = function (password) {
|
||||
let numberOfCaps = 0;
|
||||
let numberOfSmalls = 0;
|
||||
let numberOfNumbers = 0;
|
||||
let numberOfSpecials = 0;
|
||||
|
||||
for (const char of password) {
|
||||
if (char.match(/[a-zA-Z0-9]/)) { // Alphanumeric check
|
||||
if (char.match(/[a-zA-Z]/)) { // Alphabet check
|
||||
if (char === char.toUpperCase()) {
|
||||
numberOfCaps++;
|
||||
} else {
|
||||
numberOfSmalls++;
|
||||
};
|
||||
} else {
|
||||
numberOfNumbers++;
|
||||
};
|
||||
} else {
|
||||
numberOfSpecials++;
|
||||
};
|
||||
};
|
||||
|
||||
return (
|
||||
numberOfCaps > 0 &&
|
||||
numberOfSmalls > 0 &&
|
||||
numberOfNumbers > 0 &&
|
||||
numberOfSpecials > 0 &&
|
||||
password.length > 7
|
||||
);
|
||||
};
|
||||
|
||||
const countOccurrences = function (string, char) {
|
||||
if (!string) {
|
||||
return 0;
|
||||
} else {
|
||||
return string.split(char).length - 1;
|
||||
};
|
||||
};
|
||||
|
||||
const scrollToTop = function () {
|
||||
window.scrollTo({ top: 0, behavior: 'smooth' });
|
||||
};
|
||||
|
||||
const showDialog = function (dialog, closeCallbacks = [], clickOutsideClose = true) {
|
||||
dialog.showModal();
|
||||
setTimeout(() => {
|
||||
if (clickOutsideClose) {
|
||||
dialog.addEventListener('click', function (event) {
|
||||
if (event.target === dialog) {
|
||||
for (const callback of closeCallbacks) {
|
||||
callback();
|
||||
}
|
||||
dialog.close();
|
||||
};
|
||||
});
|
||||
}
|
||||
}, 500);
|
||||
};
|
||||
const closeDialog = function (dialog) {
|
||||
dialog.close();
|
||||
};
|
||||
|
||||
function waitForEvent(element, eventType) {
|
||||
return new Promise(resolve => {
|
||||
element.addEventListener(eventType, resolve, { once: true });
|
||||
});
|
||||
};
|
||||
|
||||
const startLoading = function () {
|
||||
document.querySelector('#loader').showModal();
|
||||
};
|
||||
|
||||
const stopLoading = function () {
|
||||
document.querySelector('#loader').close();
|
||||
};
|
||||
|
||||
const middleEllipsis = function (str, maxLength = 30) {
|
||||
if (str.length <= maxLength) return str;
|
||||
const keep = Math.floor((maxLength - 3) / 2);
|
||||
return str.slice(0, keep) + ' ... ' + str.slice(-keep);
|
||||
};
|
||||
|
||||
const escapeRegex = function (s) {
|
||||
return s.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
|
||||
};
|
||||
|
||||
const strip = function (str, char) {
|
||||
if (char === undefined) {
|
||||
return str.trim();
|
||||
};
|
||||
const pattern = new RegExp(`^[${escapeRegex(char)}]+|[${escapeRegex(char)}]+$`, 'g');
|
||||
return str.replace(pattern, '');
|
||||
};
|
||||
|
||||
const addQueryParam = function (url, key, value) {
|
||||
const urlObj = new URL(url, window.location.origin);
|
||||
urlObj.searchParams.set(key, value);
|
||||
return urlObj.toString();
|
||||
};
|
||||
|
||||
const removeQueryParam = function (url, key) {
|
||||
const urlObj = new URL(url, window.location.origin);
|
||||
urlObj.searchParams.delete(key);
|
||||
|
||||
const baseUrl = urlObj.origin + urlObj.pathname;
|
||||
const queryString = urlObj.searchParams.toString();
|
||||
return queryString ? `${baseUrl}?${queryString}` : baseUrl;
|
||||
};
|
||||
|
||||
const getTextWidth = function (text, cssClass = '', html = false) {
|
||||
const span = document.createElement('span');
|
||||
span.style.position = 'fixed';
|
||||
span.style.visibility = 'hidden';
|
||||
span.style.whiteSpace = 'nowrap';
|
||||
span.classList.add(cssClass)
|
||||
if (html) {
|
||||
span.innerHTML = text;
|
||||
} else {
|
||||
span.textContent = text;
|
||||
};
|
||||
document.body.appendChild(span);
|
||||
const width = span.getBoundingClientRect().width;
|
||||
document.body.removeChild(span);
|
||||
return width;
|
||||
}
|
||||
|
||||
const jCloudUIElements = {
|
||||
alert: async function (message, html = false) {
|
||||
showDialog(document.querySelector('#jcloud-ui-elements-alert'));
|
||||
document.querySelector('#jcloud-ui-elements-alert-close').blur();
|
||||
document.querySelector('#jcloud-ui-elements-alert-close').innerHTML = (await getUiLabels()).DIALOG_OPTIONS.ok;
|
||||
if (html) {
|
||||
document.querySelector('#jcloud-ui-elements-alert-message').innerHTML = message;
|
||||
} else {
|
||||
document.querySelector('#jcloud-ui-elements-alert-message').textContent = message;
|
||||
};
|
||||
document.querySelector('#jcloud-ui-elements-alert-close').addEventListener('click', function () {
|
||||
closeDialog(document.querySelector('#jcloud-ui-elements-alert'));
|
||||
});
|
||||
await waitForEvent(document.querySelector('#jcloud-ui-elements-alert'), 'close');
|
||||
},
|
||||
confirm: async function (message, yesno = true, html = false, buttonTrue, buttonFalse) {
|
||||
const yes = document.querySelector('#jcloud-ui-elements-confirm-yes');
|
||||
const no = document.querySelector('#jcloud-ui-elements-confirm-no');
|
||||
const messageElement = document.querySelector('#jcloud-ui-elements-confirm-message');
|
||||
const dialog = document.querySelector('#jcloud-ui-elements-confirm');
|
||||
showDialog(dialog, false);
|
||||
if (yesno) {
|
||||
yes.innerHTML = (await getUiLabels()).DIALOG_OPTIONS.yes;
|
||||
no.innerHTML = (await getUiLabels()).DIALOG_OPTIONS.no;
|
||||
} else {
|
||||
yes.innerHTML = (await getUiLabels()).DIALOG_OPTIONS.ok;
|
||||
no.innerHTML = (await getUiLabels()).DIALOG_OPTIONS.cancel;
|
||||
};
|
||||
if (buttonTrue) {
|
||||
yes.textContent = buttonTrue;
|
||||
};
|
||||
if (buttonFalse) {
|
||||
no.textContent = buttonFalse;
|
||||
};
|
||||
if (html) {
|
||||
messageElement.innerHTML = message;
|
||||
} else {
|
||||
messageElement.textContent = message;
|
||||
};
|
||||
yes.addEventListener('click', function () {
|
||||
dialog.dataset.result = 'true';
|
||||
closeDialog(dialog);
|
||||
});
|
||||
no.addEventListener('click', function () {
|
||||
dialog.dataset.result = 'false';
|
||||
closeDialog(dialog);
|
||||
});
|
||||
await waitForEvent(dialog, 'close');
|
||||
if (dialog.dataset.result === 'true') {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
};
|
||||
},
|
||||
prompt: async function (message, allowCancel = true, placeholder = '', value = '', type = 'text', select = false, html = false, closeCallbacks = [], error = '', errorHtml = false, inputCallbacks = [], closeAfterSubmit = true) {
|
||||
const ok = document.querySelector('#jcloud-ui-elements-prompt-ok');
|
||||
const cancel = document.querySelector('#jcloud-ui-elements-prompt-cancel');
|
||||
const messageElement = document.querySelector('#jcloud-ui-elements-prompt-message');
|
||||
const dialog = document.querySelector('#jcloud-ui-elements-prompt');
|
||||
const input = document.querySelector('#jcloud-ui-elements-prompt-input');
|
||||
const form = document.querySelector('#jcloud-ui-elements-prompt-form')
|
||||
if (errorHtml) {
|
||||
document.querySelector('#jcloud-ui-elements-prompt-error').innerHTML = error;
|
||||
} else {
|
||||
document.querySelector('#jcloud-ui-elements-prompt-error').textContent = error;
|
||||
};
|
||||
input.addEventListener('input', function () {
|
||||
for (let c of inputCallbacks) {
|
||||
c();
|
||||
};
|
||||
});
|
||||
dialog.dataset.isResult = 'false';
|
||||
showDialog(dialog, closeCallbacks, allowCancel);
|
||||
ok.innerHTML = (await getUiLabels()).DIALOG_OPTIONS.ok;
|
||||
cancel.innerHTML = (await getUiLabels()).DIALOG_OPTIONS.cancel;
|
||||
input.value = value;
|
||||
input.type = type;
|
||||
input.placeholder = placeholder
|
||||
if (select) {
|
||||
input.select();
|
||||
};
|
||||
if (allowCancel) {
|
||||
cancel.style.display = 'block';
|
||||
cancel.addEventListener('click', function () {
|
||||
dialog.dataset.isResult = 'false';
|
||||
closeDialog(dialog);
|
||||
}, { once: true });
|
||||
} else {
|
||||
cancel.style.display = 'none';
|
||||
};
|
||||
if (html) {
|
||||
messageElement.innerHTML = message;
|
||||
} else {
|
||||
messageElement.textContent = message;
|
||||
};
|
||||
form.addEventListener('submit', function (event) {
|
||||
event.preventDefault();
|
||||
});
|
||||
ok.addEventListener('click', function () {
|
||||
dialog.dataset.isResult = 'true';
|
||||
if (closeAfterSubmit) {
|
||||
closeDialog(dialog);
|
||||
};
|
||||
});
|
||||
await waitForEvent(form, 'submit');
|
||||
if (dialog.dataset.isResult === 'true') {
|
||||
return input.value;
|
||||
} else {
|
||||
return null;
|
||||
};
|
||||
},
|
||||
overlays: {
|
||||
showBlurryOverlay: function () {
|
||||
document.querySelector('#blurry-overlay').classList.remove('hidden');
|
||||
},
|
||||
hideBlurryOverlay: function () {
|
||||
document.querySelector('#blurry-overlay').classList.add('hidden');
|
||||
},
|
||||
showBlurryDarkOverlay: function () {
|
||||
document.querySelector('#blurry-dark-overlay').classList.remove('hidden');
|
||||
},
|
||||
hideBlurryDarkOverlay: function () {
|
||||
document.querySelector('#blurry-dark-overlay').classList.add('hidden');
|
||||
},
|
||||
showOverlay: function () {
|
||||
document.querySelector('#overlay').classList.remove('hidden');
|
||||
},
|
||||
hideOverlay: function () {
|
||||
document.querySelector('#overlay').classList.add('hidden');
|
||||
},
|
||||
showLightOverlay: function () {
|
||||
document.querySelector('#light-overlay').classList.remove('hidden');
|
||||
},
|
||||
hideLightOverlay: function () {
|
||||
document.querySelector('#light-overlay').classList.add('hidden');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export { getCookie, getFileExtension, getFileName, getDirName, getHumanReadableFileSize, round, validatePasswordSecurity, countOccurrences, scrollToTop, showDialog, closeDialog, waitForEvent, startLoading, stopLoading, middleEllipsis, escapeRegex, strip, addQueryParam, removeQueryParam, getTextWidth, jCloudUIElements };
|
||||
Vendored
+1
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user