{"version":3,"mappings":"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","names":["Loading","defineAsyncComponent","ConfirmationModal","__vitePreload","NotificationOverlay","useGlobalStore","defineStore","value","type","desc","title","description","buttonConfirmation","buttonConfirmationText","buttonCancel","buttonCancelText","icon","callback","setup","url","instance","axios","config","auth","useAuthStore","error","res","global","data","msg","_b","_a","_d","_c","errorDesc","_e","_f","api","removeUser","router","getUser","getToken","state","username","password","resolve","reject","payload","useSideMenuStore","checkRole","e","checkView","cloneDeep","toRaw","routes","createRouter","createWebHistory","to","from","savedPosition","next","sideMenuStore","meta","defineRule","required","integer","min","configure","localize","id","setLocale","app","createApp","App","createPinia"],"sources":["../../src/App.vue","../../src/stores/global.ts","../../src/utils/api.ts","../../src/stores/modules/auth.ts","../../src/stores/side-menu.ts","../../src/router/index.ts","../../src/main.ts"],"sourcesContent":["\n\n\n","import {defineStore} from \"pinia\";\nimport {Icon} from \"../base-components/Lucide/Lucide.vue\";\n\nimport {Variant} from \"../utils/colors\";\n\ninterface Modal {\n show?: boolean;\n type?: Variant;\n title?: string;\n description?: string;\n buttonConfirmation?: boolean;\n buttonConfirmationText?: string;\n buttonCancel?: boolean;\n buttonCancelText?: string;\n icon?: Icon;\n callback?: Function;\n}\n\ninterface Notification {\n message?: string;\n type?: Variant;\n show: boolean;\n description?: string;\n}\n\nexport interface LoadingState {\n loading: boolean;\n modal: Modal;\n notification: Notification;\n}\n\nexport const useGlobalStore = defineStore(\"global\", {\n state: (): LoadingState => ({\n loading: false,\n modal: {\n show: false,\n type: 'primary',\n },\n notification: {\n show: false,\n type: 'success',\n },\n }),\n actions: {\n setNotification(value?: string, type?: Variant, desc?: string) {\n if (value !== this.notification.message)\n this.notification.show = false\n\n setTimeout(() => {\n if (value) {\n this.notification.message = value\n this.notification.description = desc\n this.notification.type = type\n this.notification.show = true\n }\n })\n },\n showModal(\n {\n type = 'success',\n title = 'Konfirmasi',\n description = '',\n buttonConfirmation = true,\n buttonConfirmationText = 'OK',\n buttonCancel = true,\n buttonCancelText = 'Batal',\n icon,\n callback,\n }: Modal\n ) {\n this.modal = {\n show: true,\n type,\n title,\n description,\n buttonConfirmation,\n buttonConfirmationText,\n buttonCancel,\n buttonCancelText,\n icon,\n callback,\n }\n },\n hideModal() {\n this.modal.show = false\n },\n },\n});\n","import axios from \"axios\"\nimport {useAuthStore} from \"../stores/modules/auth\";\nimport {useGlobalStore} from \"../stores/global\";\n\nconst setup = (url: string) => {\n const instance = axios.create({\n baseURL: url,\n })\n\n instance.interceptors.request.use(function (config: any) {\n const auth = useAuthStore();\n\n if (auth && auth.token)\n config.headers.Authorization = 'Bearer ' + auth.token\n\n return config\n }, function (error: any) {\n return Promise.reject(error)\n })\n\n instance.interceptors.response.use((res: any) => {\n const global = useGlobalStore()\n\n const { data } = res\n\n const msg = res.status === 200 && !data.result && data.message\n\n if (msg) global.setNotification(msg, 'success')\n\n return res.data\n }, function (error: any) {\n const global = useGlobalStore()\n\n const msg = error?.response?.data?.message || error?.response?.data?.error\n\n if (msg) {\n const errorDesc = (typeof error.response.data?.error === 'string' && error.response.data?.error) || ''\n global.setNotification(msg, 'danger', msg === errorDesc ? '' : errorDesc)\n }\n else if (typeof error.code === 'string') {\n global.setNotification(error.message || error.code, 'danger')\n }\n\n return Promise.reject(error?.response)\n })\n\n return instance\n}\n\nexport default setup(import.meta.env.VITE_API)\n","import api from '../../utils/api'\nimport {defineStore} from \"pinia\";\nimport router from \"../../router\";\n\nimport {PasswordRequest, UserResponse} from '../../utils/interfaces/user'\nimport {useGlobalStore} from \"../global\";\n\ninterface AuthState {\n user?: UserResponse;\n token?: string;\n roleLabel: any;\n}\n\nconst removeUser = () => {\n localStorage.removeItem('skip-user')\n localStorage.removeItem('skip-token')\n\n router.push('/login')\n}\n\nconst getUser = (): UserResponse | undefined => {\n const {'skip-user': value}: Storage = localStorage\n\n try {\n return value ? JSON.parse(value) : null\n } catch (e: any) {\n removeUser()\n }\n};\n\nconst getToken = () => {\n return localStorage.getItem('skip-token') || ''\n}\n\nexport const useAuthStore = defineStore(\"auth\", {\n state: (): AuthState => ({\n user: getUser(),\n token: getToken(),\n roleLabel: {\n 'admin': 'Admin',\n 'guru': 'Guru',\n 'guru-bk': 'Guru BK',\n 'tata-usaha': 'Tata Usaha',\n 'staff-ict': 'Staff ICT',\n 'siswa': 'Siswa',\n },\n }),\n getters: {\n isPegawai: state => ['guru', 'staff-ict', 'guru-bk', 'tata-usaha'].includes(state.user?.role || ''),\n isStaff: state => ['admin', 'staff-ict', 'guru-bk'].includes(state.user?.role || ''),\n isAdmin: state => ['admin', 'staff-ict'].includes(state.user?.role || ''),\n isSiswa: state => ['siswa'].includes(state.user?.role || ''),\n canView: state => state.user?.can_view === true,\n canAdd: state => state.user?.can_add === true,\n },\n actions: {\n login(username: string, password: string) {\n return new Promise((resolve, reject) => {\n const global = useGlobalStore()\n global.loading = true\n api.post('/login', {\n username,\n password,\n }).then((res: any) => {\n this.user = res.data.user\n this.token = res.data.token\n\n localStorage.setItem(\"skip-user\", JSON.stringify(res.data.user));\n localStorage.setItem(\"skip-token\", res.data.token);\n resolve(res)\n }).catch(reject).finally(() => {\n global.loading = false\n })\n })\n },\n logout() {\n this.user = undefined\n this.token = undefined\n localStorage.removeItem(\"skip-user\")\n localStorage.removeItem(\"skip-token\")\n\n router.push('/login')\n },\n getMyData() {\n if (!this.token) return\n api.get('/me').then((res: any) => {\n this.user = res\n localStorage.setItem(\"skip-user\", JSON.stringify(res));\n })\n },\n updateProfile(payload: UserResponse) {\n const global = useGlobalStore()\n global.loading = true\n return new Promise((resolve, reject) => {\n api.patch('/profile', payload).then(resolve).catch(reject).finally(() => {\n global.loading = false\n })\n })\n },\n updatePassword(payload: PasswordRequest) {\n const global = useGlobalStore()\n global.loading = true\n return new Promise((resolve, reject) => {\n api.patch('/password', payload).then(resolve).catch(reject).finally(() => {\n global.loading = false\n })\n })\n },\n },\n});\n","import {defineStore} from \"pinia\";\nimport {Icon} from \"../base-components/Lucide/Lucide.vue\";\nimport {useAuthStore} from \"./modules/auth\";\nimport {Role} from \"../utils/interfaces/user\";\nimport {toRaw} from \"vue\";\nimport cloneDeep from \"lodash-es/cloneDeep\";\n\nexport interface Menu {\n icon: Icon;\n title: string;\n pageName?: string;\n subMenu?: Menu[];\n ignore?: boolean;\n role?: string[];\n view?: boolean;\n}\n\nexport interface SideMenuState {\n expand: boolean;\n menu: Array;\n}\n\nexport const useSideMenuStore = defineStore(\"sideMenu\", {\n state: (): SideMenuState => ({\n expand: true,\n menu: [\n {\n icon: \"LogIn\",\n pageName: \"login\",\n title: \"Login\",\n role: ['guest'],\n },\n {\n icon: \"LineChart\",\n pageName: \"dashboard\",\n title: \"Dashboard\",\n role: ['admin', 'staff-ict', 'guru-bk', 'siswa'],\n },\n {\n icon: \"Home\",\n pageName: \"dashboard\",\n title: \"Home\",\n role: ['guru', 'tata-usaha'],\n },\n {\n icon: \"ListOrdered\",\n pageName: \"poin-siswa/index\",\n title: \"Poin Siswa\",\n role: ['admin', 'staff-ict', 'guru', 'guru-bk'],\n view: true,\n },\n {\n icon: \"FileText\",\n title: \"Laporan\",\n subMenu: [\n {\n icon: \"ChevronRight\",\n pageName: \"report\",\n title: \"Rekap\",\n role: ['admin', 'staff-ict', 'guru', 'guru-bk', 'tata-usaha'],\n view: true,\n },\n {\n icon: \"ChevronRight\",\n pageName: \"report-personal\",\n title: \"Personal\",\n role: ['admin', 'staff-ict', 'guru', 'guru-bk', 'tata-usaha'],\n view: true,\n },\n ],\n },\n {\n icon: \"AlignCenterVerticalIcon\",\n pageName: \"bandingkan\",\n title: \"Bandingkan\",\n role: ['admin', 'staff-ict', 'guru-bk'],\n view: true,\n },\n {\n icon: \"BookCopy\",\n pageName: \"siswa\",\n title: \"Siswa\",\n role: ['admin', 'staff-ict'],\n },\n {\n icon: \"UserCircle2\",\n pageName: \"pegawai\",\n title: \"Pegawai\",\n role: ['admin', 'staff-ict'],\n },\n {\n icon: \"Presentation\",\n pageName: \"kelas\",\n title: \"Kelas\",\n role: ['admin', 'staff-ict'],\n },\n {\n icon: \"GraduationCap\",\n pageName: \"jurusan\",\n title: \"Jurusan\",\n role: ['admin', 'staff-ict'],\n },\n {\n icon: \"CalendarDays\",\n pageName: \"tahun-ajar\",\n title: \"Tahun Ajar\",\n role: ['admin', 'staff-ict'],\n },\n {\n icon: \"Binary\",\n pageName: \"data-poin\",\n title: \"Master Poin\",\n role: ['admin', 'staff-ict', 'guru-bk'],\n },\n {\n icon: \"DatabaseBackup\",\n pageName: \"sync\",\n title: \"SITI\",\n role: ['admin', 'staff-ict'],\n },\n ],\n }),\n getters: {\n activeMenu: (state) => {\n const auth = useAuthStore()\n\n const checkRole = (e: Menu) => {\n if (e.subMenu) return e.subMenu.length\n return e.role ? e.role.includes(auth?.user?.role || '') : true\n }\n\n const checkView = (e: Menu) => {\n if (e.subMenu) return e.subMenu.length\n return e.view ? auth.canView : true\n }\n\n return cloneDeep(toRaw(state.menu)).map((e:any) => {\n if (e === \"divider\") return e\n if (e.subMenu) {\n e.subMenu = e.subMenu?.filter(checkRole).filter(checkView)\n }\n return e\n }).filter((e:any) => {\n if (e === \"divider\") return true\n return checkRole(e) && checkView(e)\n })\n }\n },\n});\n","import { createRouter, createWebHistory } from \"vue-router\";\nimport {useAuthStore} from \"../stores/modules/auth\";\nimport {useSideMenuStore} from \"../stores/side-menu\";\n\nconst routes = [\n {\n path: \"/\",\n component: () => import(\"../layouts/SideMenu/SideMenu.vue\"),\n children: [\n {\n path: \"/\",\n name: \"dashboard\",\n component: () => import(\"../pages/Dashboard.vue\"),\n meta: {\n breadcrumbs: ['home'],\n }\n },\n {\n path: \"pegawai\",\n name: \"pegawai\",\n component: () => import(\"../pages/Pegawai/PegawaiIndex.vue\"),\n meta: {\n role: ['admin', 'staff-ict'],\n breadcrumbs: ['home', 'Pegawai'],\n },\n },\n {\n path: \"siswa\",\n name: \"siswa\",\n component: () => import(\"../pages/Siswa/SiswaIndex.vue\"),\n meta: {\n role: ['admin', 'staff-ict'],\n breadcrumbs: ['home', 'Siswa'],\n },\n },\n {\n path: \"kelas\",\n name: \"kelas\",\n component: () => import(\"../pages/Kelas/KelasIndex.vue\"),\n meta: {\n role: ['admin', 'staff-ict'],\n breadcrumbs: ['home', 'Kelas'],\n },\n },\n {\n path: \"kelas/:kelas_id/siswa\",\n name: \"kelas-siswa\",\n component: () => import(\"../pages/Kelas/KelasSiswaIndex.vue\"),\n meta: {\n role: ['admin', 'staff-ict'],\n breadcrumbs: ['home', 'Kelas', 'List Siswa'],\n },\n },\n {\n path: \"kelas/:kelas_id/siswa/:siswa_kelas_id\",\n name: \"kelas-siswa-log\",\n component: () => import(\"../pages/Kelas/KelasSiswaLog.vue\"),\n meta: {\n role: ['admin', 'staff-ict', 'guru-bk', 'guru'],\n breadcrumbs: ['home', 'Siswa', 'Riwayat Poin'],\n },\n },\n {\n path: \"kelas/:kelas_id/siswa/add\",\n name: \"kelas-siswa-add\",\n component: () => import(\"../pages/Kelas/KelasSiswaForm.vue\"),\n meta: {\n role: ['admin', 'staff-ict'],\n },\n },\n {\n path: \"tahun-ajar\",\n name: \"tahun-ajar\",\n component: () => import(\"../pages/TahunAjar/TahunAjarIndex.vue\"),\n meta: {\n role: ['admin', 'staff-ict'],\n breadcrumbs: ['home', 'Tahun Ajar'],\n },\n },\n {\n path: \"jurusan\",\n name: \"jurusan\",\n component: () => import(\"../pages/Jurusan/JurusanIndex.vue\"),\n meta: {\n role: ['admin', 'staff-ict'],\n breadcrumbs: ['home', 'Jurusan'],\n },\n },\n {\n path: \"data-poin\",\n name: \"data-poin\",\n component: () => import(\"../pages/DataPoin/DataPoinIndex.vue\"),\n meta: {\n role: ['admin', 'staff-ict', 'guru-bk'],\n breadcrumbs: ['home', 'Poin'],\n },\n },\n {\n path: \"add-poin\",\n name: \"add-poin\",\n component: () => import(\"../pages/Poin/AddPoin.vue\"),\n meta: {\n role: ['staff-ict', 'guru', 'guru-bk', 'tata-usaha'],\n breadcrumbs: ['home', 'Lapor'],\n add: true,\n },\n },\n {\n path: \"poin/log\",\n name: \"poin-log\",\n component: () => import(\"../pages/Poin/PoinLogIndex.vue\"),\n meta: {\n role: ['admin', 'staff-ict', 'guru', 'guru-bk', 'tata-usaha'],\n breadcrumbs: ['home', 'Dashboard', 'Aktivitas Poin'],\n view: true,\n },\n },\n {\n path: \"poin/siswa\",\n name: \"poin-siswa/preview\",\n component: () => import(\"../pages/Poin/PoinSiswaPreview.vue\"),\n meta: {\n role: ['admin', 'staff-ict', 'guru', 'guru-bk', 'tata-usaha'],\n breadcrumbs: ['home', 'Dashboard', 'Data Poin Siswa'],\n view: true,\n },\n },\n {\n path: \"poin/siswa/peringatan\",\n name: \"poin-siswa/peringatan/preview\",\n component: () => import(\"../pages/Poin/PoinSiswaPreview.vue\"),\n meta: {\n role: ['admin', 'staff-ict', 'guru', 'guru-bk', 'tata-usaha'],\n breadcrumbs: ['home', 'Dashboard', 'Data Poin Siswa', 'Peringatan'],\n view: true,\n },\n },\n {\n path: \"poin/type\",\n name: \"poin-type\",\n component: () => import(\"../pages/Poin/PoinTypeIndex.vue\"),\n meta: {\n role: ['admin', 'staff-ict', 'guru', 'guru-bk', 'tata-usaha'],\n breadcrumbs: ['home', 'Dashboard', 'Data Jumlah Poin'],\n view: true,\n },\n },\n {\n path: \"login/log\",\n name: \"login-log\",\n component: () => import(\"../pages/LoginLog/LoginLogIndex.vue\"),\n meta: {\n role: ['admin', 'staff-ict'],\n breadcrumbs: ['home', 'Dashboard', 'Aktivitas Login'],\n },\n },\n {\n path: \"poin-siswa\",\n name: \"poin-siswa/index\",\n component: () => import(\"../pages/PoinSiswa/PoinSiswaIndex.vue\"),\n meta: {\n role: ['admin', 'staff-ict', 'guru', 'guru-bk', 'tata-usaha'],\n breadcrumbs: ['home' ,'Poin Siswa'],\n view: true,\n },\n },\n {\n path: \"report\",\n name: \"report\",\n component: () => import(\"../pages/Report/ReportKelasForm.vue\"),\n meta: {\n role: ['admin', 'staff-ict', 'guru', 'guru-bk', 'tata-usaha'],\n breadcrumbs: ['home', 'Laporan', 'Rekap'],\n view: true,\n },\n },\n {\n path: \"report/personal\",\n name: \"report-personal\",\n component: () => import(\"../pages/Report/ReportSiswaForm.vue\"),\n meta: {\n role: ['admin', 'staff-ict', 'guru', 'guru-bk', 'tata-usaha'],\n breadcrumbs: ['home', 'Laporan', 'Personal'],\n view: true,\n },\n },\n {\n path: \"/report/personal/:nis\",\n name: \"report-personal-guest\",\n component: () => import(\"../pages/Report/ReportSiswaFormGuest.vue\"),\n meta: {\n guest: true,\n breadcrumbs: ['home', 'Laporan', 'Personal'],\n view: true,\n },\n },\n {\n path: \"bandingkan\",\n name: \"bandingkan\",\n component: () => import(\"../pages/Compare/CompareForm.vue\"),\n meta: {\n role: ['admin', 'staff-ict', 'guru-bk'],\n breadcrumbs: ['home', 'Bandingkan'],\n view: true,\n },\n },\n {\n path: \"sync\",\n name: \"sync\",\n component: () => import(\"../pages/Sync/SyncIndex.vue\"),\n meta: {\n role: ['admin', 'staff-ict'],\n breadcrumbs: ['home', 'Sync'],\n },\n },\n ],\n },\n {\n path: \"/login\",\n name: \"login\",\n component: () => import(\"../pages/Login.vue\"),\n meta: {\n auth: false,\n },\n },\n];\n\nconst router = createRouter({\n history: createWebHistory(),\n routes,\n scrollBehavior(to, from, savedPosition) {\n return savedPosition || { left: 0, top: 0 };\n },\n});\n\nrouter.beforeEach((to, from, next) => {\n const auth = useAuthStore();\n\n if (!to.meta.guest) {\n if (!auth.token && to.meta.auth !== false)\n return next('/login')\n if (auth.token && to.meta.auth === false)\n return next('/')\n } else {\n if (!auth.token)\n auth.user = {\n username: 'guest',\n role: 'guest',\n nama: 'Guest',\n }\n }\n\n if (to.meta.view && !auth.canView)\n return next('/')\n\n if (to.meta.add && !auth.canAdd)\n return next('/')\n\n const sideMenuStore = useSideMenuStore()\n\n sideMenuStore.expand = to.meta.expand !== false\n\n const {meta} = to\n\n // @ts-ignore\n if (meta?.role && !meta?.role?.includes(auth.user?.role))\n return next('/')\n\n next()\n})\n\nexport default router;\n","import { createApp } from 'vue'\nimport { createPinia } from \"pinia\";\nimport App from \"./App.vue\";\nimport router from \"./router\";\nimport \"./assets/css/app.css\";\n\nimport {defineRule, configure} from 'vee-validate';\nimport {required, integer, min} from '@vee-validate/rules';\nimport {localize, setLocale} from '@vee-validate/i18n';\nimport id from '@vee-validate/i18n/dist/locale/id.json';\n\ndefineRule('required', required);\ndefineRule('integer', integer);\ndefineRule('min', min);\n\nconfigure({\n// @ts-ignore\n generateMessage: localize({\n id: {\n code: 'id',\n messages: {\n ...id.messages,\n }\n },\n }),\n});\nsetLocale('id')\n\nconst app = createApp(App)\n\napp.use(router)\napp.use(createPinia())\napp.mount('#app')\n"],"file":"assets/index-726f8195.js"}