{"version":3,"sources":["webpack:///./src/setup/plugin-setup.js","webpack:///./src/store/generic/mutations/result-status.js","webpack:///./src/setup/apollo-setup.js","webpack:///./src/store/core/state/temp.js","webpack:///./src/store/core/state/user.js","webpack:///./src/store/core/state/index.js","webpack:///./src/store/core/getters/temp.js","webpack:///./src/store/core/getters/index.js","webpack:///./src/store/core/mutations/temp.js","webpack:///./src/store/core/mutations/user.js","webpack:///./src/store/core/mutations/index.js","webpack:///./src/store/core/actions/vuexy-components-actions.js","webpack:///./src/store/core/actions/vuexy-ui-actions.js","webpack:///./src/store/core/actions/data.js","webpack:///./src/store/core/actions/server.js","webpack:///./src/store/core/actions/temp.js","webpack:///./src/store/core/actions/index.js","webpack:///./src/store/dev-tool/state/temp.js","webpack:///./src/store/dev-tool/state/user.js","webpack:///./src/store/dev-tool/state/index.js","webpack:///./src/store/dev-tool/getters/index.js","webpack:///./src/store/dev-tool/mutations/temp.js","webpack:///./src/store/dev-tool/mutations/index.js","webpack:///./src/store/dev-tool/actions/index.js","webpack:///./src/store/dev-tool/index.js","webpack:///./src/store/index.js","webpack:///./src/setup/axios-setup.js","webpack:///./src/setup/i18n-setup.js","webpack:///./src/setup/vee-validate-setup.js","webpack:///./src/setup/filter-setup.js","webpack:///./src/setup/theme-setup.js","webpack:///./src/setup/global-components-setup.js"],"names":["Vue","use","lineClamp","Clipboard","setError","state","payload","objectBulkCheckProps","createPreviousStateCopy","error","success","processing","clearError","setSuccess","setProcessing","object","propList","Array","isArray","length","result","every","prop","Object","prototype","hasOwnProperty","call","previous","JSON","parse","stringify","VueApollo","httpLink","createHttpLink","uri","graphQlUrl","httpLinkPrisma2","graphQlUrlPrisma2","middlewareLink","ApolloLink","operation","forward","localStorage","getItem","setContext","headers","authorization","app","process","appname","store","dispatch","errorLink","onError","graphQLErrors","networkError","console","log","err","code","message","link","concat","linkPrisma2","cache","InMemoryCache","apolloClient","ApolloClient","split","getContext","clientName","apolloProvider","defaultClient","userDefaults","uid","displayName","about","photoURL","require","status","userRole","API_SERVER","AUTH_SERVER","currentLocale","AppActiveUser","bodyOverlay","isVerticalNavMenuActive","mainLayoutType","themeConfig","navbarSearchAndPinList","reduceButton","sidebarCollapsed","verticalNavMenuWidth","verticalNavMenuItemsMin","scrollY","starredPages","data","filter","page","is_bookmarked","theme","themePrimaryColor","colors","primary","windowWidth","is_touch_device","prefixes","mq","query","window","matchMedia","matches","DocumentTouch","join","currentUser","profile","flatmap","mapRefs","user","temp","windowBreakPoint","scrollbarTag","generic","TOGGLE_IS_VERTICAL_NAV_MENU_ACTIVE","value","TOGGLE_REDUCE_BUTTON","val","UPDATE_MAIN_LAYOUT_TYPE","UPDATE_VERTICAL_NAV_MENU_ITEMS_MIN","UPDATE_VERTICAL_NAV_MENU_WIDTH","width","UPDATE_STARRED_PAGE","index","findIndex","item","url","push","splice","ARRANGE_STARRED_PAGES_LIMITED","list","starredPagesMore","slice","ARRANGE_STARRED_PAGES_MORE","downToUp","lastItemInStarredLimited","starredPagesLimited","map","i","indexOf","TOGGLE_CONTENT_OVERLAY","UPDATE_PRIMARY_COLOR","UPDATE_THEME","UPDATE_WINDOW_WIDTH","UPDATE_WINDOW_SCROLL_Y","UPDATE_USER_INFO","userInfo","keys","property","setItem","changeLanguage","$i18n","locale","appCrash","location","pathname","setUser","id","setProfile","student","removeUserState","removeUserProfile","updateVerticalNavMenuWidth","commit","updateStarredPage","arrangeStarredPagesLimited","arrangeStarredPagesMore","toggleContentOverlay","updateTheme","purgeStoreState","context","checkAPIServer","axios","get","rootState","response","invokeLocation","root","isAxiosError","title","text","color","setLanguage","initializeData","clearStates","vuexyComponentActions","vuexyUIActions","server","developer","active","setDevData","name","setDevModeOn","setDevModeOff","removeDevData","namespaced","getters","getField","mutations","updateField","actions","Vuex","strict","Store","modules","Dev","Student","StudentUnitTest","User","Examination","Classroom","LiveClass","StudentAssignment","CourseFaq","WebBoard","WebBoardReply","StudentUnitLearn","PrivateMessage","PrivateMessageReply","ClassSection","StudentEnrollDetail","CourseOutlineRegistration","Notification","AcademicPeriodConfig","Chat","StudentEnroll","AdvisorOnlineSchedule","InfoGroup","InfoTopic","SystemConfig","domain","instance","create","interceptors","request","config","VueI18n","messages","en","th","localeOptions","x","defaultLocale","i18n","fallbackLocale","rule","component","ValidationProvider","ValidationObserver","rules","extend","loadLocale","then","localize","validate","other","params","isTarget","toString","arr","capitalized_array","forEach","word","capitalized","charAt","toUpperCase","replacer","limit","substring","tail","is24HrFormat","moment","format","fullDate","String","local","showYear","regx","exec","replace","num","toFixed","Vuesax","rtl","VueClipboard","VueHammer","VxTooltip","VxCard","VxList","VxBreadcrumb","FeatherIcon","VxInputGroup","vSelect","props","components","default","Deselect","render","createElement","icon","svgClasses","OpenIndicator"],"mappings":"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","file":"js/app~3e511cab.0e4c82e8.js","sourcesContent":["import Vue from 'vue'\nimport lineClamp from 'v-line-clamp'\nimport Clipboard from 'vue-clipboard2'\n\n\nVue.use(lineClamp, {\n // plugin options\n})\nVue.use(Clipboard)\n","export const setError = (state, payload) => {\n if (state && payload) {\n if (objectBulkCheckProps(state, ['error', 'success', 'processing'])) {\n createPreviousStateCopy(state);\n state.error = payload;\n state.success = null;\n state.processing = false;\n }\n }\n}\n\nexport const clearError = (state) => {\n if (state) {\n if (objectBulkCheckProps(state, ['error'])) {\n state.error = null;\n }\n }\n}\n\nexport const setSuccess = (state, payload) => {\n if (state) {\n if (objectBulkCheckProps(state, ['error', 'success', 'processing'])) {\n createPreviousStateCopy(state);\n state.error = null;\n state.success = payload;\n state.processing = false;\n }\n }\n}\n\nexport const setProcessing = (state, payload) => {\n if (state) {\n if (objectBulkCheckProps(state, ['error', 'success', 'processing'])) {\n createPreviousStateCopy(state);\n state.processing = payload;\n }\n }\n}\n\nfunction objectBulkCheckProps(object, propList) {\n if (object && Array.isArray(propList)) {\n if (propList.length > 0) {\n const result = propList\n .every(prop => Object.prototype.hasOwnProperty.call(object, prop));\n return result;\n }\n }\n return null;\n}\n\nfunction createPreviousStateCopy(state) {\n let previous = JSON.parse(JSON.stringify(state));\n delete state.previous;\n state.previous = previous;\n}\n","import Vue from 'vue'\nimport VueApollo from 'vue-apollo';\nimport {ApolloClient} from 'apollo-client';\nimport {ApolloLink} from 'apollo-link';\nimport {createHttpLink} from 'apollo-link-http';\nimport {onError} from 'apollo-link-error';\nimport {InMemoryCache} from 'apollo-cache-inmemory';\nimport {graphQlUrl, graphQlUrlPrisma2} from '@/constants/config';\nimport store from '@/store';\n\nVue.use(VueApollo);\n\nconst httpLink = createHttpLink({\n uri: graphQlUrl,\n // fetchOptions: {\n // credentials: 'include',\n // },\n});\n\nconst httpLinkPrisma2 = createHttpLink({\n uri: graphQlUrlPrisma2\n});\n\n\nconst middlewareLink = new ApolloLink((operation, forward) => {\n if (!localStorage.getItem('token') || localStorage.getItem('token') === \" \") {\n store.dispatch('User/signOut');\n } else {\n operation.setContext({\n headers: {\n authorization: localStorage.getItem('token'),\n app: process.env.VUE_APP_APP_TYPE || \"student\",\n appname: \"xstudi\"\n },\n });\n }\n\n return forward(operation);\n});\n\nconst errorLink = onError(({graphQLErrors, networkError}) => {\n if (networkError) {\n console.log('[networkError', networkError); // eslint-disable-line no-console\n }\n\n if (graphQLErrors) {\n for (const err of graphQLErrors) {\n if(err){\n if (err.code === 401 || err.message === 'AuthenticationError') {\n store.dispatch('User/signOut');\n }\n }\n }\n }\n});\n\nconst link = errorLink.concat(middlewareLink.concat(httpLink));\nconst linkPrisma2 = errorLink.concat(middlewareLink.concat(httpLinkPrisma2));\n\n// Cache implementation\nconst cache = new InMemoryCache();\n\n// Create the apollo client\nexport const apolloClient = new ApolloClient({\n link: ApolloLink.split(\n operation => operation.getContext().clientName === \"Prisma2\",\n linkPrisma2,\n link\n ),\n cache\n});\n\nexport const apolloProvider = new VueApollo({\n defaultClient: apolloClient,\n});\n","/*=========================================================================================\n File Name: state.js\n Description: Vuex Store - state\n ----------------------------------------------------------------------------------------\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\n Author: Pixinvent\n Author URL: http://www.themeforest.net/user/pixinvent\n==========================================================================================*/\n\nimport navbarSearchAndPinList from \"@/layouts/components/navbar/navbarSearchAndPinList\";\nimport themeConfig from \"@/../themeConfig.js\";\nimport colors from \"@/../themeConfig.js\";\n\n\n// /////////////////////////////////////////////\n// Variables\n// /////////////////////////////////////////////\n\nconst userDefaults = {\n uid: 0, // From Auth\n displayName: \"John Doe\", // From Auth\n about: \"Dessert chocolate cake lemon drops jujubes. Biscuit cupcake ice cream bear claw brownie brownie marshmallow.\",\n photoURL: require(\"@/assets/images/portrait/small/avatar-s-11.jpg\"), // From Auth\n status: \"online\",\n userRole: \"admin\"\n};\n\n// /////////////////////////////////////////////\n// State\n// /////////////////////////////////////////////\n\nexport const state = {\n status : {\n processing : false,\n error : false,\n success : false,\n previous : null,\n },\n API_SERVER : process.env.VUE_APP_API_SERVER,\n AUTH_SERVER : process.env.VUE_APP_AUTH_SERVER,\n currentLocale : \"th\",\n AppActiveUser : userDefaults,\n bodyOverlay : false,\n isVerticalNavMenuActive : true,\n mainLayoutType : themeConfig.mainLayoutType || \"vertical\",\n navbarSearchAndPinList : navbarSearchAndPinList,\n reduceButton : themeConfig.sidebarCollapsed,\n verticalNavMenuWidth : \"default\",\n verticalNavMenuItemsMin : false,\n scrollY : 0,\n starredPages : navbarSearchAndPinList[\"pages\"].data.filter((page) => page.is_bookmarked),\n theme : themeConfig.theme || \"light\",\n themePrimaryColor : colors.primary,\n\n // Can be used to get current window with\n // Note: Above breakpoint state is for internal use of sidebar & navbar component\n windowWidth: null,\n is_touch_device : is_touch_device()\n};\n\nexport default state\n\n\nfunction is_touch_device() {\n var prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\n var mq = function(query) {\n return window.matchMedia(query).matches;\n }\n\n if (('ontouchstart' in window) || window.DocumentTouch) {\n return true;\n }\n\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\n // https://git.io/vznFH\n var query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\n return mq(query);\n}\n","export default {\n currentUser: localStorage.getItem('user') != null ? JSON.parse(localStorage.getItem('user')) : null,\n profile: null,\n};\n","import temp from \"./temp\";\nimport user from \"./user\";\n\nexport default {\n flatmap: {},\n mapRefs: {},\n ...user,\n ...temp,\n}\n","/*=========================================================================================\n File Name: getters.js\n Description: Vuex Store - getters\n ----------------------------------------------------------------------------------------\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\n Author: Pixinvent\n Author URL: http://www.themeforest.net/user/pixinvent\n==========================================================================================*/\n\n// added so later we can keep breakpoint in sync automatically using this config file\n// import tailwindConfig from \"../../tailwind.config.js\"\n\n\n// COMPONENT\n // vx-autosuggest\n\t// starredPages: state => state.navbarSearchAndPinList.data.filter((page) => page.highlightAction),\nexport function windowBreakPoint (state) {\n\n // This should be same as tailwind. So, it stays in sync with tailwind utility classes\n if (state.windowWidth >= 1200) return \"xl\"\n else if (state.windowWidth >= 992) return \"lg\"\n else if (state.windowWidth >= 768) return \"md\"\n else if (state.windowWidth >= 576) return \"sm\"\n else return \"xs\"\n}\n\nexport function scrollbarTag (state) {\n return state.is_touch_device ? 'div' : 'VuePerfectScrollbar'\n}","/*\n Core store module getters\n\n*/\n\nimport * as temp from \"./temp\";\n\nexport default {\n ...temp\n}\n","/*=========================================================================================\n File Name: mutations.js\n Description: Vuex Store - mutations\n ----------------------------------------------------------------------------------------\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\n Author: Pixinvent\n Author URL: http://www.themeforest.net/user/pixinvent\n==========================================================================================*/\n\nimport app from '@/main';\n\n// Boilerplate for generic mutations use in almost any module\nimport * as generic from \"@/store/generic/mutations/result-status.js\";\n\nexport function clearError(state, payload) {\n generic.clearError(state, payload);\n}\n\nexport function setError(state, payload) {\n // console.log(\"setError core\", state.status);\n generic.setError(state.status, payload);\n}\n\nexport function setSuccess(state, payload) {\n generic.setSuccess(state.status, payload);\n}\n\nexport function setProcessing(state, payload) {\n generic.setProcessing(state.status, payload);\n}\n\n\n// /////////////////////////////////////////////\n// COMPONENTS\n// /////////////////////////////////////////////\n\n// Vertical NavMenu\n\nexport function TOGGLE_IS_VERTICAL_NAV_MENU_ACTIVE(state, value) {\n state.isVerticalNavMenuActive = value\n}\n\nexport function TOGGLE_REDUCE_BUTTON(state, val) {\n state.reduceButton = val\n}\n\nexport function UPDATE_MAIN_LAYOUT_TYPE(state, val) {\n state.mainLayoutType = val\n}\n\nexport function UPDATE_VERTICAL_NAV_MENU_ITEMS_MIN(state, val) {\n state.verticalNavMenuItemsMin = val\n}\n\nexport function UPDATE_VERTICAL_NAV_MENU_WIDTH(state, width) {\n state.verticalNavMenuWidth = width\n}\n\n\n// VxAutoSuggest\nexport function UPDATE_STARRED_PAGE(state, payload) {\n\n // find item index in search list state\n const index = state.navbarSearchAndPinList[\"pages\"].data.findIndex((item) => item.url == payload.url)\n\n // update the main list\n state.navbarSearchAndPinList[\"pages\"].data[index].is_bookmarked = payload.val\n\n // if val is true add it to starred else remove\n if (payload.val) {\n state.starredPages.push(state.navbarSearchAndPinList[\"pages\"].data[index])\n }\n else {\n // find item index from starred pages\n const index = state.starredPages.findIndex((item) => item.url == payload.url)\n\n // remove item using index\n state.starredPages.splice(index, 1)\n }\n}\n\n\n// Navbar-Vertical\n\nexport function ARRANGE_STARRED_PAGES_LIMITED(state, list) {\n const starredPagesMore = state.starredPages.slice(10)\n state.starredPages = list.concat(starredPagesMore)\n}\n\nexport function ARRANGE_STARRED_PAGES_MORE(state, list) {\n let downToUp = false\n let lastItemInStarredLimited = state.starredPages[10]\n const starredPagesLimited = state.starredPages.slice(0, 10)\n state.starredPages = starredPagesLimited.concat(list)\n\n state.starredPages.slice(0, 10).map((i) => {\n if (list.indexOf(i) > -1) downToUp = true\n })\n\n if (!downToUp) {\n state.starredPages.splice(10, 0, lastItemInStarredLimited)\n }\n}\n\n\n// ////////////////////////////////////////////\n// UI\n// ////////////////////////////////////////////\n\nexport function TOGGLE_CONTENT_OVERLAY(state, val) {\n state.bodyOverlay = val;\n}\n\nexport function UPDATE_PRIMARY_COLOR(state, val) {\n state.themePrimaryColor = val;\n}\n\nexport function UPDATE_THEME(state, val) {\n state.theme = val;\n}\n\nexport function UPDATE_WINDOW_WIDTH(state, width) {\n state.windowWidth = width;\n}\n\nexport function UPDATE_WINDOW_SCROLL_Y(state, val) {\n state.scrollY = val;\n}\n\n\n// /////////////////////////////////////////////\n// User/Account\n// /////////////////////////////////////////////\n\n// Updates user info in state and localstorage\n\nexport function UPDATE_USER_INFO(state, payload) {\n\n // Get Data localStorage\n let userInfo = JSON.parse(localStorage.getItem(\"userInfo\")) || state.AppActiveUser\n\n for (const property of Object.keys(payload)) {\n\n if (payload[property] != null) {\n // If some of user property is null - user default property defined in state.AppActiveUser\n state.AppActiveUser[property] = payload[property]\n\n // Update key in localStorage\n userInfo[property] = payload[property]\n }\n\n\n }\n // Store data in localStorage\n localStorage.setItem(\"userInfo\", JSON.stringify(userInfo))\n}\n\nexport function changeLanguage(state, payload) {\n app.$i18n.locale = payload;\n localStorage.setItem('currentLanguage', payload)\n state.currentLocale = payload\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function appCrash(state) {\n if (window.location.pathname !== \"/app-crash\") {\n window.location = \"/app-crash\";\n }\n}\n","import { log } from \"@/utils/logs\";\n\nexport function setUser (state, payload) {\n state.flatmap[payload.id] = payload;\n state.currentUser = state.flatmap[payload.id];\n log(\"MUTATION: setUser::\", \"Done\");\n}\n\nexport function setProfile (state, payload) {\n state.flatmap[payload.student.id] = payload.student;\n state.profile = state.flatmap[payload.student.id];\n log(\"MUTATION: setProfile::\", \"Done\");\n}\n\nexport function removeUserState (state) {\n // console.log(\"removeUserState\");\n state.currentUser = null;\n}\n\nexport function removeUserProfile (state) {\n // console.log(\"removeUserProfile\");\n state.profile = null;\n}\n","/*\n Core store module mutations\n\n*/\n\nimport * as temp from \"./temp\";\nimport * as user from \"./user\";\n\nexport default {\n ...temp,\n ...user\n}\n","/*=========================================================================================\n File Name: actions.js\n Description: Vuex Store - actions\n ----------------------------------------------------------------------------------------\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\n Author: Pixinvent\n Author URL: http://www.themeforest.net/user/pixinvent\n==========================================================================================*/\n\n\n// /////////////////////////////////////////////\n// COMPONENTS\n// /////////////////////////////////////////////\n\n// Vertical NavMenu\nexport function updateVerticalNavMenuWidth({ commit }, width) {\n commit('UPDATE_VERTICAL_NAV_MENU_WIDTH', width)\n}\n\n\n// VxAutoSuggest\nexport function updateStarredPage({ commit }, payload) {\n commit('UPDATE_STARRED_PAGE', payload)\n}\n\n\n// The Navbar\nexport function arrangeStarredPagesLimited({ commit }, list) {\n commit('ARRANGE_STARRED_PAGES_LIMITED', list)\n}\n\nexport function arrangeStarredPagesMore({ commit }, list) {\n commit('ARRANGE_STARRED_PAGES_MORE', list)\n}\n","\n// /////////////////////////////////////////////\n// UI\n// /////////////////////////////////////////////\n\nexport function toggleContentOverlay({ commit }) {\n commit('TOGGLE_CONTENT_OVERLAY')\n}\n \nexport function updateTheme({ commit }, val) {\n commit('UPDATE_THEME', val)\n}\n","/* Centralize Data Management */\n\n// Data Management\n\n// Cache\n\n// Get Local Cache\n\n// Get Server Cache (From Redis);\n\n\n// Save Local Data for next time launching\n\n// Clear Local Data (Vuex Store States)\nexport async function purgeStoreState(context) {\n const { commit } = context;\n // States from Core module\n \n commit(\"Dev/removeDevData\");\n\n // User state (Current User/Profile)\n commit(\"removeUserState\");\n commit(\"removeUserProfile\");\n\n // States from \n // commit(\"Student/removeStudentEnroll\");\n // commit(\"Student/removeStudentEnrollDetails\");\n\n commit(\"Classroom/purgeClassroom\");\n\n commit(\"ClassSection/purgeClassSection\");\n\n commit(\"Classroom/purgeClassroom\");\n\n commit(\"CourseFaq/purgeCourseFaqs\");\n\n commit(\"CourseOutlineRegistration/purgeCourseOutlineRegistration\");\n\n commit(\"Examination/purgeExamination\");\n\n commit(\"LiveClass/purgeLiveClass\");\n\n commit(\"Notification/purgeNotifications\");\n\n commit(\"PrivateMessage/purgePrivateMessages\");\n\n commit(\"PrivateMessageReply/purgePrivateMessageReplies\");\n\n commit(\"StudentAssignment/purgeStudentAssignment\");\n\n commit(\"WebBoard/purgeWebboard\");\n\n commit(\"WebBoardReply/purgeWebboardReplies\");\n\n}\n","/*\n * API and dependent servers actions\n */\n\n// import axios from \"axios\";\nimport axios from \"@/setup/axios-setup\";\n\nexport async function checkAPIServer(context) {\n\n const { commit, dispatch } = context;\n\n try {\n const response = await axios.get(context.rootState.API_SERVER + \"/health-check\");\n // console.log(\"Server health\", response);\n\n if (response.status.error) {\n commit(\"setError\", response.status);\n } else {\n await dispatch(\"initUser\", { invokeLocation: \"ACTION (core/server) checkAPIServer\" }, { root: true });\n }\n\n } catch (error) {\n if (error.isAxiosError) {\n // const e = error.toJSON();\n // console.error(\"Server Connection Error: \", e);\n commit(\"setError\", {\n title: \"Server connection error\",\n text: \"Please try again later\",\n color: \"danger\"\n });\n }\n }\n}\n","// Import any requires library\n// import { apolloClient } from '@/setup/apollo-setup';\n\n// Import any utility\n// import { error, newItemSuccess, updateItemSuccess, deleteItemSuccess } from '@/utils/notification';\n\n// Import defined GraphQL Query or Mutation\n\n// import {\n// GET_SOMETHING,\n// GET_SOMETHINGS,\n// GET_SOMETHINGS_BYFILTER,\n// ADD_SOMETHING,\n// UPDATE_SOMETHING,\n// DELETE_SOMETHING\n// } from '@/queries/modules/any-module';\n\n\n// Get single data example\n\n// export async function getSomething(context) {\n// context.commit('setProcessing', true);\n\n// try {\n// const result = await apolloClient\n// .query({\n// query: GET_SOMETHING,\n// // fetchPolicy: 'network-only'\n// });\n\n// const { data, errors } = await result;\n\n// if (errors) {\n\n// context.commit('setError', error(errors));\n// return null;\n\n// } else {\n\n// context.commit('setSomething', data.getSomething);\n// context.commit('setSuccess', null);\n// return data.getSomething;\n\n// }\n\n// } catch (e) {\n\n// context.commit('setError', error(e));\n// return null;\n\n// }\n// }\n\n\n// // Get data list example\n\n// export async function getSomethings(context, payload) {\n// context.commit('setProcessing', true);\n\n// try {\n// const variables = payload;\n\n// const result = await apolloClient\n// .query({\n// query: GET_SOMETHINGS,\n// variables,\n// // fetchPolicy: 'network-only'\n// });\n\n// const { data, errors } = await result;\n\n// if (errors) {\n\n// context.commit('setError', error(errors));\n// return [];\n\n// } else {\n\n// context.commit('setSomethings', data.getSomethings);\n// context.commit('setSuccess', null);\n// return data.getSomethings;\n\n// }\n\n// } catch (e) {\n\n// context.commit('setError', error(e));\n// return [];\n\n// }\n// }\n\n\n// // Get data list by filter example\n\n// export async function getSomethingsByFilter(context) {\n// context.commit('setProcessing', true);\n\n// try {\n// const variables = payload;\n\n// const result = await apolloClient\n// .query({\n// query: GET_SOMETHINGS_BYFILTER,\n// variables,\n// // fetchPolicy: 'network-only'\n// });\n\n// const { data, errors } = await result;\n\n// if (errors) {\n\n// context.commit('setError', error(errors));\n// return [];\n\n// } else {\n\n// context.commit('setSomethings', data.getSomethingsByFilter);\n// context.commit('setSuccess', null);\n// return data.getSomethingsByFilter;\n\n// }\n\n// } catch (e) {\n\n// context.commit('setError', error(e));\n// return [];\n\n// }\n// }\n\n\n// // Add data example\n\n// export async function addSomething(context, payload) {\n// context.commit('setProcessing', true);\n\n// try {\n// const variables = payload;\n\n// const result = await apolloClient\n// .mutate({\n// mutation: ADD_SOMETHING,\n// variables,\n// // fetchPolicy: 'network-only'\n// });\n\n// const { data, errors } = await result;\n\n// if (errors) {\n\n// context.commit('setError', error(errors));\n// return null;\n\n// } else {\n\n// const newDataSets = [...context.state.SOME_DATA_ARRAY];\n// newDataSets.push(data.addSomething);\n// context.commit('setSomethings', newDataSets);\n\n// context.commit('setSuccess', addItemSuccess(data.addSomething));\n// return data.addSomething;\n\n// }\n\n// } catch (e) {\n\n// context.commit('setError', error(e));\n// return null;\n\n// }\n// }\n\n\n// // Update data example\n\n// export async function updateSomething(context, payload) {\n\n// context.commit('setProcessing', true);\n\n// try {\n// const variables = payload;\n\n// const result = await apolloClient\n// .mutate({\n// mutation: UPDATE_SOMETHING,\n// variables,\n// // fetchPolicy: 'network-only'\n// });\n\n// const { data, errors } = await result;\n\n// if (errors) {\n\n// context.commit('setError', error(errors));\n// return null;\n\n// } else {\n\n// const index = context.state.SOME_DATA_ARRAY.findIndex(item => item.id === data.updateSomething.id);\n\n// const newDataSets = [\n// ...context.state.SOME_DATA_ARRAY.slice(0, index),\n// data.updateSomething,\n// ...context.state.SOME_DATA_ARRAY.slice(index + 1)\n// ];\n\n// context.commit('setSomethings', newDataSets);\n\n// context.commit('setSuccess', updateItemSuccess(data.updateSomething));\n// return data.updateSomething;\n\n// }\n\n// } catch (e) {\n\n// context.commit('setError', error(e));\n// return null;\n\n// }\n// }\n\n\n// // Delete data example\n\n// export async function deleteSomething(context, payload) {\n\n// context.commit('setProcessing', true);\n\n// try {\n// const variables = payload;\n\n// const result = await apolloClient\n// .mutate({\n// mutation: DELETE_SOMETHING,\n// variables,\n// // fetchPolicy: 'network-only'\n// });\n\n// const { data, errors } = await result;\n\n// if (errors) {\n\n// context.commit('setError', error(errors));\n// return null;\n\n// } else {\n\n// const index = context.state.SOME_DATA_ARRAY.findIndex(item => item.id === data.deleteSomething.id);\n\n// const newDataSets = [\n// ...context.state.SOME_DATA_ARRAY.slice(0, index),\n// ...context.state.SOME_DATA_ARRAY.slice(index + 1)\n// ];\n\n// context.commit('setSomethings', newDataSets);\n\n// context.commit('setVdoSets', vdoSets);\n// context.commit('setSuccess', deleteItemSuccess(data.deleteSomething));\n// return data.deleteSomething;\n// }\n\n// } catch (e) {\n\n// context.commit('setError', error(e));\n// return null;\n\n// }\n// }\n\n/* \n */\n\nexport function setLanguage({ commit }, payload) {\n if (process.env.NODE_ENV === \"development\") {\n console.log(\"$store/setLanguage\", payload); // eslint-disable-line no-console\n }\n commit('changeLanguage', payload)\n}\n\nexport function initializeData(/* { commit } */) {\n console.log(\"Initializing Data...\"); // eslint-disable-line no-console\n // Initialize All Required Data to Open App\n}\n\nexport function clearStates(context) {\n context.commit(\"removeUserState\");\n context.commit(\"removeUserProfile\");\n context.commit(\"Student/removeStudentEnroll\");\n context.commit(\"Student/removeStudentEnrollDetails\");\n}\n","/*\n Core store module actions\n*/\n\nimport * as vuexyComponentActions from \"./vuexy-components-actions\";\nimport * as vuexyUIActions from \"./vuexy-ui-actions\";\nimport * as data from \"./data\";\nimport * as server from \"./server\";\nimport * as temp from \"./temp\";\n\nexport default {\n ...vuexyComponentActions,\n ...vuexyUIActions,\n ...data,\n ...server,\n ...temp,\n}\n","/*=========================================================================================\n File Name: state.js\n Description: Vuex Store - state\n ----------------------------------------------------------------------------------------\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\n Author: Pixinvent\n Author URL: http://www.themeforest.net/user/pixinvent\n==========================================================================================*/\n\n// import colors from \"@/../themeConfig.js\";\n\nexport const state = {};\n\nexport default state\n\n","export default {\n developer: {}\n};\n","import temp from \"./temp\";\nimport user from \"./user\";\n\nexport default {\n active: false,\n ...user,\n ...temp\n}\n","/*\n Core store module getters\n\n*/\n\nimport * as temp from \"./temp\";\n\nexport default {\n ...temp\n}\n","/*=========================================================================================\n File Name: mutations.js\n Description: Vuex Store - mutations\n ----------------------------------------------------------------------------------------\n Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template\n Author: Pixinvent\n Author URL: http://www.themeforest.net/user/pixinvent\n==========================================================================================*/\n\n/* eslint-disable no-unused-vars */\n\nimport app from '@/main';\nimport { log } from \"@/utils/logs\";\n\n// Boilerplate for generic mutations use in almost any module\n// import * as generic from \"@/store/generic/mutations/result-status.js\";\n\n\nexport function setDevData (state, payload) {\n log({ name: \"setDevData\" }, { data: payload });\n state.developer = payload;\n}\n\nexport function setDevModeOn (state) {\n state.active = true;\n // console.log(this._vm.$context);\n}\n\nexport function setDevModeOff (state) {\n state.active = false;\n}\n\nexport function removeDevData (state) {\n state.developer = {};\n state.active = false;\n}\n","/*\n Core store module mutations\n\n*/\n\nimport * as temp from \"./temp\";\nimport * as user from \"./user\";\n\nexport default {\n ...temp,\n ...user\n}\n","/*\n Core store module actions\n*/\n\nimport * as temp from \"./temp\";\n\nexport default {\n ...temp,\n}\n","/* \n Core store module is all necessary functions required for running app and must be load first (No code splitting with dynamic import);\n*/\n\nimport state from \"./state\";\nimport getters from \"./getters\";\nimport mutations from \"./mutations\";\nimport actions from \"./actions\";\nimport { getField, updateField } from \"vuex-map-fields\";\n\nexport default {\n namespaced: true,\n getters: {\n getField,\n ...getters,\n },\n mutations: {\n updateField,\n ...mutations,\n },\n actions,\n state\n};\n","import Vue from 'vue';\nimport Vuex from 'vuex';\n\n// Core store\nimport state from \"./core/state\";\nimport getters from \"./core/getters\";\nimport mutations from \"./core/mutations\";\nimport actions from \"./core/actions\";\n\n// Development tool store\nimport Dev from \"../store/dev-tool\";\n\n// Required Modules\n// Should not import any non require modules here to reduce bundle size and first byte loading time.\nimport theme from \"../store/modules/theme\";\nimport User from \"./modules/user\";\nimport Student from \"../store/modules/student\";\nimport StudentUnitTest from \"../store/modules/student-unittest\";\nimport StudentUnitLearn from \"../store/modules/student-unit-learn\";\nimport StudentEnroll from \"../store/modules/student-enroll\";\nimport Examination from \"../store/modules/examination\";\nimport Classroom from \"../store/modules/classroom\";\nimport LiveClass from \"../store/modules/liveclass\";\nimport StudentAssignment from \"../store/modules/student-assignment\";\nimport CourseFaq from \"../store/modules/course-faq\";\nimport WebBoard from \"../store/modules/web-board\";\nimport WebBoardReply from \"../store/modules/web-board-reply\";\nimport PrivateMessage from \"../store/modules/private-message\";\nimport PrivateMessageReply from \"../store/modules/private-message-reply\";\nimport ClassSection from \"../store/modules/course/class-section\";\nimport StudentEnrollDetail from \"../store/modules/student-enroll/student-enroll-detail\";\nimport CourseOutlineRegistration from \"../store/modules/course/course-outline-registration\";\nimport Notification from \"../store/modules/notification\";\nimport AcademicPeriodConfig from '../store/modules/common-data/academic-period-config/index';\nimport AdvisorOnlineSchedule from '../store/modules/advisor-online-schedule/index';\nimport InfoGroup from '../store/modules/university-news/info-group/index';\nimport InfoTopic from '../store/modules/university-news/info-topic/index';\nimport SystemConfig from '@/store/modules/system/system-config/index';\n\nimport Chat from \"../store/modules/chat\";\n\nVue.use(Vuex);\n\n// Strict mode\nconst strict = process.env.NODE_ENV !== \"production\";\n\nexport default new Vuex.Store({\n strict,\n\n // Core\n state,\n getters,\n actions,\n mutations,\n\n // Modules\n modules: {\n Dev,\n theme,\n Student,\n StudentUnitTest,\n User,\n Examination,\n Classroom,\n LiveClass,\n StudentAssignment,\n CourseFaq,\n WebBoard,\n WebBoardReply,\n StudentUnitLearn,\n PrivateMessage,\n PrivateMessageReply,\n ClassSection,\n StudentEnrollDetail,\n CourseOutlineRegistration,\n Notification,\n AcademicPeriodConfig,\n Chat,\n StudentEnroll,\n AdvisorOnlineSchedule,\n InfoGroup,\n InfoTopic,\n SystemConfig,\n },\n});\n","// axios\nimport axios from 'axios'\n\nconst domain = \"\";\n\nlet instance = axios.create({\n domain,\n})\n\n// Add a request interceptor\ninstance.interceptors.request.use(function (config) {\n // config.domain = domain;\n // config.headers['Access-Control-Allow-Origin'] = '*';\n config.headers['authorization'] = localStorage.getItem('token');\n\n return config;\n});\n\nexport default instance\n\n","import Vue from 'vue'\nimport VueI18n from 'vue-i18n';\n\nimport en from '@/locales/en.json';\nimport th from '@/locales/th.json';\n\nimport { defaultLocale, localeOptions } from '@/constants/config';\n\nVue.use(VueI18n);\n\nconst messages = {\n en: en,\n th: th\n};\n\nif (!localStorage.getItem('currentLanguage') && localeOptions.filter(x => x.id === localStorage.getItem('currentLanguage')).length <= 0) {\n localStorage.setItem('currentLanguage', defaultLocale);\n}\n\nconst locale = (localStorage.getItem('currentLanguage') && localeOptions.filter(x => x.id === localStorage.getItem('currentLanguage')).length > 0) ? localStorage.getItem('currentLanguage') : defaultLocale;\n\nexport const i18n = new VueI18n({\n locale: locale,\n fallbackLocale: 'th',\n messages\n});\n\nexport function language() {\n let local = '';\n\n if (i18n.locale === 'en') {\n local = 'Eng';\n } else {\n local = 'Local';\n }\n\n return local;\n}\n","import Vue from 'vue';\nimport {extend, localize, ValidationObserver, ValidationProvider} from 'vee-validate';\nimport * as rules from 'vee-validate/dist/rules';\nimport {i18n} from '@/setup/i18n-setup';\n\nVue.component('ValidationProvider', ValidationProvider);\nVue.component('ValidationObserver', ValidationObserver);\n\n// loop over all rules\nfor (let rule in rules) {\n // add the rule\n extend(rule, rules[rule]);\n}\n\nextend('password', {\n validate: (value, {other}) => value === other,\n message: 'The password confirmation does not match.',\n params: [{name: 'other', isTarget: true}]\n});\n\nfunction loadLocale() {\n const code = i18n.locale;\n\n return import(`vee-validate/dist/locale/${code}.json`).then(locale => {\n localize(code, locale);\n });\n}\n\nloadLocale();","import Vue from 'vue'\nimport moment from 'moment';\nimport {i18n} from './i18n-setup'\n\nVue.filter('capitalize', function (value) {\n if (!value) return ''\n value = value.toString()\n let arr = value.split(\" \")\n let capitalized_array = []\n arr.forEach((word) => {\n let capitalized = word.charAt(0).toUpperCase() + word.slice(1)\n capitalized_array.push(capitalized)\n })\n return capitalized_array.join(\" \");\n})\n\nVue.filter('title', function (value, replacer=\"_\") {\n if (!value) return ''\n value = value.toString()\n\n let arr = value.split(replacer)\n let capitalized_array = []\n arr.forEach((word) => {\n let capitalized = word.charAt(0).toUpperCase() + word.slice(1)\n capitalized_array.push(capitalized)\n })\n return capitalized_array.join(\" \");\n})\n\nVue.filter('truncate', function(value, limit) {\n return value.substring(0, limit)\n})\n\nVue.filter('tailing', function(value, tail) {\n return value + tail;\n})\n\nVue.filter('time', function(value, is24HrFormat = false) {\n if(value) {\n if(is24HrFormat){\n return moment(value).locale(i18n.locale).format('H:mm');\n }else{\n return moment(value).locale(i18n.locale).format('LT');\n }\n }\n})\n\nVue.filter('date', function(value, fullDate = false) {\n value = String(value)\n // const date = value.slice(8,10).trim();\n // const month = value.slice(4,7).trim();\n // const year = value.slice(11,15);\n\n // if(!fullDate) return date + ' ' + month;\n // else return date + ' ' + month + ' ' + year;\n if(fullDate){\n return moment(value).locale(i18n.locale).format('D MMM');\n }else{\n return moment(value).locale(i18n.local).format('D MM');\n }\n})\n\nVue.filter('month', function(val, showYear = true) {\n val = String(val)\n\n const regx = /\\w+\\s(\\w+)\\s\\d+\\s(\\d+)./;\n if(!showYear) {\n return regx.exec(val)[1];\n }else {\n return regx.exec(val)[1] + ' ' + regx.exec(val)[2];\n }\n\n})\n\nVue.filter('csv', function(value) {\n return value.join(', ')\n})\n\nVue.filter('filter_tags', function(value) {\n return value.replace(/<\\/?[^>]+(>|$)/g, \"\")\n})\n\nVue.filter('k_formatter', function(num) {\n return num > 999 ? (num/1000).toFixed(1) + 'k' : num\n})\n","import 'material-icons/iconfont/material-icons.css'; //Material Icons\nimport 'vuesax/dist/vuesax.css'; // Vuesax\n// Styles: SCSS\nimport '@/assets/scss/main.scss';\n// Tailwind\nimport '@/assets/css/main.css';\n// PrismJS\nimport 'prismjs';\nimport 'prismjs/themes/prism-tomorrow.css';\n// Feather font icon\nrequire('@/assets/css/iconfont.css');\n\nimport {themeConfig} from '@/constants/config';\n\nimport Vue from 'vue';\n\n// Vuesax Component Framework\nimport Vuesax from 'vuesax';\nimport {colors} from '@/constants/config';\nVue.use(Vuesax, { theme:{ colors }, rtl: themeConfig.rtl });\n\n// Clipboard\nimport VueClipboard from 'vue-clipboard2'\nVue.use(VueClipboard);\n\n// Vuejs - Vue wrapper for hammerjs\nimport {VueHammer} from 'vue2-hammer';\nVue.use(VueHammer);\n","import Vue from 'vue';\nimport VxTooltip from '@/layouts/components/vx-tooltip/VxTooltip.vue';\nimport VxCard from '@/components/vx-card/VxCard.vue';\nimport VxList from '@/components/vx-list/VxList.vue';\nimport VxBreadcrumb from '@/layouts/components/VxBreadcrumb.vue';\nimport FeatherIcon from '@/components/FeatherIcon.vue';\nimport VxInputGroup from '@/components/vx-input-group/VxInputGroup.vue';\n// v-select component\nimport vSelect from 'vue-select';\n\nVue.component(VxTooltip.name, VxTooltip);\nVue.component(VxCard.name, VxCard);\nVue.component(VxList.name, VxList);\nVue.component(VxBreadcrumb.name, VxBreadcrumb);\nVue.component(FeatherIcon.name, FeatherIcon);\nVue.component(VxInputGroup.name, VxInputGroup);\n\n// Set the components prop default to return our fresh components\nvSelect.props.components.default = () => ({\n Deselect: {\n render: createElement => createElement('feather-icon', {\n props: {\n icon: 'XIcon',\n svgClasses: 'w-4 h-4 mt-1'\n }\n }),\n },\n OpenIndicator: {\n render: createElement => createElement('feather-icon', {\n props: {\n icon: 'ChevronDownIcon',\n svgClasses: 'w-5 h-5'\n }\n }),\n },\n});\n\nVue.component(vSelect);\n"],"sourceRoot":""}