Files
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

308 lines
12 KiB
JavaScript

'use strict';
import { addQueryParam, strip } from '../tools/main.js';
const fetchResults = async function (query) {
return [
{
'icon': `${strip(query, '/')}/favicon.ico`,
'name': query,
'url': query,
'title': query,
'description': query
},
{
'icon': 'https://jcloud-services.ddns.net/assets/img/favicon.png',
'name': 'jCloud',
'url': 'https://jcloud-services.ddns.net',
'title': 'jCloud',
'description': 'Der beste Ort für deine Fotos, Dateien, Notizen, Präsentationen und vieles mehr.'
},
{
'icon': 'https://jcloud-services.ddns.net/seekra/static/img/favicon/favicon.svg',
'name': 'Seekra',
'url': 'https://seekra.fwh.is/',
'title': 'Seekra',
'description': 'The (currently not working) search engine Seekra'
},
{
'icon': 'https://example.com/favicon.ico',
'name': 'Example',
'url': 'https://example.com/',
'title': 'Example',
'description': 'This domain is for use in documentation examples without needing permission. Avoid use in operations.'
},
];
}
const displayResults = async function (query) {
const searchContainer = document.querySelector('#search-container')
const resultsContainer = document.querySelector('#search-results-container');
searchContainer.classList.add('showing-results');
resultsContainer.innerHTML = '';
const results = await fetchResults(query);
for (let result of results) {
const container = document.createElement('div');
const header = document.createElement('a');
const description = document.createElement('div');
const headerFirstLine = document.createElement('div');
const title = document.createElement('div');
const iconWrapper = document.createElement('div');
const icon = document.createElement('img');
const headerText = document.createElement('div');
const siteName = document.createElement('div');
const url = document.createElement('div');
container.classList.add('search-result');
container.classList.add('glass');
container.classList.add('blue-glass');
header.classList.add('search-result-header');
header.href = result.url;
description.classList.add('search-result-description');
description.textContent = result.description;
headerFirstLine.classList.add('search-result-header-first-line');
title.classList.add('search-result-title');
title.textContent = result.title;
iconWrapper.classList.add('search-result-icon');
icon.src = result.icon;
icon.alt = '';
siteName.textContent = result.name;
url.classList.add('search-result-url');
url.textContent = result.url;
iconWrapper.appendChild(icon);
headerText.appendChild(siteName);
headerText.appendChild(url);
headerFirstLine.append(iconWrapper);
headerFirstLine.append(headerText);
header.appendChild(headerFirstLine);
header.appendChild(title);
container.appendChild(header);
container.appendChild(description);
resultsContainer.appendChild(container)
}
};
const refreshSuggestions = function (query) {
// TEST
const result = Array();
for (let r = 0; r < 10; r++) {
result.push('Test ' + Math.random());
};
return result;
};
const displaySuggestions = function (suggestions) {
const suggestionsContainer = document.querySelector('#search-suggestions-list');
const searchInput = document.querySelector('#search-input');
suggestionsContainer.innerHTML = '';
for (let suggestion of suggestions) {
const container = document.createElement('div');
const element = document.createElement('div');
const acceptButton = document.createElement('button');
const acceptIcon = document.createElement('img');
const content = document.createElement('div');
container.classList.add('suggestion-container');
element.classList.add('suggestion');
acceptButton.classList.add('accept-suggestion');
acceptButton.classList.add('glass');
acceptButton.classList.add('dark-glass');
acceptButton.classList.add('blue-glass');
acceptIcon.src = '/assets/img/jcloud-ui-icons/autocomplete-insert.svg';
content.classList.add('content');
// BEGIN NOT USED
container.dataset.suggestionId = crypto.randomUUID();
// END NOT USED
acceptButton.dataset.acceptButton = '';
acceptIcon.dataset.acceptButton = '';
content.textContent = suggestion;
suggestionsContainer.onclick = function (e) {
if (e.target.dataset.acceptButton === undefined) {
searchInput.value = suggestion;
displayResults(searchInput.value);
};
};
acceptButton.onclick = function () {
displaySuggestions(refreshSuggestions(searchInput.value));
searchInput.value = suggestion;
};
acceptButton.appendChild(acceptIcon);
element.appendChild(acceptButton);
element.appendChild(content);
container.appendChild(element);
suggestionsContainer.appendChild(container);
};
};
const showSearch = function () {
displaySuggestions(refreshSuggestions());
const searchTriggerButton = document.querySelector('#search-trigger');
const searchContainer = document.querySelector('#search-container');
const searchSuggestionsContainerInner = document.querySelector('#search-container > div');
const searchSuggestions = document.querySelector('#search-suggestions');
const searchInput = document.querySelector('#search-input');
const searchRecents = document.querySelector('#search-recents');
const left = searchSuggestions;
const right = searchRecents;
searchTriggerButton.classList.add('expanded');
searchTriggerButton.dataset.expanded = '';
searchContainer.classList.add('show');
searchContainer.classList.add('visible');
searchInput.oninput = function () {
displaySuggestions(refreshSuggestions(searchInput.value));
};
const maximizeSuggestions = function (side) {
if (!(side === left || side === right)) return;
const borderRadius = getComputedStyle(searchContainer).getPropertyValue('--border-radius').slice(0, 2);
const containerWidth = resizer.parentNode.getBoundingClientRect().width - 0 * borderRadius;
let leftWidth;
if (side === left) {
left.classList.add('floating');
right.classList.add('floating');
left.classList.remove('secondary-suggestions');
right.classList.add('secondary-suggestions');
leftWidth = (containerWidth - 2 * borderRadius) / containerWidth;
left.onclick = null;
right.onclick = function () {
maximizeSuggestions(right);
};
} else {
left.classList.add('floating');
right.classList.add('floating');
right.classList.remove('secondary-suggestions');
left.classList.add('secondary-suggestions');
leftWidth = 2 * borderRadius / containerWidth;
right.onclick = null;
left.onclick = function () {
maximizeSuggestions(left);
};
}
left.style.setProperty('--expanded-width', `${leftWidth * 100}%`);
right.style.setProperty('--expanded-width', `${(1 - leftWidth) * 100}%`);
setTimeout(function () {
left.classList.remove('floating');
right.classList.remove('floating');
}, 300);
};
const resizer = document.querySelector('#search-suggestions-containers-resizer');
let isResizing = false;
resizer.onpointerdown = function () {
isResizing = true;
document.onpointerup = function () {
isResizing = false;
document.onpointerup = undefined;
};
};
const handleResize = function (e) {
if (!isResizing) return;
const borderRadius = getComputedStyle(searchContainer).getPropertyValue('--border-radius').slice(0, 2);
const containerWidth = resizer.parentNode.getBoundingClientRect().width;
console.log(resizer.parentNode)
console.log(containerWidth);
let leftWidth = (e.clientX - searchContainer.children[0].getBoundingClientRect().left) / containerWidth;
const minWidth = 100;
if (leftWidth * containerWidth < 2 * borderRadius + minWidth) {
leftWidth = 2 * borderRadius / containerWidth;
left.classList.add('floating');
right.classList.add('floating');
left.classList.add('secondary-suggestions');
left.onclick = function () {
maximizeSuggestions(left);
};
} else {
left.onclick = null;
left.classList.remove('secondary-suggestions');
};
if (leftWidth * containerWidth > containerWidth - 2 * borderRadius - minWidth) {
leftWidth = (containerWidth - 2 * borderRadius) / containerWidth;
left.classList.add('floating');
right.classList.add('floating');
right.classList.add('secondary-suggestions');
right.onclick = function () {
maximizeSuggestions(right);
};
} else {
right.onclick = null;
right.classList.remove('secondary-suggestions');
};
left.style.setProperty('--expanded-width', `${leftWidth * 100}%`);
right.style.setProperty('--expanded-width', `${(1 - leftWidth) * 100}%`);
setTimeout(function () {
left.classList.remove('floating');
right.classList.remove('floating');
}, 300);
};
document.addEventListener('pointermove', handleResize);
left.onclick = null;
right.onclick = null;
if (left.classList.contains('secondary-suggestions')) {
left.onclick = function () {
maximizeSuggestions(left);
};
};
if (right.classList.contains('secondary-suggestions')) {
right.onclick = function () {
maximizeSuggestions(right);
};
};
const hide = function (event) {
if (!searchTriggerButton.contains(event.target) && !searchSuggestionsContainerInner.contains(event.target)) {
window.removeEventListener('click', hide, { capture: true });
window.removeEventListener('touchend', hide, { capture: true });
searchTriggerButton.classList.remove('expanded');
searchTriggerButton.removeAttribute('data-expanded');
searchContainer.classList.remove('show');
searchContainer.classList.remove('showing-results');
if (left.classList.contains('secondary-suggestions')) {
left.classList.add('secondary-suggestions-animation');
} else {
left.classList.remove('secondary-suggestions-animation');
};
if (right.classList.contains('secondary-suggestions')) {
right.classList.add('secondary-suggestions-animation');
} else {
right.classList.remove('secondary-suggestions-animation');
};
setTimeout(function () {
searchContainer.classList.remove('visible');
}, Number(getComputedStyle(searchContainer).getPropertyValue('--close-animation-duration').slice(0, -1)) * 1000);
};
};
setTimeout(function () {
window.addEventListener('click', hide, { capture: true });
window.addEventListener('touchend', hide, { capture: true });
}, 100);
};
export { showSearch, displaySuggestions, refreshSuggestions, displayResults };