15ce39693a
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
308 lines
12 KiB
JavaScript
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 }; |