{"version":3,"mappings":"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ACA,oBACA,oBACA,2BACA,mBACA,oBACA,4BACA,0BACA,yBACA,oBACA,4BACA,oBACA,mBACA,mBACA,wBACA,sBACA,kBACA,4BACA,0BACA,yBACA,wBACA,uBACA,yBACA,8BACA,oBACA,oBACA,qBACA,4BACA,kBACA,sBACA,0BACA,iBACA,eACA,kBACA,qBACA,mBACA,kBACA,iBACA,gBACA,eACA,kBACA,sBACA,iBACA,uBACA,uBACA,uBACA,0BACA,4BACA,gCACA,iCACA,sCACA,wpBCvEF,MAAMzM,EAAQC,EAIR0J,EAAOC,EAEb,SAAS8C,EAAYC,EAAe,CAClChD,EAAK,oBAAqBgD,CAAK,CACjC,CAEA,MAAMC,EAAS,CACb,iBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,kpBC1GF,MAAM5M,EAAQC,EAIR0J,EAAOC,EAEPiD,EAAW/F,EAAc,EAAE,EAC3BgG,EAAWhG,EAAmB,EAAE,EAEhCiG,EAAcjG,EAAY,EAAE,EAG5BkG,EAAkBlG,EAAY,EAAE,EAChCmG,EAAmBnG,EAAc,EAAE,EAEzC,SAASoG,EAAU7N,EAAa,WAC9B0N,EAAY,MAAQ1N,EAChBA,IAAQ,QACVsK,EAAK,oBAAqB,CAAC,EACzBtK,IA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","names":["install","app","VTooltip","Menu","Dropdown","Tooltip","head","createHead","router","to","from","NProgress","props","__props","icon","computed","OrugaIcon","Oruga","ApiError","request","response","message","__publicField","CancelError","CancelablePromise","executor","__privateAdd","_isResolved","_isRejected","_isCancelled","_cancelHandlers","_promise","_resolve","_reject","__privateSet","resolve","reject","onResolve","value","__privateGet","_a","onReject","reason","onCancel","cancelHandler","onFulfilled","onRejected","onFinally","error","OpenAPI","isDefined","isString","isStringWithValue","isBlob","isFormData","base64","str","getQueryString","params","qs","append","key","process","v","k","getUrl","config","options","encoder","path","substring","group","url","getFormData","formData","_","resolver","getHeaders","token","username","password","additionalHeaders","headers","credentials","getRequestBody","sendRequest","body","controller","getResponseHeader","responseHeader","content","getResponseBody","contentType","type","catchErrorCodes","result","errorStatus","errorStatusText","errorBody","responseBody","AccountsService","account","__request","code","resetPassword","authorization","AppService","edit","server","dpi","w","h","id","data","GroupService","LoginService","login","refreshToken","logoutOnBrowserClose","useUserStore","defineStore","isAuthenticated","ref","user","accessToken","logoutUrl","useRouter","setUser","u","setAccessToken","setRefreshToken","setLogoutUrl","setPasswordSet","passwordSet","getGroups","getToken","decodedRefreshToken","jwtDecode","needRefresh","decodedAccessToken","logout","pinia","createPinia","piniaPluginPersistedstate","registerSW","__vitePreload","clickOutside","el","binding","ourClickEventHandler","event","useHead","useAppStore","adminMode","iframeMode","iframeURL","timer","maxIdleTime","idleTimer","pauseTimer","lastActivity","showFullscreenModeButton","toggleAdmin","stopIframeMode","redirect","resetIdleTimer","cssSize","emit","__emit","errorMessage","sendPassword","loginData","useCachePasswordModal","oruga","useProgrammatic","CachePasswordModal","t","openCachePasswordModal","appStore","userStore","indicator","_b","href","download","target","getFileFromURL","parts","setIframeMode","calcDpi","i","click","json","getMailCount","useGridStore","categories","numberOfColumns","maxRows","isAppDragging","hoveredElement","showGroupsPicker","groups","selectedGroups","mode","buttonEnabled","g","update","updateGroups","removeGroup","ldapGetGroupData","onMounted","watch","updateIcon","Icon","icons","updateColor","color","colors","appNames","appTypes","selectedApp","guacamoleServer","guacamoleServers","changeApp","appType","_c","changeGuacamoleApp","preview","title","iconColor","iconName","iframe","external","appTypeName","updatePreviewBubble","saveBubble","deleteBubble","setAppType","useEditBubbleModal","grid","bubble","newRow","newColumn","AdminEditBubble","useAddBubbleModal","rowIndex","columnIndex","openEditBubbleModal","openAddBubbleModal","isCurrentElementDragged","isCurrentElementHovered","handleMousemove","handleMouseleave","setDragStart","setDragEnd","loaded","deleteCategory","saveCategory","useEditCategoryModal","categoryIndex","appsInCategory","isLastCategory","AdminEditCategory","useBuildGrid","buildEmptyRow","highestColumnNumber","fullWidth","gridRow","safeNumberOfColumns","buildGrid","apps","editMode","allCategoryOrders","category","findHighestRowNumber","catData","findHighestAppOrder","currentCat","_d","useAddCategoryModal","findCurrentRowLength","emptyRow","useCacheStore","useSaveApps","cache","isSaveAppsLoading","saveAppsError","getAppDataFromServer","appData","saveApps","appArray","index","showCategories","editCategoryModal","openAddCategoryModal","cancel","updateAccountData","accept","acceptPolicy","mailData","updateCode","dataFromPaste","keysAllowed","isNumber","keyPressed","handleInput","inputType","currentActiveElement","num","handleDelete","onPaste","force2faTeachers","qrCode","verificationCode","showHelpText","twoFactorActive","GetCode","VerifyCode","codeData","deleteCode","mail","forwardEmail","showMessage","messageText","messageClass","showForwardEmaiConfig","validateMail","email","updateMailAddress","status","minPasswordLength","checkLength","checkUpperCase","checkLowerCase","re","checkNumbers","checkSpecialCharacters","checkUsername","lowerCasePass","containsUsername","pos","sub","_hoisted_1","_createElementVNode","_createBlock","_component_BaseModal","_withCtx","passwordConfirmation","showErrorMessage","isSecure","isLoading","openPasswordRestrictionsModal","AccountPasswordRestrictions","changePasswordData","setPassword","appsData","forceAcceptPolicy","forcePasswordChange","openEmailModal","AccountEMailAddress","openPasswordResetModal","AccountChangePassword","openPolicyModal","SitePolicy","open2faModal","TotpModal","reloadApps","_e","_openBlock","_createElementBlock","_hoisted_2","__pages_import_0__","__pages_import_1__","__pages_import_2__","__pages_import_3__","__pages_import_4__","__pages_import_5__","__pages_import_7__","__pages_import_8__","__pages_import_9__","routes","__pages_import_6__","createApp","App","setupLayouts","generatedRoutes","createRouter","createWebHistory","glob","obj"],"ignoreList":[],"sources":["../../src/modules/floatingvue.ts","../../src/modules/head.ts","../../src/modules/nprogress.ts","../../src/components/OrugaIcon.vue","../../src/modules/oruga.ts","../../src/api/generated/core/ApiError.ts","../../src/api/generated/core/CancelablePromise.ts","../../src/api/generated/core/OpenAPI.ts","../../src/api/generated/core/request.ts","../../src/api/generated/services/AccountsService.ts","../../src/api/generated/services/AppService.ts","../../src/api/generated/services/GroupService.ts","../../src/api/generated/services/LoginService.ts","../../src/stores/user.ts","../../src/modules/pinia.ts","../../src/modules/pwa.ts","../../src/directives/click-outside.ts","../../src/App.vue","../../src/stores/app.ts","../../src/components/modals/BaseModal.vue","../../src/components/modals/CachePasswordModal.vue","../../src/utils/cachePasswordModal.ts","../../src/components/IconBubble.vue","../../src/stores/grid.ts","../../src/components/GroupsPicker.vue","../../src/components/IconPicker.vue","../../src/components/ColorPicker.vue","../../src/components/AppTypePicker.vue","../../src/components/modals/AdminEditBubble.vue","../../src/utils/editBubbleModal.ts","../../src/utils/addBubbleModal.ts","../../src/components/DragBox.vue","../../src/components/modals/AdminEditCategory.vue","../../src/utils/editCategoryModal.ts","../../src/utils/buildGrid.ts","../../src/utils/addCategoryModal.ts","../../src/stores/cache.ts","../../src/utils/saveApps.ts","../../src/components/Grid.vue","../../src/components/modals/SitePolicy.vue","../../src/components/CodeInput.vue","../../src/components/modals/SetupTotpModal.vue","../../src/components/modals/AccountEMailAddress.vue","../../src/components/PasswordCheck.vue","../../src/components/modals/AccountPasswordRestrictions.vue","../../src/components/modals/AccountChangePassword.vue","../../src/components/PortalMain.vue","../../src/pages/index.vue","../../virtual:vite-plugin-pages/generated-pages?id=~pages","../../src/main.ts"],"sourcesContent":["import { Dropdown, Menu, Tooltip, VTooltip } from 'floating-vue';\n\nimport type { UserModule } from '~/types';\nimport 'floating-vue/dist/style.css';\n\nexport const install: UserModule = ({ app }) => {\n app.directive('tooltip', VTooltip);\n app.component('VMenu', Menu);\n app.component('VDropdown', Dropdown);\n app.component('VTooltip', Tooltip);\n};\n","import { createHead } from '@vueuse/head';\nimport type { UserModule } from '~/types';\n\n// vueuse/head https://github.com/vueuse/head\nexport const install: UserModule = ({ app }) => {\n const head = createHead();\n app.use(head);\n};\n","import NProgress from 'nprogress';\nimport type { UserModule } from '~/types';\n\nexport const install: UserModule = ({ router }) => {\n router.beforeEach((to, from) => {\n if (to.path !== from.path)\n NProgress.start();\n });\n router.afterEach(() => {\n NProgress.done();\n });\n};\n","\n\n\n","import Oruga from '@oruga-ui/oruga-next';\nimport type { UserModule } from '~/types';\nimport OrugaIcon from '~/components/OrugaIcon.vue';\n\nimport '@oruga-ui/oruga-next/dist/oruga-full.css';\n\n// Setup Oruga\nexport const install: UserModule = ({ app }) => {\n app.component('OrugaIcon', OrugaIcon);\n app.use(Oruga, {\n iconPack: '',\n iconComponent: 'OrugaIcon',\n statusIcon: false,\n button: {\n override: true,\n rootClass: 'btn',\n variantClass: 'btn-',\n },\n checkbox: {\n checkClass: 'checkbox',\n checkCheckedClass: 'checkbox-checked',\n labelClass: 'checkbox-label',\n },\n radio: {\n override: true,\n rootClass: 'radio',\n labelClass: 'radio-label',\n checkClass: 'radio-check',\n checkedClass: 'radio-checked',\n },\n field: {\n override: true,\n labelClass: 'field-label',\n messageClass: 'text-xs italic',\n variantClass: 'field-',\n },\n input: {\n override: true,\n rootClass: 'input',\n inputClass: 'input-class',\n roundedClass: 'rounded',\n variantClass: 'input-',\n iconRightClass: 'input-icon-right',\n },\n\n dropdown: {\n menuClass: 'dropdown-menu',\n itemClass: 'dropdown-item',\n itemActiveClass: 'dropdown-item-active',\n },\n loading: {\n overlayClass: 'loading-background',\n },\n icon: {\n override: true,\n spinClass: 'fa-spin',\n },\n modal: {\n override: true,\n rootClass: 'modal',\n contentClass: 'modal-content',\n overlayClass: 'modal-overlay',\n },\n table: {\n override: true,\n tableClass: 'table',\n rootClass: 'table-root',\n thClass: 'table-header',\n tdClass: 'table-cell',\n thSortableClass: 'table-header-sortable',\n thCurrentSortClass: 'table-header-current-sort',\n thPositionClass: 'table-header-position',\n },\n pagination: {\n override: true,\n rootClass: 'pagination',\n listClass: 'pagination-list',\n linkClass: 'pagination-link',\n linkCurrentClass: 'pagination-link-current',\n nextBtnClass: 'pagination-hide',\n prevBtnClass: 'pagination-hide',\n },\n });\n};\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ApiRequestOptions } from './ApiRequestOptions';\nimport type { ApiResult } from './ApiResult';\n\nexport class ApiError extends Error {\n public readonly url: string;\n public readonly status: number;\n public readonly statusText: string;\n public readonly body: any;\n public readonly request: ApiRequestOptions;\n\n constructor(request: ApiRequestOptions, response: ApiResult, message: string) {\n super(message);\n\n this.name = 'ApiError';\n this.url = response.url;\n this.status = response.status;\n this.statusText = response.statusText;\n this.body = response.body;\n this.request = request;\n }\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport class CancelError extends Error {\n\n constructor(message: string) {\n super(message);\n this.name = 'CancelError';\n }\n\n public get isCancelled(): boolean {\n return true;\n }\n}\n\nexport interface OnCancel {\n readonly isResolved: boolean;\n readonly isRejected: boolean;\n readonly isCancelled: boolean;\n\n (cancelHandler: () => void): void;\n}\n\nexport class CancelablePromise implements Promise {\n #isResolved: boolean;\n #isRejected: boolean;\n #isCancelled: boolean;\n readonly #cancelHandlers: (() => void)[];\n readonly #promise: Promise;\n #resolve?: (value: T | PromiseLike) => void;\n #reject?: (reason?: any) => void;\n\n constructor(\n executor: (\n resolve: (value: T | PromiseLike) => void,\n reject: (reason?: any) => void,\n onCancel: OnCancel\n ) => void\n ) {\n this.#isResolved = false;\n this.#isRejected = false;\n this.#isCancelled = false;\n this.#cancelHandlers = [];\n this.#promise = new Promise((resolve, reject) => {\n this.#resolve = resolve;\n this.#reject = reject;\n\n const onResolve = (value: T | PromiseLike): void => {\n if (this.#isResolved || this.#isRejected || this.#isCancelled) {\n return;\n }\n this.#isResolved = true;\n this.#resolve?.(value);\n };\n\n const onReject = (reason?: any): void => {\n if (this.#isResolved || this.#isRejected || this.#isCancelled) {\n return;\n }\n this.#isRejected = true;\n this.#reject?.(reason);\n };\n\n const onCancel = (cancelHandler: () => void): void => {\n if (this.#isResolved || this.#isRejected || this.#isCancelled) {\n return;\n }\n this.#cancelHandlers.push(cancelHandler);\n };\n\n Object.defineProperty(onCancel, 'isResolved', {\n get: (): boolean => this.#isResolved,\n });\n\n Object.defineProperty(onCancel, 'isRejected', {\n get: (): boolean => this.#isRejected,\n });\n\n Object.defineProperty(onCancel, 'isCancelled', {\n get: (): boolean => this.#isCancelled,\n });\n\n return executor(onResolve, onReject, onCancel as OnCancel);\n });\n }\n\n get [Symbol.toStringTag]() {\n return \"Cancellable Promise\";\n }\n\n public then(\n onFulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onRejected?: ((reason: any) => TResult2 | PromiseLike) | null\n ): Promise {\n return this.#promise.then(onFulfilled, onRejected);\n }\n\n public catch(\n onRejected?: ((reason: any) => TResult | PromiseLike) | null\n ): Promise {\n return this.#promise.catch(onRejected);\n }\n\n public finally(onFinally?: (() => void) | null): Promise {\n return this.#promise.finally(onFinally);\n }\n\n public cancel(): void {\n if (this.#isResolved || this.#isRejected || this.#isCancelled) {\n return;\n }\n this.#isCancelled = true;\n if (this.#cancelHandlers.length) {\n try {\n for (const cancelHandler of this.#cancelHandlers) {\n cancelHandler();\n }\n } catch (error) {\n console.warn('Cancellation threw an error', error);\n return;\n }\n }\n this.#cancelHandlers.length = 0;\n this.#reject?.(new CancelError('Request aborted'));\n }\n\n public get isCancelled(): boolean {\n return this.#isCancelled;\n }\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ApiRequestOptions } from './ApiRequestOptions';\n\ntype Resolver = (options: ApiRequestOptions) => Promise;\ntype Headers = Record;\n\nexport type OpenAPIConfig = {\n BASE: string;\n VERSION: string;\n WITH_CREDENTIALS: boolean;\n CREDENTIALS: 'include' | 'omit' | 'same-origin';\n TOKEN?: string | Resolver | undefined;\n USERNAME?: string | Resolver | undefined;\n PASSWORD?: string | Resolver | undefined;\n HEADERS?: Headers | Resolver | undefined;\n ENCODE_PATH?: ((path: string) => string) | undefined;\n};\n\nexport const OpenAPI: OpenAPIConfig = {\n BASE: 'http://min.cim.cloud',\n VERSION: '1.0',\n WITH_CREDENTIALS: false,\n CREDENTIALS: 'include',\n TOKEN: undefined,\n USERNAME: undefined,\n PASSWORD: undefined,\n HEADERS: undefined,\n ENCODE_PATH: undefined,\n};\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport { ApiError } from './ApiError';\nimport type { ApiRequestOptions } from './ApiRequestOptions';\nimport type { ApiResult } from './ApiResult';\nimport { CancelablePromise } from './CancelablePromise';\nimport type { OnCancel } from './CancelablePromise';\nimport type { OpenAPIConfig } from './OpenAPI';\n\nexport const isDefined = (value: T | null | undefined): value is Exclude => {\n return value !== undefined && value !== null;\n};\n\nexport const isString = (value: any): value is string => {\n return typeof value === 'string';\n};\n\nexport const isStringWithValue = (value: any): value is string => {\n return isString(value) && value !== '';\n};\n\nexport const isBlob = (value: any): value is Blob => {\n return (\n typeof value === 'object' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.constructor === 'function' &&\n typeof value.constructor.name === 'string' &&\n /^(Blob|File)$/.test(value.constructor.name) &&\n /^(Blob|File)$/.test(value[Symbol.toStringTag])\n );\n};\n\nexport const isFormData = (value: any): value is FormData => {\n return value instanceof FormData;\n};\n\nexport const base64 = (str: string): string => {\n try {\n return btoa(str);\n } catch (err) {\n // @ts-ignore\n return Buffer.from(str).toString('base64');\n }\n};\n\nexport const getQueryString = (params: Record): string => {\n const qs: string[] = [];\n\n const append = (key: string, value: any) => {\n qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\n };\n\n const process = (key: string, value: any) => {\n if (isDefined(value)) {\n if (Array.isArray(value)) {\n value.forEach(v => {\n process(key, v);\n });\n } else if (typeof value === 'object') {\n Object.entries(value).forEach(([k, v]) => {\n process(`${key}[${k}]`, v);\n });\n } else {\n append(key, value);\n }\n }\n };\n\n Object.entries(params).forEach(([key, value]) => {\n process(key, value);\n });\n\n if (qs.length > 0) {\n return `?${qs.join('&')}`;\n }\n\n return '';\n};\n\nconst getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => {\n const encoder = config.ENCODE_PATH || encodeURI;\n\n const path = options.url\n .replace('{api-version}', config.VERSION)\n .replace(/{(.*?)}/g, (substring: string, group: string) => {\n if (options.path?.hasOwnProperty(group)) {\n return encoder(String(options.path[group]));\n }\n return substring;\n });\n\n const url = `${config.BASE}${path}`;\n if (options.query) {\n return `${url}${getQueryString(options.query)}`;\n }\n return url;\n};\n\nexport const getFormData = (options: ApiRequestOptions): FormData | undefined => {\n if (options.formData) {\n const formData = new FormData();\n\n const process = (key: string, value: any) => {\n if (isString(value) || isBlob(value)) {\n formData.append(key, value);\n } else {\n formData.append(key, JSON.stringify(value));\n }\n };\n\n Object.entries(options.formData)\n .filter(([_, value]) => isDefined(value))\n .forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach(v => process(key, v));\n } else {\n process(key, value);\n }\n });\n\n return formData;\n }\n return undefined;\n};\n\ntype Resolver = (options: ApiRequestOptions) => Promise;\n\nexport const resolve = async (options: ApiRequestOptions, resolver?: T | Resolver): Promise => {\n if (typeof resolver === 'function') {\n return (resolver as Resolver)(options);\n }\n return resolver;\n};\n\nexport const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions): Promise => {\n const token = await resolve(options, config.TOKEN);\n const username = await resolve(options, config.USERNAME);\n const password = await resolve(options, config.PASSWORD);\n const additionalHeaders = await resolve(options, config.HEADERS);\n\n const headers = Object.entries({\n Accept: 'application/json',\n ...additionalHeaders,\n ...options.headers,\n })\n .filter(([_, value]) => isDefined(value))\n .reduce((headers, [key, value]) => ({\n ...headers,\n [key]: String(value),\n }), {} as Record);\n\n if (isStringWithValue(token)) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n\n if (isStringWithValue(username) && isStringWithValue(password)) {\n const credentials = base64(`${username}:${password}`);\n headers['Authorization'] = `Basic ${credentials}`;\n }\n\n if (options.body) {\n if (options.mediaType) {\n headers['Content-Type'] = options.mediaType;\n } else if (isBlob(options.body)) {\n headers['Content-Type'] = options.body.type || 'application/octet-stream';\n } else if (isString(options.body)) {\n headers['Content-Type'] = 'text/plain';\n } else if (!isFormData(options.body)) {\n headers['Content-Type'] = 'application/json';\n }\n }\n\n return new Headers(headers);\n};\n\nexport const getRequestBody = (options: ApiRequestOptions): any => {\n if (options.body !== undefined) {\n if (options.mediaType?.includes('/json')) {\n return JSON.stringify(options.body)\n } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) {\n return options.body;\n } else {\n return JSON.stringify(options.body);\n }\n }\n return undefined;\n};\n\nexport const sendRequest = async (\n config: OpenAPIConfig,\n options: ApiRequestOptions,\n url: string,\n body: any,\n formData: FormData | undefined,\n headers: Headers,\n onCancel: OnCancel\n): Promise => {\n const controller = new AbortController();\n\n const request: RequestInit = {\n headers,\n body: body ?? formData,\n method: options.method,\n signal: controller.signal,\n };\n\n if (config.WITH_CREDENTIALS) {\n request.credentials = config.CREDENTIALS;\n }\n\n onCancel(() => controller.abort());\n\n return await fetch(url, request);\n};\n\nexport const getResponseHeader = (response: Response, responseHeader?: string): string | undefined => {\n if (responseHeader) {\n const content = response.headers.get(responseHeader);\n if (isString(content)) {\n return content;\n }\n }\n return undefined;\n};\n\nexport const getResponseBody = async (response: Response): Promise => {\n if (response.status !== 204) {\n try {\n const contentType = response.headers.get('Content-Type');\n if (contentType) {\n const jsonTypes = ['application/json', 'application/problem+json']\n const isJSON = jsonTypes.some(type => contentType.toLowerCase().startsWith(type));\n if (isJSON) {\n return await response.json();\n } else {\n return await response.text();\n }\n }\n } catch (error) {\n console.error(error);\n }\n }\n return undefined;\n};\n\nexport const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => {\n const errors: Record = {\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 403: 'Forbidden',\n 404: 'Not Found',\n 500: 'Internal Server Error',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n ...options.errors,\n }\n\n const error = errors[result.status];\n if (error) {\n throw new ApiError(options, result, error);\n }\n\n if (!result.ok) {\n const errorStatus = result.status ?? 'unknown';\n const errorStatusText = result.statusText ?? 'unknown';\n const errorBody = (() => {\n try {\n return JSON.stringify(result.body, null, 2);\n } catch (e) {\n return undefined;\n }\n })();\n\n throw new ApiError(options, result,\n `Generic Error: status: ${errorStatus}; status text: ${errorStatusText}; body: ${errorBody}`\n );\n }\n};\n\n/**\n * Request method\n * @param config The OpenAPI configuration object\n * @param options The request options from the service\n * @returns CancelablePromise\n * @throws ApiError\n */\nexport const request = (config: OpenAPIConfig, options: ApiRequestOptions): CancelablePromise => {\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n try {\n const url = getUrl(config, options);\n const formData = getFormData(options);\n const body = getRequestBody(options);\n const headers = await getHeaders(config, options);\n\n if (!onCancel.isCancelled) {\n const response = await sendRequest(config, options, url, body, formData, headers, onCancel);\n const responseBody = await getResponseBody(response);\n const responseHeader = getResponseHeader(response, options.responseHeader);\n\n const result: ApiResult = {\n url,\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n body: responseHeader ?? responseBody,\n };\n\n catchErrorCodes(options, result);\n\n resolve(result.body);\n }\n } catch (error) {\n reject(error);\n }\n });\n};\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { accounts_changePassword } from '../models/accounts_changePassword';\nimport type { accounts_checkCodePayload } from '../models/accounts_checkCodePayload';\nimport type { accounts_generateCodePayload } from '../models/accounts_generateCodePayload';\nimport type { accounts_resetPasswordPayload } from '../models/accounts_resetPasswordPayload';\nimport type { accounts_result } from '../models/accounts_result';\nimport type { accounts_updateUser } from '../models/accounts_updateUser';\nimport type { accounts_usernameResponse } from '../models/accounts_usernameResponse';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport { OpenAPI } from '../core/OpenAPI';\nimport { request as __request } from '../core/request';\n\nexport class AccountsService {\n\n /**\n * Sends a reset code to the users private mail address\n * @param account Account\n * @returns accounts_usernameResponse OK\n * @throws ApiError\n */\n public static passwordCreateResetCode(\n account: accounts_generateCodePayload,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: 'POST',\n url: '/api/account/reset-code',\n body: account,\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * Checks a reset code\n * @param code Check Code\n * @returns string ok\n * @throws ApiError\n */\n public static checkResetCode(\n code: accounts_checkCodePayload,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: 'POST',\n url: '/api/account/reset-code/check',\n body: code,\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * Change password with reset code\n * @param resetPassword Change Password\n * @returns string ok\n * @throws ApiError\n */\n public static resetChangePassword(\n resetPassword: accounts_resetPasswordPayload,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: 'POST',\n url: '/api/account/reset-code/reset',\n body: resetPassword,\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * Update Account\n * @param account Update user\n * @param authorization Insert your access token\n * @returns any OK\n * @throws ApiError\n */\n public static updateAccount(\n account: accounts_updateUser,\n authorization: string = 'Bearer ',\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: 'POST',\n url: '/api/accounts',\n headers: {\n 'Authorization': authorization,\n },\n body: account,\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * Allows the user to change their password\n * @param account Change Password\n * @param authorization Insert your access token\n * @returns accounts_result OK\n * @throws ApiError\n */\n public static changePassword(\n account: accounts_changePassword,\n authorization: string = 'Bearer ',\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: 'POST',\n url: '/api/password_changes',\n headers: {\n 'Authorization': authorization,\n },\n body: account,\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { apps_payload } from '../models/apps_payload';\nimport type { apps_updateAll } from '../models/apps_updateAll';\nimport type { ent_App } from '../models/ent_App';\nimport type { ent_AppGroup } from '../models/ent_AppGroup';\nimport type { ent_AppType } from '../models/ent_AppType';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport { OpenAPI } from '../core/OpenAPI';\nimport { request as __request } from '../core/request';\n\nexport class AppService {\n\n /**\n * Get apps paginated\n * @param edit Edit mode\n * @param authorization Insert your access token\n * @returns ent_AppGroup OK\n * @throws ApiError\n */\n public static getApps(\n edit: boolean,\n authorization?: string,\n ): CancelablePromise> {\n return __request(OpenAPI, {\n method: 'GET',\n url: '/api/apps',\n headers: {\n 'Authorization': authorization,\n },\n query: {\n 'edit': edit,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * Create new app\n * @param account Add app\n * @param authorization Insert your access token\n * @returns ent_App OK\n * @throws ApiError\n */\n public static createApp(\n account: apps_payload,\n authorization: string = 'Bearer ',\n ): CancelablePromise> {\n return __request(OpenAPI, {\n method: 'POST',\n url: '/api/apps',\n headers: {\n 'Authorization': authorization,\n },\n body: account,\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * Redirect to guacamole\n * @param server Server\n * @param authorization Insert your access token\n * @param dpi DPI\n * @param w Width\n * @param h Height\n * @returns string OK\n * @throws ApiError\n */\n public static redirectGuacamole(\n server: string,\n authorization?: string,\n dpi?: string,\n w?: string,\n h?: string,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: 'GET',\n url: '/api/apps/guacamole',\n headers: {\n 'Authorization': authorization,\n },\n query: {\n 'server': server,\n 'dpi': dpi,\n 'w': w,\n 'h': h,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * Get app types\n * @param authorization Insert your access token\n * @returns ent_AppType OK\n * @throws ApiError\n */\n public static getAppsTypes(\n authorization?: string,\n ): CancelablePromise> {\n return __request(OpenAPI, {\n method: 'GET',\n url: '/api/apps/types',\n headers: {\n 'Authorization': authorization,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * Redirect to virtuelles klassenbuch\n * @param authorization Insert your access token\n * @returns string OK\n * @throws ApiError\n */\n public static redirectVirtuellesKlassenbuch(\n authorization?: string,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: 'GET',\n url: '/api/apps/vk',\n headers: {\n 'Authorization': authorization,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * Redirect to virtueller stundenplan\n * @param authorization Insert your access token\n * @returns string OK\n * @throws ApiError\n */\n public static redirectVirtuellerStundenplan(\n authorization?: string,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: 'GET',\n url: '/api/apps/vs',\n headers: {\n 'Authorization': authorization,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * Get new mail count\n * @param authorization Insert your access token\n * @returns string OK\n * @throws ApiError\n */\n public static getNewMailCount(\n authorization?: string,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: 'GET',\n url: '/api/apps/webmail',\n headers: {\n 'Authorization': authorization,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * Update app\n * @param id App ID\n * @param app Update app\n * @param authorization Insert your access token\n * @returns ent_App OK\n * @throws ApiError\n */\n public static updateApp(\n id: number,\n app: apps_payload,\n authorization: string = 'Bearer ',\n ): CancelablePromise> {\n return __request(OpenAPI, {\n method: 'PUT',\n url: '/api/apps/{id}',\n path: {\n 'id': id,\n },\n headers: {\n 'Authorization': authorization,\n },\n body: app,\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * Delete app by id\n * @param id App id\n * @param authorization Insert your access token\n * @returns any OK\n * @throws ApiError\n */\n public static deleteApp(\n id: number,\n authorization: string = 'Bearer ',\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: 'DELETE',\n url: '/api/apps/{id}',\n path: {\n 'id': id,\n },\n headers: {\n 'Authorization': authorization,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * Create new app\n * @param data Add app\n * @param authorization Insert your access token\n * @returns ent_App OK\n * @throws ApiError\n */\n public static updateAll(\n data: apps_updateAll,\n authorization: string = 'Bearer ',\n ): CancelablePromise> {\n return __request(OpenAPI, {\n method: 'POST',\n url: '/api/update-all',\n headers: {\n 'Authorization': authorization,\n },\n body: data,\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport { OpenAPI } from '../core/OpenAPI';\nimport { request as __request } from '../core/request';\n\nexport class GroupService {\n\n /**\n * Get groups\n * @param authorization Insert your access token\n * @returns string OK\n * @throws ApiError\n */\n public static ldapGetGroups(\n authorization: string = 'Bearer ',\n ): CancelablePromise> {\n return __request(OpenAPI, {\n method: 'GET',\n url: '/api/groups',\n headers: {\n 'Authorization': authorization,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { login_codePayload } from '../models/login_codePayload';\nimport type { login_loginPayload } from '../models/login_loginPayload';\nimport type { login_LogoutResult } from '../models/login_LogoutResult';\nimport type { login_oidcLogin } from '../models/login_oidcLogin';\nimport type { login_passwordPayload } from '../models/login_passwordPayload';\nimport type { login_refreshTokenPayload } from '../models/login_refreshTokenPayload';\nimport type { login_Result } from '../models/login_Result';\nimport type { login_User } from '../models/login_User';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport { OpenAPI } from '../core/OpenAPI';\nimport { request as __request } from '../core/request';\n\nexport class LoginService {\n\n /**\n * Login endpoint\n * @param login Credentials\n * @returns login_Result OK\n * @throws ApiError\n */\n public static login(\n login: login_loginPayload,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: 'POST',\n url: '/api/login',\n body: login,\n errors: {\n 401: `Unauthorized`,\n },\n });\n }\n\n /**\n * Login Endpoint for OpenID Connect\n * @param login Credentials\n * @param authorization Insert your access token\n * @returns any OK\n * @throws ApiError\n */\n public static openIdConnect(\n login: login_oidcLogin,\n authorization: string = 'Bearer ',\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: 'POST',\n url: '/api/login/oidc',\n headers: {\n 'Authorization': authorization,\n },\n body: login,\n });\n }\n\n /**\n * Cache password endpoint\n * @param login Password\n * @returns login_Result OK\n * @throws ApiError\n */\n public static cachePassword(\n login: login_passwordPayload,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: 'POST',\n url: '/api/login/password',\n body: login,\n errors: {\n 401: `Unauthorized`,\n },\n });\n }\n\n /**\n * Endpoint for refreshing a token\n * @param refreshToken Refresh token\n * @returns any OK\n * @throws ApiError\n */\n public static refreshToken(\n refreshToken: login_refreshTokenPayload,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: 'POST',\n url: '/api/login/refresh',\n body: refreshToken,\n errors: {\n 401: `Unauthorized`,\n },\n });\n }\n\n /**\n * Login Endpoint for SAML\n * @param authorization Insert your access token\n * @returns any OK\n * @throws ApiError\n */\n public static samlSession(\n authorization: string = 'Bearer ',\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: 'POST',\n url: '/api/login/saml',\n headers: {\n 'Authorization': authorization,\n },\n });\n }\n\n /**\n * Logout endpoint\n * @returns login_LogoutResult OK\n * @throws ApiError\n */\n public static logout(): CancelablePromise {\n return __request(OpenAPI, {\n method: 'POST',\n url: '/api/logout',\n errors: {\n 401: `Unauthorized`,\n },\n });\n }\n\n /**\n * Endpoint for generating a TOTP code\n * @param authorization Insert your access token\n * @returns any OK\n * @throws ApiError\n */\n public static generateTotpCode(\n authorization: string = 'Bearer ',\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: 'GET',\n url: '/api/totp/code',\n headers: {\n 'Authorization': authorization,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * Endpoint for deleting a TOTP code\n * @param authorization Insert your access token\n * @returns any OK\n * @throws ApiError\n */\n public static deleteTotpCode(\n authorization: string = 'Bearer ',\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: 'DELETE',\n url: '/api/totp/code',\n headers: {\n 'Authorization': authorization,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * Endpoint for verifying a TOTP code\n * @param code Code\n * @param authorization Insert your access token\n * @returns any OK\n * @throws ApiError\n */\n public static verifyTotpCode(\n code: login_codePayload,\n authorization: string = 'Bearer ',\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: 'POST',\n url: '/api/totp/code/verify',\n headers: {\n 'Authorization': authorization,\n },\n body: code,\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * Me endpoint\n * @param authorization Insert your access token\n * @returns login_User OK\n * @throws ApiError\n */\n public static getMe(\n authorization: string = 'Bearer ',\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: 'GET',\n url: '/api/users/me',\n headers: {\n 'Authorization': authorization,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n}\n","import { defineStore } from 'pinia';\nimport type { JwtPayload } from 'jwt-decode';\nimport { jwtDecode } from 'jwt-decode';\n\n// import type { LoginRefreshTokenPayload, LoginResult, LoginUser } from '~/api/generated/api';\nimport { useRouter } from 'vue-router';\nimport type { login_User, login_refreshTokenPayload } from '~/api/generated';\nimport { LoginService } from '~/api/generated';\n\nlet logoutOnBrowserClose = true;\nif (import.meta.env.VITE_LOGOUT_ON_BROWSER_CLOSE !== undefined)\n logoutOnBrowserClose = import.meta.env.VITE_LOGOUT_ON_BROWSER_CLOSE?.toLowerCase() === 'true';\n\nexport const useUserStore = defineStore('user', () => {\n const isAuthenticated = ref(false);\n const user = ref(null);\n const accessToken = ref(null);\n const refreshToken = ref(null);\n const logoutUrl = ref(null);\n\n const router = useRouter();\n\n function setUser(u: login_User) {\n isAuthenticated.value = true;\n user.value = u;\n }\n\n function setAccessToken(token: string) {\n accessToken.value = token;\n }\n\n function setRefreshToken(token: string) {\n refreshToken.value = token;\n }\n\n function setLogoutUrl(url: string) {\n logoutUrl.value = url;\n }\n\n function setPasswordSet(passwordSet: boolean) {\n user.value!.passwordSet = passwordSet;\n }\n\n function getGroups() {\n return user.value?.groups || [];\n }\n\n async function getToken() {\n if (!isAuthenticated.value) {\n return '';\n }\n\n // check if token is present\n if (!refreshToken.value && isAuthenticated.value) {\n // no token, logout... ');\n router.push('/logout');\n return '';\n }\n\n // check if token is expired\n if (refreshToken.value) {\n const decodedRefreshToken = jwtDecode(refreshToken.value || '', {});\n\n if (decodedRefreshToken.exp && decodedRefreshToken.exp < Date.now() / 1000) {\n console.error('refresh token expired, logout... ');\n router.push('/logout');\n return '';\n }\n }\n else {\n // no token, logout... ');\n router.push('/logout');\n return '';\n }\n\n let needRefresh = false;\n if (accessToken.value) {\n const decodedAccessToken = jwtDecode(accessToken.value);\n\n if (decodedAccessToken.exp && decodedAccessToken.exp < Date.now() / 1000) {\n needRefresh = true;\n }\n else {\n return accessToken.value as string;\n }\n }\n else {\n needRefresh = true;\n }\n\n if (\n needRefresh\n && refreshToken.value\n && accessToken.value !== null\n ) {\n accessToken.value = null;\n\n // console.info('token expired, refreshing... ');\n\n const token: login_refreshTokenPayload = { refresh_token: refreshToken.value as string };\n const result = await LoginService.refreshToken(token);\n\n if (result) {\n isAuthenticated.value = true;\n accessToken.value = result.access_token as string;\n return accessToken.value as string;\n }\n else {\n console.error('could not refresh token');\n router.push('/logout');\n return '';\n }\n }\n\n if (needRefresh) {\n isAuthenticated.value = false;\n }\n\n return accessToken.value as string;\n }\n\n function logout() {\n isAuthenticated.value = false;\n user.value = null;\n accessToken.value = '';\n refreshToken.value = null;\n }\n\n return {\n user,\n logoutUrl,\n accessToken,\n refreshToken,\n isAuthenticated,\n logout,\n setUser,\n setRefreshToken,\n setAccessToken,\n setPasswordSet,\n getGroups,\n getToken,\n setLogoutUrl,\n };\n}, {\n persist: {\n storage: logoutOnBrowserClose ? sessionStorage : localStorage,\n },\n});\n","import { createPinia } from 'pinia';\nimport piniaPluginPersistedstate from 'pinia-plugin-persistedstate';\nimport type { UserModule } from '~/types';\nimport { OpenAPI } from '~/api/generated';\nimport { useUserStore } from '~/stores/user';\n\n// Setup Pinia\n// https://pinia.esm.dev/\nexport const install: UserModule = ({ app }) => {\n const pinia = createPinia();\n pinia.use(piniaPluginPersistedstate);\n app.use(pinia);\n\n // set auth token\n OpenAPI.TOKEN = async () => {\n const userStore = useUserStore();\n return await userStore.getToken()\n .catch(() => {\n // set empty string on fail (e.g. user is not signed in)\n return '';\n });\n };\n};\n","import type { UserModule } from '~/types';\n\n// https://github.com/antfu/vite-plugin-pwa#automatic-reload-when-new-content-available\nexport const install: UserModule = ({ router }) => {\n router.isReady()\n .then(async () => {\n const { registerSW } = await import('virtual:pwa-register');\n registerSW({ immediate: true });\n })\n .catch(() => {});\n};\n","import type { DirectiveBinding } from '@vue/runtime-core';\n\ninterface ClickOutsideElement extends HTMLElement {\n __vueClickEventHandler__: any\n}\n\nexport default {\n beforeMount(el: ClickOutsideElement, binding: DirectiveBinding) {\n const ourClickEventHandler = (event: MouseEvent) => {\n if (!el.contains(event.target as HTMLElement) && el !== event.target)\n binding.value(event);\n };\n\n el.__vueClickEventHandler__ = ourClickEventHandler;\n\n document.addEventListener('click', ourClickEventHandler);\n },\n unmounted(el: ClickOutsideElement) {\n document.removeEventListener('click', el.__vueClickEventHandler__);\n },\n};\n","\n\n\n","import { defineStore } from 'pinia';\n\nexport const useAppStore = defineStore('app', () => {\n const router = useRouter();\n\n const adminMode = ref(false);\n const iframeMode = ref(false);\n const iframeURL = ref('');\n const timer = ref(0);\n\n const maxIdleTime = Number.parseInt(import.meta.env.VITE_LOGOUT_ON_IDLE_TIME as string, 10) ?? 0;\n\n const idleTimer = ref(maxIdleTime);\n const pauseTimer = ref(false);\n const lastActivity = ref(Date.now());\n\n const showFullscreenModeButton = ref(false);\n\n function toggleAdmin() {\n adminMode.value = !adminMode.value;\n }\n\n function stopIframeMode(redirect = '/') {\n pauseTimer.value = false;\n iframeMode.value = false;\n adminMode.value = false;\n iframeURL.value = '';\n showFullscreenModeButton.value = false;\n router.push(redirect);\n }\n\n function resetIdleTimer() {\n idleTimer.value = maxIdleTime;\n lastActivity.value = Date.now();\n }\n\n return {\n stopIframeMode,\n toggleAdmin,\n resetIdleTimer,\n adminMode,\n iframeMode,\n iframeURL,\n showFullscreenModeButton,\n maxIdleTime,\n idleTimer,\n pauseTimer,\n timer,\n lastActivity,\n };\n});\n","\n\n\n","\n\n\n\n\n","import { useProgrammatic } from '@oruga-ui/oruga-next';\nimport CachePasswordModal from '~/components/modals/CachePasswordModal.vue';\n\nexport function useCachePasswordModal() {\n const oruga = useProgrammatic();\n\n const openCachePasswordModal = () => {\n oruga.oruga.modal.open({\n component: CachePasswordModal,\n props: {\n },\n hasModalCard: true,\n trapFocus: true,\n scroll: 'keep',\n animation: 'fade',\n });\n };\n\n return { openCachePasswordModal };\n}\n","\n\n\n","import { defineStore } from 'pinia';\nimport type { ent_App, ent_AppGroup } from '~/api/generated';\n\nexport interface GridRow {\n apps: ent_App[][]\n categoryData?: ent_AppGroup\n}\n\ninterface HoveredElement {\n row: number | null\n column: number | null\n}\n\nexport const useGridStore = defineStore('grid', () => {\n /** App grid */\n const categories = ref([]);\n\n /** Fixed number of columns in grid */\n const numberOfColumns = 10;\n\n /** Max number of columns in grid */\n const maxRows = 8;\n\n /** True if one element is being dragged */\n const isAppDragging = ref(false);\n\n /** Current app being hovered */\n const hoveredElement = ref({ row: null, column: null });\n\n return {\n categories,\n isAppDragging,\n numberOfColumns,\n maxRows,\n hoveredElement,\n };\n}, {\n persist: true,\n});\n","\n\n\n","\n\n\n","\n\n\n","\n\n\n","\n\n\n\n\n","import { useProgrammatic } from '@oruga-ui/oruga-next';\nimport AdminEditBubble from '~/components/modals/AdminEditBubble.vue';\nimport { useGridStore } from '~/stores/grid';\nimport type { ent_App } from '~/api/generated';\n\nexport function useEditBubbleModal() {\n const oruga = useProgrammatic();\n const grid = useGridStore();\n\n const openEditBubbleModal = (bubble: ent_App, newRow: number, newColumn: number) => {\n oruga.oruga.modal.open({\n component: AdminEditBubble,\n props: {\n bubble,\n title: 'Bubble bearbeiten',\n size: 'large',\n },\n hasModalCard: true,\n trapFocus: true,\n scroll: 'keep',\n animation: 'fade',\n events: {\n save: (result: ent_App) => {\n /** Add new data to grid */\n grid.categories[newRow].apps[newColumn][0] = result;\n },\n delete: (result: ent_App) => {\n if (!result.id)\n return;\n /** Remove app from grid */\n grid.categories[newRow].apps[newColumn] = [];\n },\n },\n });\n };\n\n return { openEditBubbleModal };\n}\n","import { useProgrammatic } from '@oruga-ui/oruga-next';\nimport AdminEditBubble from '~/components/modals/AdminEditBubble.vue';\nimport { useGridStore } from '~/stores/grid';\nimport type { ent_App } from '~/api/generated';\n\nexport function useAddBubbleModal() {\n const oruga = useProgrammatic();\n const grid = useGridStore();\n\n const openAddBubbleModal = (rowIndex: number, columnIndex: number) => {\n oruga.oruga.modal.open({\n component: AdminEditBubble,\n props: {\n bubble: {\n title: 'Titel',\n iconName: 'i-fa6-solid-folder',\n color: 'bg-light-primary',\n iconColor: 'bg-light',\n url: import.meta.env.VITE_URL,\n iframe: false,\n groups: '',\n size: 'large',\n appTypeId: 0,\n } as ent_App,\n title: 'Bubble hinzufügen',\n size: 'large',\n addBubble: true,\n },\n hasModalCard: true,\n trapFocus: true,\n scroll: 'keep',\n animation: 'fade',\n events: {\n save: (result: ent_App) => {\n /** Add new app to grid */\n grid.categories[rowIndex].apps[columnIndex][0] = result;\n },\n },\n\n });\n };\n\n return { openAddBubbleModal };\n}\n","\n\n\n","\n\n\n\n\n","import { useProgrammatic } from '@oruga-ui/oruga-next';\nimport AdminEditCategory from '~/components/modals/AdminEditCategory.vue';\nimport { useGridStore } from '~/stores/grid';\nimport type { ent_AppGroup } from '~/api/generated';\n\nexport function useEditCategoryModal() {\n const oruga = useProgrammatic();\n const grid = useGridStore();\n\n const editCategoryModal = (group: ent_AppGroup, categoryIndex: number) => {\n const appsInCategory = grid.categories[categoryIndex].apps.flatMap(app => app);\n const isLastCategory = grid.categories.length === 1;\n\n oruga.oruga.modal.open({\n component: AdminEditCategory,\n props: {\n group,\n title: 'Kategorie bearbeiten',\n containsApps: !!appsInCategory.length,\n isLastCategory,\n },\n hasModalCard: true,\n trapFocus: true,\n scroll: 'keep',\n animation: 'fade',\n events: {\n save: (result: ent_AppGroup) => {\n /** Save new data to grid */\n grid.categories[categoryIndex].categoryData = result;\n },\n delete: () => {\n /** Remove category from grid */\n grid.categories.splice(categoryIndex, 1);\n },\n },\n });\n };\n\n return { editCategoryModal };\n}\n","import type { GridRow } from '~/stores/grid';\nimport { useGridStore } from '~/stores/grid';\nimport type { ent_AppGroup } from '~/api/generated';\n\nexport function useBuildGrid() {\n const grid = useGridStore();\n\n /** Build empty row */\n function buildEmptyRow(highestColumnNumber: number, fullWidth: boolean) {\n const gridRow: GridRow = { apps: [] };\n\n /** Fill rows with empty items */\n const safeNumberOfColumns = Math.max(\n highestColumnNumber,\n fullWidth ? grid.numberOfColumns : 0, // Optionally show at least n columns\n );\n for (let i = 0; i < safeNumberOfColumns; i++)\n gridRow.apps.push([]);\n return gridRow;\n }\n\n /** Build empty grid + fill with apps from db */\n function buildGrid(apps: ent_AppGroup[], editMode: boolean) {\n const allCategoryOrders = apps.map(category => category.order || 0) || [];\n const findHighestRowNumber = Math.max(...allCategoryOrders) + 1;\n\n /** Reset grid */\n grid.categories! = [];\n\n /** Build grid row by row and fill with data from db */\n for (let i = 0; i < findHighestRowNumber; i++) {\n const catData = apps[i];\n const findHighestAppOrder = Math.max(...catData?.edges?.apps?.map(app => app?.order || 0) || [0]);\n const gridRow = buildEmptyRow(findHighestAppOrder, editMode);\n\n /** Push empty rows to grid */\n grid.categories.push(gridRow);\n\n /** Fill category data to grid */\n const currentCat = grid.categories[i];\n currentCat.categoryData = catData;\n\n /** Fill apps to grid */\n catData?.edges?.apps?.forEach((app) => {\n currentCat.apps[app.order!] = [app];\n });\n }\n }\n\n return {\n buildEmptyRow,\n buildGrid,\n };\n}\n","import { useProgrammatic } from '@oruga-ui/oruga-next';\nimport AdminEditCategory from '~/components/modals/AdminEditCategory.vue';\nimport { useGridStore } from '~/stores/grid';\nimport { useBuildGrid } from '~/utils/buildGrid';\nimport type { ent_App, ent_AppGroup } from '~/api/generated';\n\nexport function useAddCategoryModal() {\n const oruga = useProgrammatic();\n const grid = useGridStore();\n const { buildEmptyRow } = useBuildGrid();\n\n const openAddCategoryModal = () => {\n oruga.oruga.modal.open({\n component: AdminEditCategory,\n props: {\n group: {\n title: 'Titel',\n iconName: 'i-fa6-solid-folder',\n url: import.meta.env.VITE_URL,\n groups: '',\n edges: {\n apps: [] as Array,\n },\n } as ent_AppGroup,\n title: 'Kategorie hinzufügen',\n },\n hasModalCard: true,\n trapFocus: true,\n scroll: 'keep',\n animation: 'fade',\n events: {\n save: (result: ent_AppGroup) => {\n const findCurrentRowLength = grid.categories[0]?.apps.length;\n const emptyRow = buildEmptyRow(findCurrentRowLength || grid.numberOfColumns, true);\n\n /** Save new row to grid */\n grid.categories.push({\n categoryData: result,\n apps: emptyRow.apps,\n });\n },\n },\n });\n };\n\n return { openAddCategoryModal };\n}\n","import { defineStore } from 'pinia';\nimport type { ent_AppGroup } from '~/api/generated';\n\nexport const useCacheStore = defineStore('cache', () => {\n const apps = ref([]);\n\n return {\n apps,\n };\n}, {\n persist: true,\n});\n","import { useGridStore } from '~/stores/grid';\nimport { useAppStore } from '~/stores/app';\nimport { useCacheStore } from '~/stores/cache';\nimport type { apps_payload } from '~/api/generated';\nimport { AppService } from '~/api/generated';\n\nexport function useSaveApps() {\n const grid = useGridStore();\n const appStore = useAppStore();\n const cache = useCacheStore();\n\n const router = useRouter();\n\n const isSaveAppsLoading = ref(false);\n const saveAppsError = ref('');\n\n /** get new data from server and update cache store */\n async function getAppDataFromServer() {\n const appData = await AppService.getApps(true);\n\n if (appData)\n cache.apps! = appData;\n }\n\n /** send local data/changes to api */\n async function saveApps() {\n isSaveAppsLoading.value = true;\n\n AppService.updateAll({\n categories: grid.categories.map((category) => {\n return {\n /** send categoryData object with empty edges */\n categoryData: { ...category.categoryData, edges: {} },\n /** get apps from arrays and remove empty items */\n apps: category.apps\n .map((appArray, index) => appArray.length ? { ...appArray[0], order: index } : null)\n .filter(appArray => appArray) as apps_payload[],\n };\n }),\n })\n .then(() => {\n appStore.toggleAdmin();\n router.push('/');\n })\n .catch(() => {\n /** show error message */\n saveAppsError.value = 'Fehler. Die Änderungen konnten nicht gespeichert werden.';\n })\n .finally(() => {\n isSaveAppsLoading.value = false;\n });\n }\n\n return {\n isSaveAppsLoading,\n saveAppsError,\n getAppDataFromServer,\n saveApps,\n };\n}\n","\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n","\n\n\n","\n\n\n\n\n","\n\n\n\n\n","\n\n\n","\n\n\n","const __pages_import_0__ = () => import(\"/src/pages/waiting.vue\");\nconst __pages_import_1__ = () => import(\"/src/pages/sso.vue\");\nconst __pages_import_2__ = () => import(\"/src/pages/restricted.vue\");\nconst __pages_import_3__ = () => import(\"/src/pages/reload.vue\");\nconst __pages_import_4__ = () => import(\"/src/pages/logout.vue\");\nconst __pages_import_5__ = () => import(\"/src/pages/login.vue\");\nimport __pages_import_6__ from \"/src/pages/index.vue\";\nconst __pages_import_7__ = () => import(\"/src/pages/help.vue\");\nconst __pages_import_8__ = () => import(\"/src/pages/extern.vue\");\nconst __pages_import_9__ = () => import(\"/src/pages/admin.vue\");\n\nconst routes = [{\"name\":\"waiting\",\"path\":\"/waiting\",\"component\":__pages_import_0__,\"props\":true,\"meta\":{\"layout\":\"simple\"}},{\"name\":\"sso\",\"path\":\"/sso\",\"component\":__pages_import_1__,\"props\":true,\"meta\":{\"layout\":\"simple\"}},{\"name\":\"restricted\",\"path\":\"/restricted\",\"component\":__pages_import_2__,\"props\":true,\"meta\":{\"layout\":\"simple\"}},{\"name\":\"reload\",\"path\":\"/reload\",\"component\":__pages_import_3__,\"props\":true,\"meta\":{\"layout\":\"simple\"}},{\"name\":\"logout\",\"path\":\"/logout\",\"component\":__pages_import_4__,\"props\":true},{\"name\":\"login\",\"path\":\"/login\",\"component\":__pages_import_5__,\"props\":true},{\"name\":\"index\",\"path\":\"/\",\"component\":__pages_import_6__,\"props\":true},{\"name\":\"help\",\"path\":\"/help\",\"component\":__pages_import_7__,\"props\":true},{\"name\":\"extern\",\"path\":\"/extern\",\"component\":__pages_import_8__,\"props\":true,\"meta\":{\"layout\":\"extern\"}},{\"name\":\"admin\",\"path\":\"/admin\",\"component\":__pages_import_9__,\"props\":true}];\n\nexport default routes;","import { setupLayouts } from 'virtual:generated-layouts';\nimport { createRouter, createWebHistory } from 'vue-router';\nimport clickOutside from './directives/click-outside';\nimport App from './App.vue';\nimport generatedRoutes from '~pages';\n\nimport '@unocss/reset/tailwind.css';\nimport './styles/main.css';\nimport 'uno.css';\nimport { OpenAPI } from '~/api/generated';\n\nconst app = createApp(App);\n\n// setup up pages with layouts\nconst routes = setupLayouts(generatedRoutes);\nconst router = createRouter({ history: createWebHistory(), routes });\napp.use(router);\napp.directive('click-outside', clickOutside);\n\n// overwrite default base url\nOpenAPI.BASE = '';\n\n// install all modules under `modules/`\nconst glob: Record = import.meta.glob('./modules/*.ts', { eager: true });\nconst obj = Object.values(glob);\nobj.map((i: ImportMetaEnv) => i.install?.({ app, router, routes }) as object);\n\napp.mount('#app');\n"],"file":"assets/index-gchdfKhc.js"}