\n Ikleeralles.nl maakt gebruik van Cookies.\n Meer informatie\n Begrepen\n
\n \n
\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=a421922c&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=a421922c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a421922c\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport { extend, localize, ValidationProvider, ValidationObserver } from 'vee-validate'\nimport { required, alpha, min, max, between, confirmed, email } from 'vee-validate/dist/rules'\n\n// Install required rule.\nextend('required', required)\nextend('alpha', alpha)\nextend('min', min)\nextend('max', max)\nextend('between', between)\nextend('confirmed', confirmed)\nextend('email', email)\nextend('niveau', {\n validate: value => niveaus.includes(value.toLowerCase()),\n message: 'vul een geldig niveau in.'\n})\n\n// Install English and Arabic localizations.\nlocalize({\n en: {\n messages: {\n _default: (field) => `${field} waarde is ongeldig.`,\n after: (field, { target, inclusion }) => `${field} moet later zijn dan ${inclusion ? 'of gelijk aan ' : ''}${target}.`,\n alpha_dash: (field) => `${field} mag alleen letters, nummers, en streepjes bevatten.`,\n alpha_num: (field) => `${field} mag alleen letters en nummers bevatten.`,\n alpha_spaces: (field) => `${field} mag alleen letters en spaties bevatten.`,\n alpha: (field) => `${field} mag alleen letters bevatten.`,\n before: (field, { target, inclusion }) => `${field} moet eerder zijn dan ${inclusion ? 'of gelijk aan ' : ''}${target}.`,\n between: (field, { min, max }) => `${field} moet tussen ${min} en ${max} liggen.`,\n confirmed: (field) => `${field} bevestiging komt niet overeen.`,\n credit_card: (field) => `${field} is ongeldig.`,\n date_between: (field, { min, max }) => `${field} moet tussen ${min} en ${max} liggen.`,\n date_format: (field, { format }) => `${field} moet in het volgende formaat zijn: ${format}.`,\n decimal: (field, { decimals = '*' } = []) => `${field} moet een nummer zijn en mag ${decimals === '*' ? '' : decimals} decimalen bevatten.`,\n digits: (field, { length }) => `${field} moet een nummer zijn en exact ${length} tekens bevatten.`,\n dimensions: (field, { width, height }) => `${field} moet ${width} pixels breed zijn en ${height} pixels hoog.`,\n email: (field) => `${field} moet een geldig emailadres zijn.`,\n ext: (field) => `${field} moet een geldig bestand zijn.`,\n image: (field) => `${field} moet een afbeelding zijn.`,\n included: (field) => `${field} moet een geldige waarde zijn.`,\n ip: (field) => `${field} moet een geldig IP-adres zijn.`,\n max: (field, { length }) => `${field} mag niet groter zijn dan ${length} karakters.`,\n max_value: (field, { max }) => `${field} mag maximaal ${max} zijn.`,\n mimes: (field) => `${field} moet een geldig bestandstype hebben.`,\n min: (field, { length }) => `${field} moet minimaal ${length} karakters zijn.`,\n min_value: (field, { min }) => `${field} moet minimaal ${min} zijn.`,\n excluded: (field) => `${field} is ongeldig.`,\n numeric: (field) => `${field} mag alleen nummers bevatten`,\n regex: (field) => `${field} formaat is ongeldig.`,\n required: (field) => `je moet je ${field} invullen.`,\n size: (field, { size }) => `${field} mag niet groter zijn dan ${formatFileSize(size)}.`,\n url: (field) => `${field} is geen geldige URL.`\n },\n fields: {\n terms: {\n required: 'je moet akkoord gaan met de voorwaarden.'\n }\n }\n },\n nl: {\n messages: {\n _default: (field) => `${field} waarde is ongeldig.`,\n after: (field, { target, inclusion }) => `${field} moet later zijn dan ${inclusion ? 'of gelijk aan ' : ''}${target}.`,\n alpha_dash: (field) => `${field} mag alleen letters, nummers, en streepjes bevatten.`,\n alpha_num: (field) => `${field} mag alleen letters en nummers bevatten.`,\n alpha_spaces: (field) => `${field} mag alleen letters en spaties bevatten.`,\n alpha: (field) => `${field} mag alleen letters bevatten.`,\n before: (field, { target, inclusion }) => `${field} moet eerder zijn dan ${inclusion ? 'of gelijk aan ' : ''}${target}.`,\n between: (field, { min, max }) => `${field} moet tussen ${min} en ${max} liggen.`,\n confirmed: (field) => `${field} bevestiging komt niet overeen.`,\n credit_card: (field) => `${field} is ongeldig.`,\n date_between: (field, { min, max }) => `${field} moet tussen ${min} en ${max} liggen.`,\n date_format: (field, { format }) => `${field} moet in het volgende formaat zijn: ${format}.`,\n decimal: (field, { decimals = '*' } = []) => `${field} moet een nummer zijn en mag ${decimals === '*' ? '' : decimals} decimalen bevatten.`,\n digits: (field, { length }) => `${field} moet een nummer zijn en exact ${length} tekens bevatten.`,\n dimensions: (field, { width, height }) => `${field} moet ${width} pixels breed zijn en ${height} pixels hoog.`,\n email: (field) => `${field} moet een geldig emailadres zijn.`,\n ext: (field) => `${field} moet een geldig bestand zijn.`,\n image: (field) => `${field} moet een afbeelding zijn.`,\n included: (field) => `${field} moet een geldige waarde zijn.`,\n ip: (field) => `${field} moet een geldig IP-adres zijn.`,\n max: (field, { length }) => `${field} mag niet groter zijn dan ${length} karakters.`,\n max_value: (field, { max }) => `${field} mag maximaal ${max} zijn.`,\n mimes: (field) => `${field} moet een geldig bestandstype hebben.`,\n min: (field, { length }) => `${field} moet minimaal ${length} karakters zijn.`,\n min_value: (field, { min }) => `${field} moet minimaal ${min} zijn.`,\n excluded: (field) => `${field} is ongeldig.`,\n numeric: (field) => `${field} mag alleen nummers bevatten`,\n regex: (field) => `${field} formaat is ongeldig.`,\n required: (field) => `je moet je ${field} invullen.`,\n size: (field, { size }) => `${field} mag niet groter zijn dan ${formatFileSize(size)}.`,\n url: (field) => `${field} is geen geldige URL.`\n },\n fields: {\n terms: {\n required: 'je moet akkoord gaan met de voorwaarden.'\n }\n }\n }\n})\n\nconst formatFileSize = size => {\n const units = ['Byte', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n const threshold = 1024\n size = Number(size) * threshold\n const i = size === 0 ? 0 : Math.floor(Math.log(size) / Math.log(threshold))\n return `${(size / Math.pow(threshold, i)).toFixed(2) * 1} ${units[i]}`\n}\n\nVue.component('ValidationProvider', ValidationProvider)\nVue.component('ValidationObserver', ValidationObserver)\n","import Vue from 'vue'\nimport store from '../store/index'\nimport moment from \"moment\"\n\nVue.filter(\"languageLookup\", function(abbreviation) {\n let language = _.find(store.state.app.languages, { code: abbreviation })\n if(!language) {\n return language\n }\n return language.name\n})\n\nVue.filter(\"formatDate\", function(date) {\n return moment(date).lang(\"nl\").fromNow()\n})\n\nVue.filter('ucfirst', function (value) {\n if (!value) return ''\n value = value.toString()\n return value.charAt(0).toUpperCase() + value.slice(1)\n})","import Vue from 'vue';\nimport router from './router';\nimport store from './store';\nimport App from './App.vue';\nimport Buefy from 'buefy';\nimport VueCookies from 'vue-cookies';\nimport './vee-validate';\nimport AOS from 'aos';\nimport 'aos/dist/aos.css';\n\nimport ikleerallescomponents from 'ikleeralles-components';\nimport VueGtag from \"vue-gtag\";\nimport VueMathjax from 'vue-mathjax';\n\n//Install lodash and add to vue prototype\nimport lodash from 'lodash';\nVue.prototype._ = _;\n\nimport ApiService from './common/api.service';\nimport './common/filters';\n\nVue.config.productionTip = process.env.NODE_ENV === 'production';\n\nVue.use(Buefy);\nVue.use(ikleerallescomponents);\nVue.use(VueCookies);\n\nVue.use(VueGtag, {\n config: { id: \"UA-47699187-8\" }\n}, router);\nVue.use(VueMathjax);\n\n\nVue.$cookies.config(\"7d\", null, process.env.VUE_APP_COOKIE_DOMAIN);\n\nApiService.init();\nAOS.init({\n duration: 600,\n once: true,\n});\n\nconst app = new Vue({\n router: router,\n store: store,\n render: (h) => h(App),\n}).$mount('#app');\n","import Vue from 'vue'\nimport axios from 'axios'\nimport VueCookies from 'vue-cookies'\nimport {\n ToastProgrammatic as Toast,\n LoadingProgrammatic as loading\n} from 'buefy'\n\nconst token = $cookies.get(\"token\")\n\nexport default {\n init() {\n axios.defaults.baseURL = process.env.VUE_APP_API\n axios.defaults.withCredentials = true\n axios.defaults.headers.common = {\n 'Authorization': 'Bearer ' + token\n }\n },\n async get(url, load = false, auth = true) {\n var loadingcomponent\n if (load) {\n loadingcomponent = loading.open()\n }\n try {\n let response\n if (!auth) {\n axios.defaults.headers.common = {}\n response = await axios.get(`${url}`)\n axios.defaults.headers.common = {\n 'Authorization': 'Bearer ' + token\n }\n } else {\n response = await axios.get(`${url}`)\n }\n if (load) {\n loadingcomponent.close()\n }\n return response\n } catch (error) {\n if (load) {\n loadingcomponent.close()\n }\n if (error.response.status === 401 || error.response.status === 404) {\n return false\n } else {\n throw new Error(`ApiService ${error}`)\n }\n }\n },\n async post(url, params, load = true, auth = true) {\n var loadingcomponent\n if (load) {\n loadingcomponent = loading.open()\n }\n try {\n if (!auth) {\n axios.defaults.headers.common = {}\n var response = await axios.post(`${url}`, params)\n axios.defaults.headers.common = {\n 'Authorization': 'Bearer ' + token\n }\n } else {\n var response = await axios.post(`${url}`, params)\n }\n if (load) {\n loadingcomponent.close()\n }\n return response\n } catch (error) {\n if (load) {\n loadingcomponent.close()\n }\n if (error.response.status === 401 || error.response.status === 404 || error.response.status === 400) {\n return error.response\n } else {\n throw new Error(`ApiService ${error}`)\n }\n }\n },\n getBase() {\n return axios.defaults.baseURL\n }\n}\n","import Vue from 'vue';\nexport const EventBus = new Vue();","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=style&index=0&id=f87ea718&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=style&index=0&id=f87ea718&lang=scss&scoped=true&\"","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=a421922c&lang=scss&scoped=true&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=a421922c&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[_c('h1',{staticClass:\"title is-3 has-text-centered\"},[_vm._v(\"404 Not found\")]),_c('p',{staticClass:\"has-text-centered\"},[_vm._v(\"Deze pagina lijkt niet te bestaan\")])])}]\n\nexport { render, staticRenderFns }","\n\n
\n
404 Not found
\n
Deze pagina lijkt niet te bestaan
\n
\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./404.vue?vue&type=template&id=cfc0fa3a&scoped=true&\"\nimport script from \"./404.vue?vue&type=script&lang=js&\"\nexport * from \"./404.vue?vue&type=script&lang=js&\"\nimport style0 from \"./404.vue?vue&type=style&index=0&id=cfc0fa3a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cfc0fa3a\",\n null\n \n)\n\nexport default component.exports","import store from '@/store'\n\nexport default [\n {\n path: '/premium',\n name: 'premium',\n component: () => lazyLoadView(import('@/views/Premium.vue')),\n meta: {\n requiresAuth: true\n }\n },\n {\n path: '/dashboard',\n name: 'dashboard',\n component: () => lazyLoadView(import('@/views/Dashboard.vue')),\n meta: {\n requiresAuth: true\n }\n },\n {\n path: '/test/:year/:level/:topic',\n name: 'test',\n props: true,\n component: () => lazyLoadView(import('@/views/Test.vue')),\n meta: {\n requiresAuth: true\n }\n },\n {\n path: '/create',\n name: 'create',\n component: () => lazyLoadView(import('@/views/Create.vue')),\n meta: {\n requiresAuth: true,\n requiresAdmin: true\n }\n },\n {\n path: '/404',\n name: '404',\n component: require('@/views/404.vue').default,\n // Allows props to be passed to the 404 page through route\n // params, such as `resource` to define what wasn't found.\n props: true,\n },\n // Redirect any unmatched routes to the 404 page. This may\n // require some server configuration to work in production:\n // https://router.vuejs.org/en/essentials/history-mode.html#example-server-configurations\n {\n path: '/',\n redirect: '/dashboard'\n },\n {\n path: '*',\n redirect: '/404'\n }\n]\n\nfunction lazyLoadView(AsyncView) {\n let AsyncHandler = () => ({\n component: AsyncView,\n loading: require('@/views/Loading.vue').default,\n delay: 400,\n error: require('@/views/Timeout.vue').default,\n timeout: 5000\n })\n\n return Promise.resolve({\n functional: true,\n render(h, { data, children }) {\n // Transparently pass any props or children\n // to the view component.\n return h(AsyncHandler, data, children)\n }\n })\n}\n","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport store from '@/store'\nimport routes from '@/router/routes'\nimport NProgress from 'nprogress/nprogress'\nimport { SET_ADDEDROUTES } from '../store/App/mutation.type'\nimport { ToastProgrammatic as Toast } from 'buefy'\nimport { route } from 'ikleeralles-components/routes.js'\n\nVue.use(VueRouter)\n\nconst router = new VueRouter({\n routes,\n // Use the HTML5 history API (i.e. normal-looking routes)\n // instead of routes with hashes (e.g. example.com/#/about).\n // This may require some server configuration in production:\n // https://router.vuejs.org/en/essentials/history-mode.html#example-server-configurations\n mode: 'history',\n // Simulate native-like scroll behavior when navigating to a new\n // route and using back/forward buttons.\n scrollBehavior(to, from, savedPosition) {\n if (savedPosition) {\n return savedPosition\n } else {\n return { x: 0, y: 0 }\n }\n },\n})\n\nif (!store.state.app.addedRoutes) {\n console.log(router)\n router.addRoute(route)\n store.commit(`app/${SET_ADDEDROUTES}`, true)\n}\n\n// Before each route evaluates...\nrouter.beforeEach(async (routeTo, routeFrom, next) => {\n document.title = routeTo.meta.title\n // If this isn't an initial page load...\n if (routeFrom.name !== null) {\n // Start the route progress bar.\n NProgress.start()\n }\n\n await store.dispatch('user/update')\n\n // Check if auth is required on this route\n // (including nested routes).\n const requiresAuth = routeTo.matched.some((route) => route.meta.requiresAuth)\n\n // If auth isn't required for the route, just continue.\n if (!requiresAuth) return next()\n\n if(routeTo.meta.requiresAdmin && store.state.user.username !== \"webmaster\") {\n Toast.open({\n type: 'is-danger',\n message: 'Niet geautoriseerd',\n duration: 4000\n })\n return router.push('/not-found')\n }\n\n if (!store.state.user.loggedIn) { //Retrieve loggedin state from user store\n Toast.open({\n type: 'is-danger',\n message: 'Je moet ingelogd zijn om deze pagina te bekijken',\n duration: 4000\n })\n return router.push('/not-found')\n }\n\n return next()\n\n // If auth is required and the user is NOT currently logged in,\n // redirect to login.\n redirectToLogin()\n\n function redirectToLogin() {\n // Pass the original route to the login component\n next({ name: 'login', query: { redirectFrom: routeTo.fullPath } })\n }\n})\n\nrouter.beforeResolve(async (routeTo, routeFrom, next) => {\n // Create a `beforeResolve` hook, which fires whenever\n // `beforeRouteEnter` and `beforeRouteUpdate` would. This\n // allows us to ensure data is fetched even when params change,\n // but the resolved route does not. We put it in `meta` to\n // indicate that it's a hook we created, rather than part of\n // Vue Router (yet?).\n try {\n // For each matched route...\n for (const route of routeTo.matched) {\n await new Promise((resolve, reject) => {\n // If a `beforeResolve` hook is defined, call it with\n // the same arguments as the `beforeEnter` hook.\n if (route.meta && route.meta.beforeResolve) {\n route.meta.beforeResolve(routeTo, routeFrom, (...args) => {\n // If the user chose to redirect...\n if (args.length) {\n // If redirecting to the same route we're coming from...\n if (routeFrom.name === args[0].name) {\n // Complete the animation of the route progress bar.\n NProgress.done()\n }\n // Complete the redirect.\n next(...args)\n reject(new Error('Redirected'))\n } else {\n resolve()\n }\n })\n } else {\n // Otherwise, continue resolving the route.\n resolve()\n }\n })\n }\n // If a `beforeResolve` hook chose to redirect, just return.\n } catch (error) {\n return\n }\n\n // If we reach this point, continue resolving the route.\n next()\n})\n\n// When each route is finished evaluating...\nrouter.afterEach((routeTo, routeFrom) => {\n // Complete the animation of the route progress bar.\n NProgress.done()\n})\n\nexport default router\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=style&index=0&id=cfc0fa3a&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=style&index=0&id=cfc0fa3a&lang=scss&scoped=true&\"","export const TOGGLE_DARKMODE = 'toggleDarkmode'\nexport const SET_DARKMODE = 'setDarkmode'\nexport const SET_ADDEDROUTES = 'setAddedRoutes'\n"],"sourceRoot":""}