\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InnerLoading.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InnerLoading.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InnerLoading.vue?vue&type=template&id=8dfd11d0&\"\nimport script from \"./InnerLoading.vue?vue&type=script&lang=js&\"\nexport * from \"./InnerLoading.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InnerLoading.vue?vue&type=style&index=0&lang=css&\"\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 null,\n null\n \n)\n\nexport default component.exports","export default {\r\n mapEditable: true,\r\n Tecnico: '',\r\n incidencia: {},\r\n idCliente: null,\r\n idInstalacion: null\r\n}\r\n","export default {\r\n getIncidencia (state) {\r\n if (state.incidencia && Object.keys(state.incidencia).length) {\r\n return state.incidencia\r\n } else {\r\n return Object.assign({\r\n Cliente: null,\r\n Instalacion: null,\r\n Incidencia: 0,\r\n FechaIncidencia: null,\r\n FechaCierreIncidencia: null,\r\n TiempoEmpleado: '00:00',\r\n Programa: null,\r\n TipoIncidencia: null,\r\n Prioridad: null,\r\n TecnicoRecepcion: null,\r\n TecnicoAsignado: null,\r\n ReportadaPor: '',\r\n Descripcion: '',\r\n ReferenciaIncidenciaCliente: '',\r\n Observaciones: '',\r\n Reaperturas: 0,\r\n NumeroModificacion: 0,\r\n DescontarHoras: false,\r\n IncidenciaSinMantenimiento: false,\r\n Estado: 'N',\r\n Presupuesto: '',\r\n Albaran: '',\r\n FechaProximoAviso: null,\r\n NotificableBoletin: false,\r\n TecnicosSeguimiento: null,\r\n Leida: false,\r\n IncidenciaPersonas: [],\r\n Trabajosrealizados: []\r\n })\r\n }\r\n },\r\n getEntity: (state) => (entity) => {\r\n return state[entity] || []\r\n },\r\n findBy: (state) => (params) => {\r\n if (!params) return 'No value'\r\n if (!params.entity || (!state[params.entity] || !state[params.entity].length)) {\r\n return params.id\r\n }\r\n\r\n let value = params.value || 'value'\r\n let label = params.label || ''\r\n let object = state[params.entity].find((x) => x[value] === params.id)\r\n return (object && label ? object[label] : object) || params.id\r\n },\r\n filterByIncludes: (state) => (params) => {\r\n if (!params || !params.entity || (!state[params.entity] || !state[params.entity].length)) {\r\n return []\r\n }\r\n\r\n let value = params.value || 'value'\r\n\r\n let object = state[params.entity].filter((x) => x[value].startsWith(params.id))\r\n return object || []\r\n }\r\n}\r\n","import Vue from 'vue'\r\n\r\nexport default {\r\n CLEAR_ALL (state) {\r\n for (const prop of Object.keys(state)) {\r\n if (prop !== 'mapEditable') Vue.set(state, prop, null)\r\n }\r\n },\r\n SET_ENTITY (state, entity) {\r\n Vue.set(state, entity.name, entity.entity)\r\n },\r\n SET_INCIDENCIA (state, incidencia) {\r\n state.incidencia = incidencia\r\n },\r\n SET_INSTALACION (state, instalacion) {\r\n state.idInstalacion = instalacion\r\n },\r\n SET_CLIENTE (state, cliente) {\r\n state.idCliente = cliente\r\n }\r\n}\r\n","import Vue from 'vue'\r\n\r\nexport default {\r\n CLEAR_ALL ({ commit }) {\r\n commit('CLEAR_ALL')\r\n },\r\n SET_INCIDENCIA ({ commit }, incidencia) {\r\n commit('SET_INCIDENCIA', incidencia)\r\n },\r\n SET_ENTITY ({ state, commit }, params) {\r\n let entity = params.entity\r\n // await new Promise((resolve, reject) => {\r\n if (Vue.apiUrl(entity)) {\r\n Vue.axios({\r\n method: 'get',\r\n url: Vue.apiUrl(entity) + (params.queryString || ''),\r\n headers: { 'Content-Type': 'application/json' }\r\n })\r\n .then(({ data }) => {\r\n if (data) {\r\n if (!Array.isArray(data)) data = [data]\r\n let entityObj = {\r\n name: entity,\r\n entity: Vue.loadSelect(data, params.label, params.value, params.props)\r\n }\r\n commit('SET_ENTITY', entityObj)\r\n }\r\n // resolve(true)\r\n })\r\n .catch(() => {\r\n // let errorObject = JSON.parse(JSON.stringify(error))\r\n // resolve(true)\r\n // reject(error)\r\n })\r\n } // else resolve(true)\r\n // })\r\n },\r\n GET_ENTITY ({ state }, entity) {\r\n return new Promise((resolve, reject) => {\r\n if (state[entity]) {\r\n resolve(state[entity])\r\n } else {\r\n resolve([])\r\n }\r\n })\r\n },\r\n LOAD_ENTITY ({ state, dispatch }, params) {\r\n let entity = params.entity\r\n if (params.force || (!state[entity] || !state[entity].length)) {\r\n dispatch('SET_ENTITY', params)\r\n }\r\n },\r\n SET_INSTALACION ({ commit }, instalacion) {\r\n commit('SET_INSTALACION', instalacion)\r\n },\r\n SET_CLIENTE ({ commit }, cliente) {\r\n commit('SET_CLIENTE', cliente)\r\n }\r\n}\r\n","import state from './state'\r\nimport getters from './getters'\r\nimport mutations from './mutations'\r\nimport actions from './actions'\r\n\r\nexport default {\r\n namespaced: true,\r\n state,\r\n getters,\r\n mutations,\r\n actions\r\n}\r\n","// import apiCall from '../utils/api'\r\nimport Vue from 'vue'\r\n\r\nconst state = {\r\n status: '',\r\n hasLoadedOnce: false\r\n}\r\n\r\nconst getters = {\r\n isAuthenticated: state => state.status === 'success' && !!window.getCookie('token'),\r\n token: state => {\r\n let token = window.getCookie('token')\r\n if (!token || token === 'undefined') token = ''\r\n return token\r\n },\r\n authStatus: state => state.status\r\n}\r\n\r\nconst actions = {\r\n AUTH_REQUEST: ({ commit, dispatch }, user) => {\r\n return new Promise((resolve, reject) => {\r\n dispatch('CLEAR')\r\n commit('AUTH_REQUEST')\r\n delete Vue.axios.defaults.headers.common['Authorization']\r\n setTimeout(() => {\r\n Vue.axios\r\n .post(Vue.apiUrl('login'), Vue.toURLSearchParams(user), {\r\n headers: {\r\n 'Content-Type': 'application/x-www-form-urlencoded',\r\n Authorization: ''\r\n }\r\n })\r\n .then(resp => {\r\n commit('AUTH_SUCCESS', resp.data.Token)\r\n dispatch('USER_REQUEST', resp.data)\r\n resolve(resp)\r\n })\r\n .catch(error => {\r\n commit('AUTH_LOGOUT')\r\n commit('AUTH_ERROR', error)\r\n reject(error.message)\r\n })\r\n }, 500)\r\n })\r\n },\r\n AUTH_UPDATE: ({ getters, commit }, token) => {\r\n if (getters.isAuthenticated && token && getters.isProfileLoaded) {\r\n commit('AUTH_SUCCESS', token)\r\n }\r\n },\r\n AUTH_CHECK: ({ getters, commit, dispatch }) => {\r\n commit('AUTH_REQUEST')\r\n setTimeout(() => {\r\n if (getters.token && getters.isProfileLoaded) {\r\n commit('AUTH_SUCCESS', getters.token)\r\n } else commit('AUTH_LOGOUT')\r\n }, 100)\r\n },\r\n AUTH_LOGOUT: ({ commit, dispatch }) => {\r\n dispatch('api/RESET')\r\n dispatch('CLEAR')\r\n commit('AUTH_LOGOUT')\r\n },\r\n CLEAR: ({ commit, dispatch }) => {\r\n delete Vue.axios.defaults.headers['Authorization']\r\n delete Vue.axios.defaults.headers.common['Authorization']\r\n dispatch('api/INIT_CONFIG')\r\n dispatch('entities/CLEAR_ALL')\r\n window.createCookie('token', '', '; Expires=Thu, 01 Jan 1970 00:00:01 GMT')\r\n removeCache()\r\n }\r\n}\r\n\r\nconst mutations = {\r\n AUTH_REQUEST: state => {\r\n Vue.set(state, 'status', 'loading')\r\n },\r\n AUTH_SUCCESS: (state, token) => {\r\n if (token && token !== 'undefined') {\r\n window.createCookie('token', token, 30)\r\n Vue.axios.defaults.headers.common.Authorization = token\r\n Vue.set(state, 'status', 'success')\r\n } else Vue.set(state, 'status', 'token error')\r\n },\r\n AUTH_ERROR: (state, error) => {\r\n Vue.set(state, 'status', error)\r\n Vue.set(state, 'hasLoadedOnce', true)\r\n },\r\n AUTH_LOGOUT: state => {\r\n Vue.set(state, 'status', '')\r\n Vue.set(state, 'hasLoadedOnce', true)\r\n }\r\n}\r\n\r\nfunction removeCache () {\r\n window.createCookie('token', '', '; Expires=Thu, 01 Jan 1970 00:00:01 GMT')\r\n window.localStorage.removeItem('vuex')\r\n window.sessionStorage.removeItem('Cliente')\r\n window.sessionStorage.removeItem('Instalacion')\r\n window.sessionStorage.removeItem('Estado')\r\n window.sessionStorage.removeItem('TecnicoAsignado')\r\n window.sessionStorage.removeItem('Programa')\r\n window.sessionStorage.removeItem('incidencias')\r\n window.sessionStorage.removeItem('serverPagination')\r\n\r\n // localStorage.clear()\r\n sessionStorage.clear()\r\n var cookies = document.cookie.split(';')\r\n for (var i = 0; i < cookies.length; i++) {\r\n var cookie = cookies[i]\r\n var eqPos = cookie.indexOf('=')\r\n var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie\r\n document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT'\r\n }\r\n delete Vue.axios.defaults.headers.common['Authorization']\r\n}\r\n\r\nexport default {\r\n // namespaced: true,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import Vue from 'vue'\r\n\r\nconst state = { profile: {} }\r\n\r\nconst getters = {\r\n getProfile: (state) => state.profile || null,\r\n getTecnico: (state) => state.profile.Tecnico || null,\r\n getPrioridad: (state) => state.profile.Prioridad || 1,\r\n getClient: (state) => state.profile.Cliente || null,\r\n getInstalacion: (state) => state.profile.Instalacion || null,\r\n isProfileLoaded: (state) => state.profile && !!state.profile.User,\r\n Role: (state, getters) => (getters.isProfileLoaded ? state.profile.Role : null),\r\n Cliente: (state, getters) => (getters.Role ? state.profile.Role === 'Cliente' : false),\r\n Tecnico: (state, getters) => (getters.Role ? state.profile.Role === 'Tecnico' : false)\r\n}\r\n\r\nconst actions = {\r\n USER_REQUEST: ({ commit, dispatch }, data) => {\r\n commit('USER_SUCCESS', data)\r\n }\r\n}\r\n\r\nconst mutations = {\r\n USER_REQUEST: (state) => {},\r\n USER_SUCCESS: (state, data) => {\r\n delete data['Token']\r\n Vue.set(state, 'profile', data)\r\n },\r\n USER_ERROR: (state) => {},\r\n AUTH_LOGOUT: (state) => {\r\n state.profile = {}\r\n }\r\n}\r\n\r\nexport default {\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","/* eslint-disable */\r\nconst methods = {\r\n sopheo: {\r\n Paths: {\r\n login: 'token',\r\n anclarIncidencia: 'Incidencias/Anclar',\r\n cliente: 'Cliente',\r\n instalacion: 'Instalacion',\r\n instalacionEquipo: 'InstalacionEquipo',\r\n personaContacto: 'InstalacionPersonaContacto',\r\n programa: 'Programa',\r\n prioridad: 'Prioridad',\r\n incidencia: 'Incidencias',\r\n incidenciaEstado: 'IncidenciaEstado',\r\n tecnico: 'Tecnico',\r\n tipoIncidencia: 'TipoIncidencia',\r\n trabajosRealizados: 'TrabajosRealizados',\r\n traspasarIncidencia: 'Incidencias/Traspasar',\r\n seguirIncidencia: 'Incidencias/Seguir',\r\n recuentoTecnicoEstado: 'Estadisticas/tecnicoEstado',\r\n recuentoTecnicoTiempo: 'Estadisticas/tecnicoTiempo',\r\n file: 'Archivos',\r\n clientes: 'ClientesAsync',\r\n getPersonaContacto: 'InstalacionPersonaContacto/getPersonaContacto',\r\n areaTrabajo: 'AreaTrabajo',\r\n departamentos: 'Departamentos',\r\n sistemaOperativo: 'SistemaOperativo',\r\n usuarios: 'Usuario',\r\n operario: 'Operario',\r\n postPersonaContacto: 'InstalacionPersonaContacto/postPersonaContacto',\r\n usuariosacces: 'UsuariosAcces',\r\n instalacionEspecifica: 'Instalacion/espeInstalacion'\r\n }\r\n }\r\n};\r\n\r\nexport default methods;","import { EventBus } from '@/store/EventBus.js'\r\nimport methods from './methods.js'\r\nimport Vue from 'vue'\r\n\r\nconst getInitialState = () => {\r\n return { sopheo: {} }\r\n}\r\n\r\nexport const API = {\r\n sopheo: 'sopheo'\r\n}\r\n\r\nconst state = getInitialState()\r\n\r\nconst getters = {\r\n getAuthorization: state => api => {\r\n let authorization = ''\r\n api = api || Object.keys(state)[0]\r\n if (api === API.CkExpress) {\r\n authorization = `Bearer ${window.getCookie('token')}`\r\n } else {\r\n authorization = state[api] ? state[api].Authorization : ''\r\n }\r\n return authorization || ''\r\n },\r\n getBaseUrl: state => api => {\r\n api = api || Object.keys(state)[0]\r\n let url = state[api] ? state[api].UrlEndPoint : ''\r\n if (url && url.slice(-1) === '/') url = url.slice(0, -1)\r\n return url || ''\r\n },\r\n getRootUrl: (state, getters) => api => {\r\n let url = getters['getBaseUrl'](api)\r\n if (url) url = url.replace('/api', '')\r\n return url || ''\r\n },\r\n getPath: state => (api, controller) => {\r\n let path = ''\r\n controller = controller.split('.')\r\n api = api || Object.keys(state)[0]\r\n if (state[api] && state[api].Paths) {\r\n path = state[api].Paths[controller[0]]\r\n if (path && controller[1]) path = path[controller[1]]\r\n }\r\n if (path && path.toString().charAt(0) !== '/') path = '/' + path\r\n return path || ''\r\n },\r\n getUrl: (state, getters) => (api, controller) => {\r\n let url\r\n if (controller) {\r\n url = getters['getBaseUrl'](api)\r\n if (url && url.slice(-1) === '/') url = url.slice(0, -1)\r\n url += getters['getPath'](api, controller)\r\n }\r\n return url && url !== 'undefined' ? url : ''\r\n }\r\n}\r\n\r\nconst actions = {\r\n async INIT_CONFIG ({ dispatch }) {\r\n try {\r\n await getConfig().then(async config => {\r\n if (!config) return\r\n let configApi = config[window.location.hostname] || config['default']\r\n getLocalUserIP(ip => console.info('Local IP: ' + ip.trim()))\r\n let ip = await getPublicUserIP()\r\n console.info('Public IP: ' + ip)\r\n\r\n if (configApi) {\r\n for (const [key, value] of Object.entries(methods)) {\r\n if (!configApi[key]) configApi[key] = {}\r\n if (configApi[key].public && ip) {\r\n if (configApi[key].public[ip]) configApi[key].UrlEndPoint = configApi[key].public[ip]\r\n delete configApi[key].public\r\n }\r\n Object.assign(configApi[key], value || {})\r\n dispatch('SET_CONFIG', { api: key, configApi: configApi[key] })\r\n }\r\n } else {\r\n alert('Error in configuration file')\r\n }\r\n })\r\n } catch (e) {\r\n alert('Error reading configuration file')\r\n console.error('Error reading configuration file', e)\r\n }\r\n EventBus.$emit('configLoad')\r\n },\r\n SET_CONFIG: ({ state, commit }, { api, configApi }) => {\r\n if (configApi) {\r\n if (!state[api]) state[api] = {}\r\n commit('SET_CONFIG', { api, configApi })\r\n }\r\n },\r\n RESET: ({ commit }) => {\r\n commit('RESET')\r\n }\r\n}\r\n\r\nconst mutations = {\r\n SET_CONFIG: (state, { api, configApi }) => {\r\n if (configApi) {\r\n let merged = Object.assign({}, state[api] || {}, configApi || {})\r\n Vue.set(state, api, merged)\r\n }\r\n },\r\n RESET (state) {\r\n Object.keys(state).forEach(key => {\r\n if (typeof getInitialState()[key] === 'undefined') delete state[key]\r\n })\r\n Object.assign(state, getInitialState())\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: true,\r\n initialState: state,\r\n state: Object.assign({}, state),\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n\r\nasync function getConfig () {\r\n const FETCH_TIMEOUT = 5000\r\n let didTimeOut = false\r\n let config = null\r\n try {\r\n await new Promise((resolve, reject) => {\r\n const timeout = setTimeout(() => {\r\n didTimeOut = true\r\n reject(new Error('Request timed out'))\r\n }, FETCH_TIMEOUT)\r\n fetch('config.json?' + Date.now())\r\n .then(response => {\r\n clearTimeout(timeout)\r\n if (!didTimeOut) {\r\n response.json().then(json => {\r\n config = json\r\n resolve(response)\r\n })\r\n }\r\n })\r\n .catch(err => {\r\n if (didTimeOut) return\r\n reject(err)\r\n })\r\n })\r\n .then(() => {})\r\n .catch(err => console.error('C promise error! ', err))\r\n } catch (e) {\r\n console.error('Error on Get Public IP:', e)\r\n }\r\n return config\r\n}\r\n\r\nasync function getPublicUserIP () {\r\n const FETCH_TIMEOUT = 5000\r\n let didTimeOut = false\r\n let ip\r\n\r\n try {\r\n await new Promise((resolve, reject) => {\r\n const timeout = setTimeout(() => {\r\n didTimeOut = true\r\n reject(new Error('Request timed out'))\r\n }, FETCH_TIMEOUT)\r\n fetch('https://api.ipify.org?format=json')\r\n .then(response => {\r\n clearTimeout(timeout)\r\n if (!didTimeOut) {\r\n response.json().then(json => {\r\n ip = json.ip\r\n resolve(response)\r\n })\r\n }\r\n })\r\n .catch(err => {\r\n if (didTimeOut) return\r\n reject(err)\r\n })\r\n })\r\n .then(() => {})\r\n .catch(err => console.error('P promise error! ', err))\r\n } catch (e) {\r\n console.error('Error on Get Public IP:', e)\r\n }\r\n return ip\r\n}\r\n\r\nfunction getLocalUserIP (onNewIP) {\r\n /* eslint-disable new-cap */\r\n /* eslint-disable no-undef */\r\n function iterateIP (ip) {\r\n try {\r\n if (!localIPs[ip] && typeof onNewIP === 'function') onNewIP(ip)\r\n localIPs[ip] = true\r\n } catch (e) {\r\n console.error('Error on Get Local IP:', e)\r\n }\r\n }\r\n\r\n try {\r\n var myPeerConnection =\r\n window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection\r\n var pc = new myPeerConnection({ iceServers: [] })\r\n var noop = function () {}\r\n var localIPs = {}\r\n var ipRegex = /([0-9]{1,3}(\\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g\r\n pc.createDataChannel('')\r\n pc.createOffer(sdp => {\r\n sdp.sdp.split('\\n').forEach(line => {\r\n if (line.indexOf('candidate') < 0) return\r\n line.match(ipRegex).forEach(iterateIP)\r\n })\r\n pc.setLocalDescription(sdp, noop, noop)\r\n }, noop)\r\n\r\n pc.onicecandidate = function (ice) {\r\n if (\r\n !ice ||\r\n !ice.candidate ||\r\n !ice.candidate.candidate ||\r\n !ice.candidate.candidate.match(ipRegex)\r\n ) {\r\n return\r\n }\r\n ice.candidate.candidate.match(ipRegex).forEach(iterateIP)\r\n }\r\n } catch (e) {\r\n console.error('Error on Get Local IP:', e)\r\n }\r\n}\r\n","import createPersistedState from 'vuex-persistedstate'\r\nimport entities from './entities'\r\nimport auth from './auth/auth'\r\nimport user from './auth/user'\r\nimport Chart from 'chart.js'\r\nimport api from './api'\r\nimport Vuex from 'vuex'\r\nimport Vue from 'vue'\r\n\r\nVue.use(Vuex)\r\n\r\nconst store = new Vuex.Store({\r\n plugins: [createPersistedState()],\r\n modules: {\r\n api,\r\n user,\r\n auth,\r\n entities\r\n },\r\n state: {\r\n innerLoading: false,\r\n askToLeave: false,\r\n darkTheme: false\r\n },\r\n actions: {\r\n setInnerLoading ({ commit }, loading) {\r\n commit('SET_INNER_LOADING', loading)\r\n },\r\n setDarkTheme ({ commit }, darkTheme) {\r\n Chart.defaults.global.defaultFontColor = darkTheme ? '#eee' : '#666'\r\n Chart.defaults.scale.gridLines.color = darkTheme ? '#666' : 'rgba(0, 0, 0, 0.1)'\r\n commit('SET_DARK_THEME', darkTheme)\r\n },\r\n AskToLeave ({ commit }, askToLeave) {\r\n if (askToLeave) {\r\n window.onbeforeunload = function () {\r\n return 'Are you sure you want to close the window?'\r\n }\r\n } else {\r\n window.onbeforeunload = null\r\n }\r\n commit('ASK_TO_LEAVE', askToLeave)\r\n }\r\n },\r\n mutations: {\r\n SET_INNER_LOADING (state, loading) {\r\n state.innerLoading = loading\r\n },\r\n SET_DARK_THEME (state, darkTheme) {\r\n state.darkTheme = darkTheme\r\n },\r\n ASK_TO_LEAVE (state, askToLeave) {\r\n state.askToLeave = askToLeave\r\n }\r\n }\r\n})\r\n\r\nstore.dispatch('AskToLeave', false)\r\n\r\nexport default store\r\n","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-SG\": \"cdab\",\n\t\"./en-SG.js\": \"cdab\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"73332\",\n\t\"./en-il.js\": \"73332\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","import Vue from 'vue'\r\n\r\nexport const EventBus = new Vue()\r\n","import Vue from 'vue'\r\nimport Vuetify from 'vuetify'\r\n\r\nVue.use(Vuetify, {\r\n iconfont: 'mdi', // 'md' || 'mdi' || 'fa' || 'fa4'\r\n theme: {\r\n primary: '#1976D2',\r\n secondary: '#26A69A',\r\n accent: '#1976D2', // #027be3\r\n error: '#DB2828',\r\n info: '#29B6F6',\r\n success: '#21BA45',\r\n warning: '#F2C037',\r\n tertiary: '#333',\r\n neutral: '#E0E1E2'\r\n }\r\n})\r\n","import Vue from 'vue'\r\nimport axios from 'axios'\r\nimport VueAxios from 'vue-axios'\r\n\r\n// Vue.prototype.$axios = axios\r\nVue.use(VueAxios, axios)\r\n\r\n/*\r\n // https://gist.github.com/mkjiau/650013a99c341c9f23ca00ccb213db1c\r\n let isAlreadyFetchingAccessToken = false\r\n let subscribers = []\r\n function onAccessTokenFetched (access_token) {\r\n subscribers = subscribers.filter(callback => callback(access_token))\r\n }\r\n function addSubscriber (callback) {\r\n subscribers.push(callback)\r\n }\r\n axios.interceptors.response.use(\r\n function (response) {\r\n return response\r\n },\r\n function (error) {\r\n const {\r\n config,\r\n response: { status }\r\n } = error\r\n const originalRequest = config\r\n\r\n if (status === 401) {\r\n if (!isAlreadyFetchingAccessToken) {\r\n isAlreadyFetchingAccessToken = true\r\n store.dispatch(fetchAccessToken()).then(access_token => {\r\n isAlreadyFetchingAccessToken = false\r\n onAccessTokenFetched(access_token)\r\n })\r\n }\r\n\r\n const retryOriginalRequest = new Promise(resolve => {\r\n addSubscriber(access_token => {\r\n originalRequest.headers.Authorization = 'Bearer ' + access_token\r\n resolve(axios(originalRequest))\r\n })\r\n })\r\n return retryOriginalRequest\r\n }\r\n return Promise.reject(error)\r\n }\r\n ) */\r\n","import store from '../store'\r\nimport Vue from 'vue'\r\n\r\ngetVersion().then(version => {\r\n if (localStorage.getItem('upatedV') === 'true') {\r\n setTimeout(() => {\r\n Vue.notify({\r\n message: `🎉️ Sopheo Actualizado 🎉️`,\r\n icon: 'mdi-cellphone-arrow-down',\r\n color: 'success'\r\n // type: 'success'\r\n })\r\n localStorage.setItem('upatedV', '')\r\n }, 4000)\r\n }\r\n if (localStorage.getItem('version') !== version) {\r\n localStorage.setItem('version', version)\r\n localStorage.setItem('upatedV', 'true')\r\n setTimeout(() => {\r\n location.reload(true)\r\n }, 100)\r\n }\r\n\r\n let config = {\r\n AppName: 'Sopheo',\r\n version: version\r\n }\r\n let apiUrlPlugin = {\r\n install (Vue) {\r\n Vue.apiUrl = buildUrlApi\r\n Vue.prototype.$apiUrl = buildUrlApi\r\n Vue.prototype.$config = config\r\n }\r\n }\r\n Vue.use(apiUrlPlugin)\r\n\r\n function buildUrlApi (controller, api) {\r\n let url = store.getters['api/getUrl'](api, controller)\r\n if (api) Vue.axios.defaults.headers['Api'] = api.charAt(0).toUpperCase() + api.slice(1)\r\n return url.toLowerCase()\r\n }\r\n})\r\n\r\nasync function getVersion () {\r\n const FETCH_TIMEOUT = 5000\r\n let didTimeOut = false\r\n let version = null\r\n try {\r\n await new Promise((resolve, reject) => {\r\n const timeout = setTimeout(() => {\r\n didTimeOut = true\r\n reject(new Error('Request timed out'))\r\n }, FETCH_TIMEOUT)\r\n fetch('config.json?' + Date.now())\r\n .then(response => {\r\n clearTimeout(timeout)\r\n if (!didTimeOut) {\r\n response.json().then(json => {\r\n version = json.version\r\n resolve(response)\r\n })\r\n }\r\n })\r\n .catch(err => {\r\n if (didTimeOut) return\r\n reject(err)\r\n })\r\n })\r\n .then(() => {})\r\n .catch(err => console.error('promise error! ', err))\r\n } catch (e) {\r\n console.error('Error on Get Public IP:', e)\r\n }\r\n return version\r\n}\r\n","import { baseUrl } from '../../vue.config.js'\r\nimport moment from 'moment'\r\nimport Vue from 'vue'\r\n\r\nwindow.toTotalTime = function (time, type = 'minutes') {\r\n var dur = moment.duration(time, type)\r\n var hours = Math.floor(dur.asHours())\r\n var mins = Math.floor(dur.asMinutes()) - hours * 60\r\n // var sec = Math.floor(dur.asSeconds()) - hours * 60 * 60 - mins * 60\r\n return (hours > 9 ? hours : '0' + hours) + ':' + (mins > 9 ? mins : '0' + mins)\r\n}\r\n\r\nwindow.getCookie = function (name) {\r\n var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'))\r\n if (match) return !match[2] || match[2] === 'undefined' ? '' : match[2]\r\n}\r\n\r\nwindow.createCookie = function (name, value, days) {\r\n var date, expires\r\n if (Number(days)) {\r\n date = new Date()\r\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000)\r\n expires = '; expires=' + date.toGMTString()\r\n } else if (!days.length) {\r\n expires = ''\r\n }\r\n let path = baseUrl || baseUrl !== 'undefined' ? baseUrl : '/'\r\n document.cookie = name + '=' + value + expires + '; path=' + path\r\n}\r\n\r\nwindow.capitalize = function (value) {\r\n return value.charAt(0).toUpperCase() + value.slice(1)\r\n}\r\n\r\nlet vueConfig = {\r\n install (Vue, options) {\r\n Vue.loadSelect = function (data, label, value, newProps) {\r\n return loadSelect(data, label, value, newProps)\r\n }\r\n Vue.prototype.$loadSelect = function (data, label, value, newProps) {\r\n return loadSelect(data, label, value, newProps)\r\n }\r\n\r\n Vue.toURLSearchParams = function (object) {\r\n return toURLSearchParams(object)\r\n }\r\n Vue.prototype.$toURLSearchParams = function (object) {\r\n return toURLSearchParams(object)\r\n }\r\n\r\n Vue.findLabel = function (data, id, label, value) {\r\n return findLabel(data, id, label, value)\r\n }\r\n Vue.prototype.$findLabel = function (data, id, label, value) {\r\n return findLabel(data, id, label, value)\r\n }\r\n\r\n // #################################\r\n // ## FUNCTIONS ##\r\n // #################################\r\n function findLabel (data, id, label = 'label', value = 'value', rightCondition, right) {\r\n if (!data) return id\r\n let result = data.find(x => x[value] === id)\r\n return result ? result[label] : id\r\n }\r\n\r\n function loadSelect (data, label = 'Nombre', value = 'Codigo', newProps = null) {\r\n let dataMaped = []\r\n data.map(item => {\r\n let _value = null\r\n let combinedValue = ''\r\n if (Array.isArray(value)) {\r\n value.forEach(key => {\r\n combinedValue += toString2(item[key]) + '/'\r\n })\r\n _value = combinedValue.slice(0, -1)\r\n //\r\n } else _value = item[value]\r\n\r\n let _label = null\r\n if (Array.isArray(label)) {\r\n let combinedLabel = ''\r\n label.forEach((key, index, array) => {\r\n if (index === array.length - 1) {\r\n combinedLabel += '(' + toString2(item[key]) + ')'\r\n } else {\r\n combinedLabel += toString2(item[key]) + ' '\r\n }\r\n })\r\n _label = combinedLabel\r\n //\r\n } else {\r\n _label = toString2(item[label])\r\n }\r\n\r\n let object = {\r\n label: toString2(_label),\r\n value: toString2(_value)\r\n }\r\n\r\n if (newProps && (typeof newProps === 'object' || newProps instanceof Object)) {\r\n if (newProps.checkTrue && newProps.propsTrue && item[newProps.checkTrue]) {\r\n newProps.propsTrue.forEach((val, index) => {\r\n object = Object.assign({}, val, object)\r\n })\r\n }\r\n if (newProps.checkFalse && newProps.propsFalse && !item[newProps.checkFalse]) {\r\n newProps.propsFalse.forEach((val, index) => {\r\n object = Object.assign({}, val, object)\r\n })\r\n }\r\n\r\n if (newProps.props) {\r\n newProps.props.forEach((val, index) => {\r\n object = Object.assign({}, { [val]: item[val] }, object)\r\n })\r\n }\r\n }\r\n dataMaped.push(object)\r\n // obj.newProp = obj.oldProp\r\n // delete obj.oldProp\r\n })\r\n\r\n dataMaped.sort((a, b) => {\r\n var nameA = a['label'].toLowerCase()\r\n var nameB = b['label'].toLowerCase()\r\n if (nameA < nameB) return -1\r\n if (nameA > nameB) return 1\r\n return 0 // default return value (no sorting)\r\n })\r\n return dataMaped\r\n }\r\n\r\n function toURLSearchParams (object) {\r\n const params = new URLSearchParams()\r\n Object.keys(object).forEach(key => {\r\n if (typeof object[key] === 'object') {\r\n params.append(key, JSON.stringify(toString2(object[key])))\r\n } else params.append(key, toString2(object[key]))\r\n })\r\n return params\r\n }\r\n\r\n function toString2 (string) {\r\n return typeof string === 'string' || string instanceof String\r\n ? string.toString().trim()\r\n : string\r\n }\r\n }\r\n}\r\n\r\nVue.use(vueConfig)\r\n","// import QAlert from '../components/alert/QAlert.js'\r\n// import uid from '../utils/uid.js'\r\n// import clone from '../utils/clone.js'\r\nimport VAlert from 'vuetify/es5/components/VAlert'\r\nimport Vue from 'vue'\r\n\r\nlet notify = {\r\n create (opts) {\r\n return this.__vm.add(opts)\r\n },\r\n setDefaults (opts) {\r\n Object.assign(defaults, opts)\r\n },\r\n\r\n install (args) {\r\n init.call(this, args)\r\n // IMPORTARNT self = this\r\n // si se hacer referencia a this.create(object) peta.\r\n let self = this\r\n Vue.notify = function (object) {\r\n return self.create(object)\r\n }\r\n Vue.prototype.$notify = function (object) {\r\n return self.create(object)\r\n }\r\n\r\n /*\r\n args.cfg.notify && this.setDefaults(args.cfg.notify)\r\n\r\n args.$q.notify = this.create.bind(this)\r\n args.$q.notify.setDefaults = this.setDefaults */\r\n }\r\n}\r\n\r\nVue.use(notify)\r\n\r\nlet defaults = {}\r\n\r\nfunction clone (data) {\r\n const s = JSON.stringify(data)\r\n if (s) {\r\n return JSON.parse(s)\r\n }\r\n}\r\n\r\nfunction s4 () {\r\n return Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1)\r\n}\r\nfunction uid () {\r\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4()\r\n}\r\n\r\nfunction init (Vue) {\r\n const positionList = [\r\n 'top-left',\r\n 'top-right',\r\n 'bottom-left',\r\n 'bottom-right',\r\n 'top',\r\n 'bottom',\r\n 'left',\r\n 'right',\r\n 'center'\r\n ]\r\n const node = document.createElement('div')\r\n document.body.appendChild(node)\r\n this.__vm = new Vue({\r\n name: 'QNotifications',\r\n data: {\r\n notifs: {\r\n center: [],\r\n left: [],\r\n right: [],\r\n top: [],\r\n 'top-left': [],\r\n 'top-right': [],\r\n bottom: [],\r\n 'bottom-left': [],\r\n 'bottom-right': []\r\n }\r\n },\r\n methods: {\r\n add (config) {\r\n if (!config) {\r\n // console.error('Notify: parameter required')\r\n return false\r\n }\r\n\r\n const notif = Object.assign(\r\n {},\r\n defaults,\r\n typeof config === 'string' ? { message: config } : clone(config)\r\n )\r\n\r\n if (notif.position) {\r\n if (!positionList.includes(notif.position)) {\r\n // console.error(`Notify: wrong position: ${notif.position}`)\r\n return false\r\n }\r\n } else {\r\n notif.position = 'top-right'\r\n }\r\n\r\n notif.__uid = uid()\r\n\r\n if (notif.timeout === void 0) {\r\n notif.timeout = 6000\r\n }\r\n\r\n if (!notif.transition) notif.transition = 'scale-transition'\r\n if (!notif.type) notif.type = 'success'\r\n\r\n const close = () => {\r\n this.remove(notif)\r\n }\r\n\r\n if (config.actions) {\r\n notif.actions = config.actions.map(item => {\r\n const handler = item.handler\r\n const action = clone(item)\r\n\r\n action.handler =\r\n typeof handler === 'function'\r\n ? () => {\r\n handler()\r\n !item.noDismiss && close()\r\n }\r\n : () => close()\r\n\r\n return action\r\n })\r\n }\r\n\r\n if (typeof config.onDismiss === 'function') {\r\n notif.onDismiss = config.onDismiss\r\n }\r\n\r\n if (notif.closeBtn) {\r\n const btn = [\r\n {\r\n closeBtn: true,\r\n label: notif.closeBtn,\r\n handler: close\r\n }\r\n ]\r\n notif.actions = notif.actions ? notif.actions.concat(btn) : btn\r\n }\r\n\r\n if (notif.timeout) {\r\n notif.__timeout = setTimeout(() => {\r\n close()\r\n }, notif.timeout + /* show duration */ 1000)\r\n }\r\n notif.value = true\r\n\r\n const action = notif.position.indexOf('top') > -1 ? 'unshift' : 'push'\r\n this.notifs[notif.position][action](notif)\r\n\r\n return close\r\n },\r\n remove (notif) {\r\n if (notif.__timeout) {\r\n clearTimeout(notif.__timeout)\r\n }\r\n\r\n const index = this.notifs[notif.position].indexOf(notif)\r\n if (index !== -1) {\r\n const ref = this.$refs[`notif_${notif.__uid}`]\r\n if (ref && ref.$el) {\r\n const el = ref.$el\r\n el.style.top = `0px`\r\n el.style.top = notif.position.includes('bottom') ? '-' : '' + `${el.offsetTop}px`\r\n el.style.width = getComputedStyle(el).width\r\n }\r\n this.notifs[notif.position].splice(index, 1)\r\n if (typeof notif.onDismiss === 'function') {\r\n notif.onDismiss()\r\n }\r\n }\r\n }\r\n },\r\n render (h) {\r\n return h(\r\n 'div',\r\n { staticClass: 'notifications application ' },\r\n positionList.map(pos => {\r\n const vert = ['left', 'center', 'right'].includes(pos)\r\n ? 'center'\r\n : pos.indexOf('top') > -1\r\n ? 'top'\r\n : 'bottom'\r\n const align =\r\n pos.indexOf('left') > -1 ? 'start' : pos.indexOf('right') > -1 ? 'end' : 'center'\r\n const classes = ['left', 'right'].includes(pos)\r\n ? `align-${pos === 'left' ? 'start' : 'end'} justify-center`\r\n : pos === 'center'\r\n ? 'flex-center'\r\n : `align-${align}`\r\n\r\n return h(\r\n 'transition-group',\r\n {\r\n key: pos,\r\n staticClass: `notification-list notification-list-${vert} fixed layout column ${classes} ma-3`,\r\n tag: 'div',\r\n props: {\r\n name: `notification-${pos}`,\r\n mode: 'out-in'\r\n }\r\n },\r\n this.notifs[pos].map(notif => {\r\n return h(\r\n VAlert,\r\n {\r\n ref: `notif_${notif.__uid}`,\r\n key: notif.__uid,\r\n staticClass: 'notification subheading ' + (notif.class || ''),\r\n props: notif\r\n },\r\n [notif.message]\r\n )\r\n })\r\n )\r\n })\r\n )\r\n }\r\n })\r\n this.__vm.$mount(node)\r\n}\r\n","import { EventBus } from '@/store/EventBus.js'\r\nimport AsyncComputed from 'vue-async-computed'\r\nimport vueSignature from 'vue-signature'\r\nimport VueScrollTo from 'vue-scrollto'\r\nimport IdleVue from 'idle-vue'\r\nimport Meta from 'vue-meta'\r\nimport store from '../store'\r\nimport Vue from 'vue'\r\n\r\nVue.use(AsyncComputed)\r\nVue.use(vueSignature)\r\nVue.use(VueScrollTo)\r\nVue.use(Meta)\r\nVue.use(IdleVue, {\r\n startAtIdle: false,\r\n store,\r\n eventEmitter: EventBus,\r\n idleTime: 60000\r\n})\r\n\r\n// v-if-cliente\r\nVue.directive('if-cliente', {\r\n inserted (el, binding, vnode, old) {\r\n if (!store.getters.Cliente) {\r\n vnode.elm.parentElement.removeChild(vnode.elm)\r\n }\r\n }\r\n})\r\n// v-if-tecnico\r\nVue.directive('if-tecnico', {\r\n inserted (el, binding, vnode, old) {\r\n if (!store.getters.Tecnico) {\r\n vnode.elm.parentElement.removeChild(vnode.elm)\r\n }\r\n }\r\n})\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[(_vm.loading)?_c('v-app',{attrs:{\"id\":\"inspire\"}},[_c('v-content',[_c('v-container',{attrs:{\"fluid\":\"\",\"fill-height\":\"\"}},[_c('v-layout',{attrs:{\"align-center\":\"\",\"justify-center\":\"\",\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{staticClass:\"text-center\",attrs:{\"xs12\":\"\"}},[_c('img',{staticStyle:{\"max-width\":\"250px\"},attrs:{\"alt\":\"Sopheo\",\"src\":require(\"@/statics/icons/android-chrome-512x512.png\")}}),_c('v-flex',{staticClass:\"text-center\",attrs:{\"xs12\":\"\"}},[_c('h1',{class:(\"display-\" + _vm.size + \" font-weight-regular\")},[_vm._v(\"\\n Sopheo\\n \")])])],1)],1),_c('inner-loading',{attrs:{\"visible\":true}})],1)],1)],1):_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","