{"version":3,"sources":["webpack:///./src/components/btnCardTable/btnAddCardTable.vue","webpack:///src/components/btnCardTable/btnAddCardTable.vue","webpack:///./src/components/btnCardTable/btnAddCardTable.vue?3ff7","webpack:///./src/components/btnCardTable/btnAddCardTable.vue?17d6","webpack:///./src/views/Helexium/Medallas/Medallas.vue","webpack:///src/views/Helexium/Medallas/Medallas.vue","webpack:///./src/views/Helexium/Medallas/Medallas.vue?ccbc","webpack:///./src/views/Helexium/Medallas/Medallas.vue?e658","webpack:///./src/components/cardTable/CardTable.vue","webpack:///src/components/cardTable/CardTable.vue","webpack:///./src/components/cardTable/CardTable.vue?d1a9","webpack:///./src/components/cardTable/CardTable.vue?87e8","webpack:///./src/components/btnCardTable/btnAddCardTable.vue?9142","webpack:///./src/components/cardTable/CardTable.vue?a98d"],"names":["render","_vm","this","_c","_self","staticClass","attrs","variant","url","on","handleClick","$event","isHovered","class","icon","staticStyle","_v","_s","text","staticRenderFns","props","type","String","default","data","methods","$emit","component","dataCards","_l","listaItems","item","key","id","imagen","descripcion","directives","name","rawName","modifiers","deleteRow","Swal","require","logoEmpresa","usuario","row","imageUrl","title","value","length","iconName","color","tipo","animated","onActivate","onDeactivate","$isLoading","JSON","parse","localStorage","getItem","getData","core","index","window","$","DataTable","language","error","fire","showCancelButton","confirmButtonColor","cancelButtonColor","confirmButtonText","cancelButtonText","then","result","isConfirmed","$store","dispatch","path","res","components","CardTable","BtnAddCardTable","card","_card$sizeValue","style","boxShadow","activeCard","showCursorGlow","hideCursorGlow","event","handleMouseMove","toggleActive","showGlow","left","cursorX","top","cursorY","glowStyle","opacity","_e","width","height","backgroundColor","computeBorderRadius","computeAnimateIcon","animatedState","shouldAnimateTitle","fontSize","sizeValue","evaluateValue","Array","animationFrameId","beat","beatFade","bounce","fade","flip","shake","spin","spinReverse","spinPulse","tipoIcon","circle","squared","shield","water","mounted","onResize","addEventListener","beforeDestroy","removeEventListener","forEach","_","checkTitleLength","$nextTick","titleElement","$el","querySelectorAll","scrollWidth","clientWidth","$set","rect","currentTarget","getBoundingClientRect","targetX","clientX","targetY","clientY","cancelAnimationFrame","animate","startX","startY","dx","dy","Math","abs","requestAnimationFrame"],"mappings":"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","file":"js/chunk-fc860144.b50aa4239f38aac97a6f.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('vs-button',{staticClass:\"btn-add\",attrs:{\"success\":_vm.variant === 'success',\"danger\":_vm.variant === 'danger',\"warn\":_vm.variant === 'warn',\"to\":`${_vm.url}`},on:{\"click\":_vm.handleClick,\"mouseover\":function($event){_vm.isHovered = true},\"mouseleave\":function($event){_vm.isHovered = false}}},[_c('i',{class:`fas fa-${_vm.icon} position-absolute ${_vm.isHovered ? 'fa-beat' : ''}`,staticStyle:{\"right\":\"0\",\"top\":\"0\",\"font-size\":\"1.5rem\"}}),_vm._v(\" \"+_vm._s(_vm.text)+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--btn add card table -->\r\n<template>\r\n <vs-button\r\n @click=\"handleClick\"\r\n @mouseover=\"isHovered = true\"\r\n @mouseleave=\"isHovered = false\"\r\n :success=\"variant === 'success'\"\r\n :danger=\"variant === 'danger'\"\r\n :warn=\"variant === 'warn'\"\r\n class=\"btn-add\"\r\n :to=\"`${url}`\"\r\n >\r\n <i\r\n :class=\"`fas fa-${icon} position-absolute ${isHovered ? 'fa-beat' : ''}`\"\r\n style=\"right: 0; top: 0; font-size: 1.5rem\"\r\n ></i>\r\n {{ text }}\r\n </vs-button>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n props: {\r\n variant: {\r\n type: String,\r\n default: \"\",\r\n },\r\n icon: {\r\n type: String,\r\n default: \"circle-plus\",\r\n },\r\n text: {\r\n type: String,\r\n default: \"Click Me!\",\r\n },\r\n url: {\r\n type: String,\r\n default: \"\",\r\n },\r\n },\r\n data() {\r\n return {\r\n isHovered: false,\r\n };\r\n },\r\n methods: {\r\n handleClick() {\r\n // Emitir un evento personalizado cuando se hace clic en el botón\r\n this.$emit(\"click\");\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.btn-add {\r\n position: relative;\r\n height: 100%;\r\n width: 100%;\r\n font-size: 0.9rem;\r\n font-weight: bold;\r\n margin: 0;\r\n overflow: visible;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./btnAddCardTable.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./btnAddCardTable.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./btnAddCardTable.vue?vue&type=template&id=9ddaed84&scoped=true\"\nimport script from \"./btnAddCardTable.vue?vue&type=script&lang=js\"\nexport * from \"./btnAddCardTable.vue?vue&type=script&lang=js\"\nimport style0 from \"./btnAddCardTable.vue?vue&type=style&index=0&id=9ddaed84&prod&scoped=true&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 \"9ddaed84\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('HXContentCard',{attrs:{\"title\":\"Lista de Medallas\"}},[_c('div',{staticClass:\"row px-5 py-4\",staticStyle:{\"gap\":\"1rem\"}},[_c('div',{staticClass:\"col-12 col-md-10\"},[_c('CardTable',{attrs:{\"data\":_vm.dataCards}})],1),_c('div',{staticClass:\"col-12 col-md\"},[_c('BtnAddCardTable',{attrs:{\"text\":\"Agregar Nueva Medalla\",\"url\":\"Medallas_agregar\"}})],1)]),_c('div',{staticClass:\"table-responsive px-4 mt-3\"},[_c('table',{staticClass:\"table table-bordered table-responsive-md table-striped text-center\",attrs:{\"id\":\"datatable_areas\"}},[_c('thead',[_c('tr',[_c('th',{staticStyle:{\"width\":\"20%\"}},[_vm._v(\"Imagen Medalla\")]),_c('th',[_vm._v(\"Nombre Medalla\")]),_c('th',{staticStyle:{\"width\":\"20%\"}},[_vm._v(\"Opciones\")])])]),_c('tbody',_vm._l((_vm.listaItems),function(item){return _c('tr',{key:item.id},[_c('td',[_c('img',{attrs:{\"src\":item.imagen,\"alt\":item.descripcion,\"width\":\"60\",\"height\":\"60\"}})]),_c('td',[_c('p',[_vm._v(\" \"+_vm._s(item.descripcion)+\" \")])]),_c('td',{staticClass:\"d-flex justify-content-center align-items-center h-100\",staticStyle:{\"height\":\"90px\"}},[_c('vs-button',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}],attrs:{\"title\":\"Editar\",\"success\":\"\",\"to\":`Medallas_editar/${item.id}`}},[_c('i',{staticClass:\"fas fa-solid fa-pen\"})]),_c('vs-button',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}],attrs:{\"title\":\"Eliminar\",\"danger\":\"\"},on:{\"click\":function($event){return _vm.deleteRow(item.id)}}},[_c('i',{staticClass:\"fas fa-solid fa-trash\"})])],1)])}),0)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <HXContentCard title=\"Lista de Medallas\">\r\n <div class=\"row px-5 py-4\" style=\"gap: 1rem\">\r\n <div class=\"col-12 col-md-10\">\r\n <!-- linar-style cursor glow -->\r\n <CardTable :data=\"dataCards\" />\r\n </div>\r\n <!-- btn new capacitacion -->\r\n <div class=\"col-12 col-md\">\r\n <BtnAddCardTable text=\"Agregar Nueva Medalla\" url=\"Medallas_agregar\" />\r\n </div>\r\n </div>\r\n <div class=\"table-responsive px-4 mt-3\">\r\n <table\r\n id=\"datatable_areas\"\r\n class=\"table table-bordered table-responsive-md table-striped text-center\"\r\n >\r\n <thead>\r\n <tr>\r\n <th style=\"width: 20%\">Imagen Medalla</th>\r\n <th>Nombre Medalla</th>\r\n <th style=\"width: 20%\">Opciones</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr v-for=\"item in listaItems\" :key=\"item.id\">\r\n <td>\r\n <img\r\n :src=\"item.imagen\"\r\n :alt=\"item.descripcion\"\r\n width=\"60\"\r\n height=\"60\"\r\n />\r\n </td>\r\n <td>\r\n <p>\r\n {{ item.descripcion }}\r\n </p>\r\n </td>\r\n <td\r\n class=\"d-flex justify-content-center align-items-center h-100\"\r\n style=\"height: 90px\"\r\n >\r\n <!-- editar -->\r\n <vs-button\r\n v-b-tooltip.hover\r\n title=\"Editar\"\r\n success\r\n :to=\"`Medallas_editar/${item.id}`\"\r\n >\r\n <i class=\"fas fa-solid fa-pen\"></i>\r\n </vs-button>\r\n <!-- eliminar -->\r\n <vs-button\r\n v-b-tooltip.hover\r\n title=\"Eliminar\"\r\n danger\r\n @click=\"deleteRow(item.id)\"\r\n >\r\n <i class=\"fas fa-solid fa-trash\"></i>\r\n </vs-button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </HXContentCard>\r\n</template>\r\n<script>\r\nimport BtnAddCardTable from \"../../../components/btnCardTable/btnAddCardTable.vue\";\r\nimport CardTable from \"../../../components/cardTable/CardTable.vue\";\r\nimport { core } from \"../../../config/pluginInit\";\r\nconst Swal = require(\"sweetalert2\");\r\n\r\nexport default {\r\n name: \"DataTable\",\r\n data() {\r\n return {\r\n listaItems: [],\r\n logoEmpresa: \"\",\r\n usuario: {},\r\n row: {\r\n imageUrl: \"\",\r\n name: \"\",\r\n },\r\n dataCards: [\r\n {\r\n title: \"Medallas\",\r\n value: () => this.listaItems.length,\r\n iconName: \"medal\",\r\n color: \"rgba(22, 162, 117, 1)\",\r\n tipo: \"squared\",\r\n animated: \"bounce\",\r\n onActivate: () => {\r\n console.log(\"Activated\");\r\n },\r\n onDeactivate: () => {\r\n console.log(\"Deactivate\");\r\n },\r\n },\r\n ],\r\n };\r\n },\r\n async mounted() {\r\n try {\r\n this.$isLoading(true);\r\n this.usuario = JSON.parse(localStorage.getItem(\"setPersonaAct\"));\r\n await this.getData();\r\n core.index();\r\n window.$(\"#datatable_areas\").DataTable({\r\n language: {\r\n url: \"//cdn.datatables.net/plug-ins/1.10.15/i18n/Spanish.json\",\r\n },\r\n });\r\n this.$isLoading(false);\r\n } catch (error) {\r\n this.$isLoading(false);\r\n console.log(\"error\", error);\r\n }\r\n },\r\n methods: {\r\n async deleteRow(id) {\r\n Swal.fire({\r\n title: \"Seguro eliminar registro?\",\r\n text: \"Después de eliminarlo no podrás recuperarlo!\",\r\n icon: \"warning\",\r\n showCancelButton: true,\r\n confirmButtonColor: \"#186bdd\",\r\n cancelButtonColor: \"rgb(242, 19, 93)\",\r\n confirmButtonText: \"Si!\",\r\n cancelButtonText: \"Cancelar\",\r\n }).then(async (result) => {\r\n if (result.isConfirmed) {\r\n //let loader = this.$loading.show();\r\n await this.$store.dispatch(\"hl_get\", {\r\n path: \"Medallas/Delete/\" + id,\r\n });\r\n await this.getData();\r\n Swal.fire(\"Listo!\", \"Registro eliminado correctamente.\", \"success\");\r\n }\r\n });\r\n },\r\n async getData() {\r\n try {\r\n let res = await this.$store.dispatch(\"hl_post\", {\r\n path: \"Medallas/List/\",\r\n });\r\n console.log(\"Medallas... \", res);\r\n if (res.length > 0) {\r\n this.listaItems = res;\r\n } else {\r\n this.listaItems = [];\r\n }\r\n } catch (error) {\r\n this.listaItems = [];\r\n console.log(\"err\", error);\r\n }\r\n },\r\n },\r\n components: { CardTable, BtnAddCardTable },\r\n};\r\n</script>\r\n<style lang=\"scss\"></style>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Medallas.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Medallas.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Medallas.vue?vue&type=template&id=6c1fe5f4\"\nimport script from \"./Medallas.vue?vue&type=script&lang=js\"\nexport * from \"./Medallas.vue?vue&type=script&lang=js\"\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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row justify-content-center\",staticStyle:{\"gap\":\"1rem\"}},_vm._l((_vm.data),function(card,index){return _c('div',{key:index,staticClass:\"col-12 col-sm-5 col-md d-flex justify-content-between align-items-center rounded p-2 glow-box bg-dark\",style:({\n boxShadow:\n _vm.activeCard === index ? `inset 0 0 0 2px ${card.color}` : 'none',\n }),on:{\"mouseenter\":function($event){return _vm.showCursorGlow(index)},\"mouseleave\":function($event){return _vm.hideCursorGlow(index)},\"mousemove\":(event) => _vm.handleMouseMove(event, index),\"click\":function($event){return _vm.toggleActive(index)}}},[(_vm.showGlow)?_c('div',{staticClass:\"cursor-glow\",style:({\n left: _vm.cursorX[index] + 'px',\n top: _vm.cursorY[index] + 'px',\n ..._vm.glowStyle(card.color),\n opacity: _vm.showGlow[index] ? '1' : '0',\n })}):_vm._e(),_c('div',{class:`d-flex align-items-center justify-content-center`,style:({\n width: '60px',\n height: '60px',\n backgroundColor: card.color,\n 'border-radius': _vm.computeBorderRadius(card.tipo),\n '-webkit-box-shadow': `0px -1px 33px -8px ${card.color}`,\n '-moz-box-shadow': `0px -1px 33px -8px ${card.color}`,\n 'box-shadow': `0px -1px 33px -8px ${card.color}`,\n })},[_c('i',{class:`fas fa-${card.iconName} ${_vm.computeAnimateIcon(\n card.animated,\n index\n )}`,staticStyle:{\"font-size\":\"1.5rem\"}})]),_c('div',{staticClass:\"d-flex flex-column align-items-center\",staticStyle:{\"flex-grow\":\"1\",\"max-width\":\"calc(100% - 60px)\"}},[_c('div',{class:`title-container`},[_c('span',{staticClass:\"font-weight-bold\",class:[\n _vm.showGlow[index] &&\n _vm.animatedState[index] &&\n _vm.shouldAnimateTitle[index]\n ? 'title-animate'\n : 'title-static',\n ]},[_vm._v(\" \"+_vm._s(card.title)+\" \")])]),_c('span',{staticClass:\"font-weight-bold\",style:({\n fontSize: `${card.sizeValue ?? 40}px`,\n })},[_vm._v(_vm._s(_vm.evaluateValue(card.value)))])])])}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!-- card table info -->\r\n<template>\r\n <div class=\"row justify-content-center\" style=\"gap: 1rem\">\r\n <div\r\n v-for=\"(card, index) in data\"\r\n :key=\"index\"\r\n class=\"col-12 col-sm-5 col-md d-flex justify-content-between align-items-center rounded p-2 glow-box bg-dark\"\r\n :style=\"{\r\n boxShadow:\r\n activeCard === index ? `inset 0 0 0 2px ${card.color}` : 'none',\r\n }\"\r\n @mouseenter=\"showCursorGlow(index)\"\r\n @mouseleave=\"hideCursorGlow(index)\"\r\n @mousemove=\"(event) => handleMouseMove(event, index)\"\r\n @click=\"toggleActive(index)\"\r\n >\r\n <!-- linar-style cursor glow -->\r\n <div\r\n v-if=\"showGlow\"\r\n class=\"cursor-glow\"\r\n :style=\"{\r\n left: cursorX[index] + 'px',\r\n top: cursorY[index] + 'px',\r\n ...glowStyle(card.color),\r\n opacity: showGlow[index] ? '1' : '0',\r\n }\"\r\n ></div>\r\n <div\r\n :class=\"`d-flex align-items-center justify-content-center`\"\r\n :style=\"{\r\n width: '60px',\r\n height: '60px',\r\n backgroundColor: card.color,\r\n 'border-radius': computeBorderRadius(card.tipo),\r\n '-webkit-box-shadow': `0px -1px 33px -8px ${card.color}`,\r\n '-moz-box-shadow': `0px -1px 33px -8px ${card.color}`,\r\n 'box-shadow': `0px -1px 33px -8px ${card.color}`,\r\n }\"\r\n >\r\n <i\r\n :class=\"`fas fa-${card.iconName} ${computeAnimateIcon(\r\n card.animated,\r\n index\r\n )}`\"\r\n style=\"font-size: 1.5rem\"\r\n ></i>\r\n </div>\r\n <div\r\n class=\"d-flex flex-column align-items-center\"\r\n style=\"flex-grow: 1; max-width: calc(100% - 60px)\"\r\n >\r\n <div :class=\"`title-container`\">\r\n <span\r\n :class=\"[\r\n showGlow[index] &&\r\n animatedState[index] &&\r\n shouldAnimateTitle[index]\r\n ? 'title-animate'\r\n : 'title-static',\r\n ]\"\r\n class=\"font-weight-bold\"\r\n >\r\n {{ card.title }}\r\n </span>\r\n </div>\r\n <span\r\n class=\"font-weight-bold\"\r\n :style=\"{\r\n fontSize: `${card.sizeValue ?? 40}px`,\r\n }\"\r\n >{{ evaluateValue(card.value) }}</span\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n // Documentación del componente CardTable.js\r\n\r\n /**\r\n * Este componente Vue.js se utiliza para renderizar un conjunto de tarjetas de información.\r\n * Cada tarjeta es interactiva y muestra diferentes tipos de datos y un Ãcono.\r\n *\r\n * Propiedades:\r\n * - data: Un array de objetos que contiene la información para renderizar cada tarjeta.\r\n *\r\n * Estado interno:\r\n * - showGlow: Un objeto que controla si el efecto de brillo debe mostrarse en cada tarjeta.\r\n * - cursorX: Un objeto que contiene la coordenada X del cursor para cada tarjeta.\r\n * - cursorY: Un objeto que contiene la coordenada Y del cursor para cada tarjeta.\r\n * - animationFrameId: Un objeto que guarda el ID de la solicitud de animación para cada tarjeta.\r\n * - animatedState: Un objeto que guarda el estado de animación para cada tarjeta.\r\n * - activeCard: Un número que indica el Ãndice de la tarjeta activa. Null si no hay ninguna tarjeta activa.\r\n * - shouldAnimateTitle: Un objeto que determina si el tÃtulo de la tarjeta debe animarse para cada tarjeta.\r\n *\r\n * Métodos:\r\n * - toggleActive: Cambia el estado activo de una tarjeta.\r\n * - computeBorderRadius: Calcula el radio del borde según el tipo de tarjeta.\r\n * - computeAnimateIcon: Devuelve la clase de animación apropiada para el Ãcono.\r\n * - evaluateValue: Evalúa el valor que debe mostrarse en la tarjeta.\r\n * - glowStyle: Devuelve el estilo CSS para el efecto de brillo del cursor.\r\n * - handleMouseMove: Maneja el movimiento del mouse para el efecto de brillo del cursor.\r\n * - showCursorGlow: Activa el efecto de brillo del cursor.\r\n * - hideCursorGlow: Desactiva el efecto de brillo del cursor.\r\n * - onResize: Maneja el evento de cambio de tamaño de la ventana.\r\n * - checkTitleLength: Verifica la longitud del tÃtulo para determinar si necesita animación.\r\n */\r\n\r\n props: {\r\n /*\r\n // Ejemplo de un objeto dentro del array 'data':\r\n {\r\n title: \"Finalizadas\",\r\n value: () => this.listaItems.filter((cap) => cap.estadoCap && cap.disponible).length,\r\n iconName: \"calendar-check\",\r\n color: \"rgba(22, 162, 117, 1)\",\r\n tipo: \"squared\",\r\n animated: \"shake\",\r\n onActivate: () => { console.log(\"Tarjeta activada\"); },\r\n onDeactivate: () => { console.log(\"Tarjeta desactivada\"); }\r\n },\r\n */\r\n data: {\r\n type: Array,\r\n default: () => [\r\n {\r\n title: \"TÃtulo\",\r\n value: 0,\r\n sizeValue: 40,\r\n iconName: \"crown\",\r\n color: \"rgba(223, 18, 46, 1)\",\r\n tipo: \"circle\",\r\n animated: \"shake\",\r\n onActivate: null,\r\n onDeactivate: null,\r\n },\r\n ],\r\n },\r\n },\r\n data() {\r\n return {\r\n showGlow: {},\r\n cursorX: {},\r\n cursorY: {},\r\n animationFrameId: {},\r\n animatedState: {},\r\n activeCard: null,\r\n shouldAnimateTitle: {},\r\n animated: {\r\n beat: \"fa-beat\",\r\n beatFade: \"fa-beat-fade\",\r\n bounce: \"fa-bounce\",\r\n fade: \"fa-fade\",\r\n flip: \"fa-flip\",\r\n shake: \"fa-shake\",\r\n spin: \"fa-spin\",\r\n spinReverse: \"fa-spin fa-spin-reverse\",\r\n spinPulse: \"fa-spin-pulse\",\r\n },\r\n tipoIcon: {\r\n circle: \"50%\",\r\n squared: \"20%\",\r\n shield: \"49% 51% 48% 52% / 29% 29% 71% 71%\",\r\n water: \"60% 40% 78% 22% / 73% 66% 34% 27%\",\r\n },\r\n };\r\n },\r\n /*\r\nEventos de Ciclo de Vida:\r\n- mounted: Se añade un escuchador para el evento de redimensionamiento de la ventana.\r\n- beforeDestroy: Se elimina el escuchador para el evento de redimensionamiento de la ventana.\r\n*/\r\n mounted() {\r\n this.onResize();\r\n window.addEventListener(\"resize\", this.onResize);\r\n },\r\n beforeDestroy() {\r\n window.removeEventListener(\"resize\", this.onResize);\r\n },\r\n methods: {\r\n onResize() {\r\n this.data.forEach((_, index) => {\r\n this.checkTitleLength(index);\r\n });\r\n },\r\n checkTitleLength(index) {\r\n this.$nextTick(() => {\r\n const titleElement = this.$el.querySelectorAll(\".title-container span\")[\r\n index\r\n ];\r\n if (titleElement) {\r\n // console.log(\"Client Width: \", titleElement.clientWidth);\r\n // console.log(\"Scroll Width: \", titleElement.scrollWidth);\r\n\r\n if (titleElement.scrollWidth > titleElement.clientWidth) {\r\n this.$set(this.shouldAnimateTitle, index, true);\r\n } else {\r\n this.$set(this.shouldAnimateTitle, index, false);\r\n }\r\n }\r\n });\r\n },\r\n toggleActive(index) {\r\n // Desactivar tarjeta anterior si es diferente de la actual\r\n if (this.activeCard !== null && this.activeCard !== index) {\r\n if (typeof this.data[this.activeCard].onDeactivate === \"function\") {\r\n this.data[this.activeCard].onDeactivate();\r\n }\r\n }\r\n\r\n // Cambiar la tarjeta activa\r\n this.activeCard = this.activeCard === index ? null : index;\r\n\r\n // Ejecutar la función de activación o desactivación correspondiente\r\n if (this.activeCard !== null) {\r\n if (typeof this.data[this.activeCard].onActivate === \"function\") {\r\n this.data[this.activeCard].onActivate();\r\n }\r\n } else {\r\n if (typeof this.data[index].onDeactivate === \"function\") {\r\n this.data[index].onDeactivate();\r\n }\r\n }\r\n },\r\n computeBorderRadius(tipo) {\r\n return this.tipoIcon[tipo] || \"20% 40% 20% 40%\";\r\n },\r\n computeAnimateIcon(tipo, index) {\r\n if (this.animatedState[index]) {\r\n return this.animated[tipo] || \"\";\r\n }\r\n },\r\n evaluateValue(value) {\r\n if (typeof value === \"function\") {\r\n return value();\r\n }\r\n return value;\r\n },\r\n glowStyle(color) {\r\n return {\r\n boxShadow: `0 0 40px 20px ${color}`,\r\n };\r\n },\r\n handleMouseMove(event, index) {\r\n const rect = event.currentTarget.getBoundingClientRect();\r\n const targetX = event.clientX - rect.left;\r\n const targetY = event.clientY - rect.top;\r\n\r\n // Cancelar la animación anterior si está en curso\r\n if (this.animationFrameId[index]) {\r\n cancelAnimationFrame(this.animationFrameId[index]);\r\n }\r\n\r\n // Iniciar una nueva animación\r\n const animate = () => {\r\n const startX = this.cursorX[index] || 0;\r\n const startY = this.cursorY[index] || 0;\r\n const dx = (targetX - startX) * 0.1; // Factor de suavizado\r\n const dy = (targetY - startY) * 0.1; // Factor de suavizado\r\n\r\n this.$set(this.cursorX, index, startX + dx);\r\n this.$set(this.cursorY, index, startY + dy);\r\n\r\n if (Math.abs(dx) > 0.1 || Math.abs(dy) > 0.1) {\r\n // Continuar la animación\r\n this.animationFrameId[index] = requestAnimationFrame(animate);\r\n }\r\n };\r\n\r\n // Iniciar la animación\r\n this.animationFrameId[index] = requestAnimationFrame(animate);\r\n },\r\n showCursorGlow(index) {\r\n this.$set(this.animatedState, index, true);\r\n this.$set(this.showGlow, index, true);\r\n },\r\n hideCursorGlow(index) {\r\n this.$set(this.animatedState, index, false);\r\n this.$set(this.showGlow, index, false);\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n/*\r\nEstilos:\r\n- glow-box: Configuración base para el efecto de resplandor.\r\n- cursor-glow: Estilo para el resplandor del cursor.\r\n- title-container: Contenedor para el tÃtulo de la tarjeta.\r\n- title-animate: Animación para el tÃtulo de la tarjeta.\r\n- title-static: Estilo estático para el tÃtulo de la tarjeta.\r\n*/\r\n\r\n.glow-box {\r\n position: relative;\r\n overflow: hidden;\r\n transition: box-shadow 0.3s ease;\r\n cursor: default;\r\n}\r\n\r\n.cursor-glow {\r\n position: absolute;\r\n width: 0;\r\n height: 0;\r\n border-radius: 50%;\r\n pointer-events: none;\r\n transition: left 0.2s, top 0.2s, opacity 0.5s ease;\r\n}\r\n\r\n.title-container {\r\n max-width: calc(100% - 20px);\r\n overflow: hidden;\r\n height: 20px;\r\n}\r\n\r\n.title-animate {\r\n display: inline-block;\r\n white-space: nowrap;\r\n animation: marquee 5s linear infinite;\r\n transition: transform 0.3s ease;\r\n}\r\n\r\n.title-static {\r\n display: inline-block;\r\n max-width: 100%; /* Se ajusta al tamaño del contenedor */\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n}\r\n\r\n@keyframes marquee {\r\n from {\r\n transform: translateX(0%);\r\n }\r\n to {\r\n transform: translateX(-100%);\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardTable.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardTable.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CardTable.vue?vue&type=template&id=73483910&scoped=true\"\nimport script from \"./CardTable.vue?vue&type=script&lang=js\"\nexport * from \"./CardTable.vue?vue&type=script&lang=js\"\nimport style0 from \"./CardTable.vue?vue&type=style&index=0&id=73483910&prod&scoped=true&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 \"73483910\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./btnAddCardTable.vue?vue&type=style&index=0&id=9ddaed84&prod&scoped=true&lang=css\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardTable.vue?vue&type=style&index=0&id=73483910&prod&scoped=true&lang=css\""],"sourceRoot":""}