Files
jcloud_frontend/assets/scripts/tools/main.js
T
jakob.scheid 15ce39693a 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
2025-12-17 16:13:45 +01:00

320 lines
11 KiB
JavaScript

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 };