@vixoniccom/aniversarios 1.2.3-dev.1 → 1.3.0-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/.github/workflows/sonarqube.yml +30 -0
  2. package/CHANGELOG.md +9 -0
  3. package/build.zip +0 -0
  4. package/configuration/appearanceGroup/AppearanceInputs.ts +101 -0
  5. package/configuration/appearanceGroup/index.ts +8 -0
  6. package/configuration/dataGroup/DataInputs.ts +62 -0
  7. package/configuration/dataGroup/index.ts +8 -0
  8. package/configuration/index.ts +8 -0
  9. package/configuration/standardGroup/StandardInputs.ts +211 -0
  10. package/configuration/standardGroup/index.ts +8 -0
  11. package/configuration/utils.ts +17 -0
  12. package/configuration.json +192 -196
  13. package/package.json +2 -2
  14. package/sonar-project.properties +1 -0
  15. package/src/App.tsx +14 -113
  16. package/src/anniversary-loader.ts +70 -0
  17. package/src/components/AnniversaryItem/components/AnniversaryDate/CircleDate/index.tsx +7 -8
  18. package/src/components/AnniversaryItem/components/AnniversaryDate/FlatDate/index.tsx +5 -6
  19. package/src/components/AnniversaryItem/components/AnniversaryDate/OutlineDate/index.tsx +9 -11
  20. package/src/components/AnniversaryItem/components/AnniversaryDate/TextCalendarDate/index.tsx +8 -10
  21. package/src/components/AnniversaryItem/components/AnniversaryDate/TextDate/index.tsx +4 -5
  22. package/src/components/AnniversaryItem/components/AnniversaryDate/index.tsx +4 -12
  23. package/src/components/AnniversaryItem/components/ClassicItem/index.tsx +10 -10
  24. package/src/components/AnniversaryItem/components/Separator/Separator.tsx +2 -4
  25. package/src/components/AnniversaryItem/components/utils.ts +43 -28
  26. package/src/components/AnniversaryItem/index.tsx +4 -4
  27. package/src/components/FontLoader/index.tsx +5 -10
  28. package/src/components/FormattedText/index.tsx +6 -5
  29. package/src/components/ItemsContainer/components/Item.tsx +15 -7
  30. package/src/components/ItemsContainer/components/animation.ts +21 -27
  31. package/src/components/ItemsContainer/index.tsx +7 -7
  32. package/src/components/Render/index.tsx +13 -14
  33. package/src/global.d.ts +8 -0
  34. package/src/main.ts +46 -0
  35. package/src/parameters.d.ts +4 -119
  36. package/src/service-parsers.ts +40 -0
  37. package/src/test/parameters.json +3 -2
  38. package/src/test/services.json +158 -0
  39. package/src/context/configureContext/ConfigureContext.tsx +0 -8
  40. package/src/context/configureContext/ConfigureProvider.tsx +0 -72
  41. package/src/context/configureContext/configureReducer.ts +0 -62
  42. package/src/context/dataContext/DataContex.tsx +0 -8
  43. package/src/context/dataContext/DataProvider.tsx +0 -25
  44. package/src/context/dataContext/dataReducer.ts +0 -12
  45. package/src/helpers/filterEmployees.ts +0 -38
  46. package/src/helpers/getEmployees.ts +0 -29
  47. package/src/helpers/utils.ts +0 -46
  48. package/src/main.tsx +0 -43
@@ -25,7 +25,7 @@ interface Props {
25
25
  export const FormattedText: React.FunctionComponent<Props> = ({ text, format, maxChar, lineHeight, style, unit, paddingBottom, paddingTop }) => {
26
26
  const trimText = (text: any, maxChar: any) => {
27
27
  const isValid = maxChar && maxChar >= 3
28
- if (isValid && (text && text.length > maxChar) || false) {
28
+ if (isValid && (text && text.length > maxChar)) {
29
29
  const returnText = text.substring(0, maxChar - 3)
30
30
  returnText.substr(-1, 3)
31
31
  return `${returnText.trim()}...`
@@ -35,7 +35,7 @@ export const FormattedText: React.FunctionComponent<Props> = ({ text, format, ma
35
35
 
36
36
  const checkNested = (obj: any, path: string): boolean => {
37
37
  return path.split('.').every(segment => {
38
- if (obj && obj.hasOwnProperty(segment)) {
38
+ if (obj?.hasOwnProperty(segment)) {
39
39
  obj = obj[segment]
40
40
  return true
41
41
  }
@@ -52,10 +52,11 @@ export const FormattedText: React.FunctionComponent<Props> = ({ text, format, ma
52
52
  }
53
53
 
54
54
  const renderText = maxChar ? trimText(text, maxChar) : text
55
- const containerStyle = Object.assign({
55
+ const containerStyle = {
56
56
  display: 'inline-flex',
57
- justifyContent: getHorizontalAlignment(format.alignment)
58
- }, style)
57
+ justifyContent: getHorizontalAlignment(format.alignment),
58
+ ...(style as any)
59
+ }
59
60
 
60
61
  return (
61
62
  <div style={containerStyle}>
@@ -16,9 +16,21 @@ interface Props {
16
16
  style: any
17
17
  }
18
18
 
19
+
20
+
19
21
  export const Item = ({ width, height, containerData, verticalGap, horizontalGap, children, style }: Props) => {
20
22
  const itemRef = useRef(null)
21
23
 
24
+ let topPosition = '0';
25
+ if (containerData.ic_rowIndex !== 0) {
26
+ topPosition = verticalGap ? `${verticalGap * containerData.ic_rowIndex}%` : '0';
27
+ }
28
+
29
+ let leftPadding = '0'
30
+ if (containerData.ic_columnIndex !== 0) {
31
+ leftPadding = horizontalGap ? `${horizontalGap}%` : '0';
32
+ }
33
+
22
34
  return (
23
35
  <div ref={itemRef}
24
36
  style={{
@@ -29,13 +41,9 @@ export const Item = ({ width, height, containerData, verticalGap, horizontalGap,
29
41
  justifyContent: aligments['center'],
30
42
  width: width,
31
43
  height: height,
32
- top: containerData.ic_rowIndex === 0
33
- ? '0'
34
- : verticalGap ? `${verticalGap * containerData.ic_rowIndex}%` : '0',
35
- paddingLeft: containerData.ic_columnIndex === 0
36
- ? '0'
37
- : horizontalGap ? `${horizontalGap}%` : '0'
38
- , ...style
44
+ top: topPosition,
45
+ paddingLeft: leftPadding,
46
+ ...style
39
47
  }}
40
48
  >
41
49
  {React.cloneElement(children, containerData)}
@@ -58,7 +58,7 @@ const animationModes = {
58
58
  },
59
59
  }
60
60
 
61
- class Animation {
61
+ export class AnimationController {
62
62
  public mode: any
63
63
  public duration: number
64
64
  public speed: number
@@ -73,12 +73,12 @@ class Animation {
73
73
  this.reverse = true
74
74
  }
75
75
 
76
- configure(options: Options) {
77
- this.mode = animationModes.hasOwnProperty(options.mode) ? animationModes[options.mode] : animationModes.fade
76
+ configure(options: Partial<Options>) {
77
+ this.mode = options.mode && animationModes.hasOwnProperty(options.mode) ? animationModes[options.mode] : animationModes.fade
78
78
  this.duration = options.duration || 10000
79
79
  this.speed = 1000 * (options.speed || 1)
80
80
  this.stagger = this.speed / (options.stagger || 4)
81
- this.reverse = options.reverse
81
+ this.reverse = options.reverse !== undefined ? options.reverse : true
82
82
  }
83
83
 
84
84
  getInitialStyle() {
@@ -96,35 +96,29 @@ class Animation {
96
96
  autoplay: false,
97
97
  })
98
98
  animation.add(
99
- Object.assign(
100
- {
101
- targets: els,
102
- duration: this.speed,
103
- delay: function (_el: any, i: any, _l: any) {
104
- return i * self.stagger
105
- },
99
+ {
100
+ targets: els,
101
+ duration: this.speed,
102
+ delay: function (_el: any, i: any, _l: any) {
103
+ return i * self.stagger
106
104
  },
107
- this.mode.in
108
- )
105
+ ...this.mode.in
106
+ }
109
107
  )
110
108
  animation.add(
111
- Object.assign(
112
- {
113
- targets: els,
114
- duration: this.speed,
115
- delay: function (_el: any, _i: any, _l: any) {
116
- return _i * self.stagger
117
- },
118
- complete: () => {
119
- finished()
120
- },
109
+ {
110
+ targets: els,
111
+ duration: this.speed,
112
+ delay: function (_el: any, _i: any, _l: any) {
113
+ return _i * self.stagger
121
114
  },
122
- this.mode.out
123
- ),
115
+ complete: () => {
116
+ finished()
117
+ },
118
+ ...this.mode.out
119
+ },
124
120
  `+=${offset}`
125
121
  )
126
122
  animation.play()
127
123
  }
128
124
  }
129
-
130
- module.exports = exports = Animation
@@ -1,8 +1,8 @@
1
- import React, { useContext, useState, useRef, useEffect } from 'react'
1
+ import { useState, useRef, useEffect } from 'react'
2
2
  import { Item } from './components/Item'
3
- import { ConfigureContext } from '../../context/configureContext/ConfigureContext'
4
3
  import { useStateWithCallbackLazy } from 'use-state-with-callback'
5
4
  import { ReactElementLike } from 'prop-types'
5
+ import { AnimationController } from './components/animation'
6
6
 
7
7
  const stages = {
8
8
  idle: 'idle',
@@ -14,20 +14,20 @@ interface Props {
14
14
  items: ReactElementLike[],
15
15
  animation: Animation,
16
16
  animate: boolean
17
+ data: VixonicData
17
18
  }
18
19
 
19
20
  interface Animation {
20
- mode?: string
21
+ mode?: "fade" | "slideRight" | "slideLeft"
21
22
  duration?: number,
22
23
  speed?: number,
23
24
  reverse?: boolean
24
25
  }
25
26
 
26
- export const ItemsContainer = ({ animation, items, animate }: Props) => {
27
- const { configureState } = useContext(ConfigureContext)
28
- const { containerColumns, containerRows, containerRowsGap, containerColumnsGap } = configureState.parameters
27
+ export const ItemsContainer = ({ animation, items, animate, data }: Props) => {
28
+ const { containerColumns, containerRows, containerRowsGap, containerColumnsGap } = data.parameters
29
29
  const container = useRef<HTMLDivElement>(null)
30
- const [animations] = useState(new (require('./components/animation'))())
30
+ const [animations] = useState(new AnimationController())
31
31
  let itemsCount = Number(containerColumns) * Number(containerRows)
32
32
  let columns = Number(containerColumns) || 1
33
33
  let rows = Number(containerRows) || 1
@@ -1,6 +1,3 @@
1
- import React, { useContext } from 'react'
2
- import { ConfigureContext } from '../../context/configureContext/ConfigureContext'
3
- import { DataContext } from '../../context/dataContext/DataContex'
4
1
  import { FontLoader } from '../FontLoader'
5
2
  import { FormattedText } from '../FormattedText'
6
3
  import { AnniversaryItem } from '../AnniversaryItem'
@@ -8,26 +5,27 @@ import { ItemsContainer } from '../ItemsContainer'
8
5
 
9
6
  interface Props {
10
7
  start: boolean
8
+ appData: VixonicData
9
+ anniversaries: Anniversary[]
11
10
  }
12
11
 
13
- export const Render = ({ start }: Props) => {
14
- const { configureState } = useContext(ConfigureContext)
15
- const { dataEmployee } = useContext(DataContext)
16
- const { parameters, downloadsPath } = configureState
12
+
13
+ export const Render = ({ start, appData, anniversaries }: Props) => {
14
+ const { parameters, downloadsPath } = appData
17
15
  const { backgroundImage,
18
16
  padding,
19
- msj0 = '',
17
+ defaultMessage = '',
20
18
  animationMode,
21
19
  animationOrder,
22
20
  animationSpeed,
23
21
  animationTime,
24
22
  } = parameters
25
23
 
26
- const backgroundImageState = backgroundImage && backgroundImage.filename
24
+ const backgroundImageState = backgroundImage?.filename
27
25
  ? `url("${downloadsPath}/${backgroundImage.filename}")` : ''
28
26
 
29
- const anniversaryItems = dataEmployee.dataEmployee.map((anniversary: DataEmployee) => {
30
- return <AnniversaryItem style={'standard'} anniversary={anniversary} />
27
+ const anniversaryItems = anniversaries.map((anniversary: Anniversary) => {
28
+ return <AnniversaryItem style={'standard'} anniversary={anniversary} data={appData} />
31
29
  })
32
30
 
33
31
  return (
@@ -41,8 +39,8 @@ export const Render = ({ start }: Props) => {
41
39
  backgroundSize: '100% 100%',
42
40
  padding: padding
43
41
  }}>
44
- <FontLoader paths={['nameFormat.font', 'descriptionFormat.font', 'dateDayFormat.font', 'dateMonthFormat.font', 'optionalFormat.font']} />
45
- {(dataEmployee.dataEmployee && dataEmployee.dataEmployee.length > 0) ?
42
+ <FontLoader paths={['nameFormat.font', 'descriptionFormat.font', 'dateDayFormat.font', 'dateMonthFormat.font', 'optionalFormat.font']} data={appData} />
43
+ {( anniversaries.length > 0) ?
46
44
  <ItemsContainer
47
45
  items={anniversaryItems}
48
46
  animation={{
@@ -52,6 +50,7 @@ export const Render = ({ start }: Props) => {
52
50
  reverse: animationOrder
53
51
  }}
54
52
  animate={start}
53
+ data={appData}
55
54
  /> :
56
55
  <div style={{
57
56
  width: '100%',
@@ -60,7 +59,7 @@ export const Render = ({ start }: Props) => {
60
59
  justifyContent: 'center',
61
60
  alignItems: 'center'
62
61
  }}>
63
- <FormattedText text={msj0.trim() || 'Sin ingresos'} format={parameters.nameFormat || parameters.descriptionFormat} />
62
+ <FormattedText text={defaultMessage.trim() || 'Sin ingresos'} format={parameters.nameFormat || parameters.descriptionFormat} />
64
63
  </div>
65
64
  }
66
65
  </div >
@@ -0,0 +1,8 @@
1
+ declare interface Anniversary {
2
+ month: number
3
+ day: number
4
+ name: string
5
+ image?: string
6
+ position?: string
7
+ optional?: string
8
+ }
package/src/main.ts CHANGED
@@ -0,0 +1,46 @@
1
+ import React from 'react'
2
+ import ReactDOM from 'react-dom'
3
+ import { App } from './App'
4
+ import { AnniversaryLoader } from './anniversary-loader'
5
+ const { ipcRenderer } = require('electron')
6
+
7
+ let start: boolean = false
8
+ let appData: VixonicData
9
+ let anniversaries: Anniversary[] = []
10
+
11
+ const anniversariesLoader = new AnniversaryLoader()
12
+
13
+ anniversariesLoader.onData = (update) => {
14
+ anniversaries = update
15
+ render()
16
+ }
17
+
18
+ ipcRenderer.on('preload', (_event: any, data: VixonicData) => {
19
+ appData = data
20
+ anniversariesLoader.update(data)
21
+ render()
22
+ })
23
+
24
+ ipcRenderer.on('start', (_event: any, data: VixonicData) => {
25
+ appData = data
26
+ anniversariesLoader.update(data)
27
+ start = true
28
+ render()
29
+ })
30
+
31
+ ipcRenderer.on('update', (_event: any, data: VixonicData) => {
32
+ appData = data
33
+ anniversariesLoader.update(data)
34
+ render()
35
+ })
36
+
37
+ ipcRenderer.on('finish', (_event: any) => {
38
+ anniversariesLoader.stop()
39
+ console.log('finish')
40
+ })
41
+
42
+ function render() {
43
+ ReactDOM.render(
44
+ React.createElement(App, { start, appData, anniversaries }), document.getElementById('root')
45
+ )
46
+ }
@@ -1,124 +1,9 @@
1
-
2
-
3
1
  declare type VixonicData = {
4
- parameters: VixonicParameters,
5
- services?: { [key: string]: { data?: any, updatedAt?: number } }
6
2
  downloadsPath: string
3
+ services: { [key: string]: { data?: any, updatedAt?: number } }
4
+ parameters: VixonicParameters
7
5
  }
8
6
 
9
-
10
7
  declare type VixonicParameters = Partial<{
11
- abbreviatedMonths: boolean
12
- animationMode: string
13
- animationOrder: boolean
14
- animationSpeed: number
15
- animationTime: string
16
- animationStagger:number
17
- apiDomain: string
18
- backgroundImage: GeneralData
19
- containerColumns: string
20
- containerRows: string
21
- containerRowsGap: string
22
- containerColumnsGap:string
23
- dataMode: string
24
- dateAlignment: keyof typeof alignment
25
- dateDayFormat: DateFormat
26
- dateEnabled: boolean
27
- dateMonthFormat: DateFormat
28
- datePosition: number
29
- datePrimaryColor: string
30
- dateStyle: keyof typeof styles
31
- descriptionEnabled: boolean
32
- descriptionFormat: DateFormat
33
- optionalEnabled: boolean
34
- optionalFormat: DateFormat
35
- excludePast: boolean
36
- imageAlignment: keyof typeof alignment
37
- imageEnabled: boolean
38
- imagePosition: number
39
- imageStyle: keyof typeof borderStyles,
40
- imageSize: number
41
- itemMargins: string
42
- msj0: string
43
- nameFormat: DateFormat
44
- orientation: string
45
- padding: string
46
- photosMode: string
47
- photosZip: GeneralData
48
- template: string
49
- textAlignment: keyof typeof alignment
50
- textPosition: number
51
- updateTime: number
52
- urlBaseApi: string,
53
- imageMargin: string,
54
- textMargin: string,
55
- dateMargin: string,
56
- separator: boolean,
57
- separatorWidth: number,
58
- separatorColor: string,
59
- nameMaxChar: number,
60
- descriptionMaxChar: number,
61
- }>
62
-
63
-
64
- declare type DataEmployee = {
65
- apellidoPate: string
66
- area: string
67
- cargo: string
68
- contrato: string
69
- empleado: string
70
- empresa: string
71
- estado: string
72
- fechaInic: string
73
- modalidad_contrato: string
74
- nombre: string
75
- sede: string
76
- situacion: string
77
- tipoCont: string,
78
- nombreCargo: string,
79
- day:number
80
- month:number
81
- name:string
82
- position:string
83
- image:string
84
- optional: string
85
- }
86
-
87
- declare type Employees = {
88
- dataEmployee: DataEmployee[] | any[][]
89
- }
90
-
91
- type GeneralData = {
92
- filename?: string
93
- id?: string,
94
- extension?: string,
95
- _isAsset: boolean
96
- }
97
-
98
- type DateFormat = {
99
- alignment?: { horizontal?: 'left' | 'right' | 'center' },
100
- font?: GeneralData,
101
- fontColor?: string,
102
- fontSize?: number
103
- }
104
-
105
- const alignment = {
106
- start: 'flex-start',
107
- center: 'center',
108
- end: 'flex-end'
109
- }
110
-
111
-
112
- const borderStyles = {
113
- normal: '0',
114
- rounded: '10',
115
- circle: '100'
116
- }
117
-
118
- const styles = {
119
- text: 'text',
120
- calendarFlat: 'calendarFlat',
121
- calendarText: 'calendarText',
122
- circle: 'circle',
123
- outlines: 'outlines'
124
- }
8
+ displayService: 'AnniversaryAppService' | 'RexmasAnniversarieService', documentService: { id: string }, rexmasService: { id: string }, photoMode: 'zip' | 'online', photosZip: {id?: string, filename?: string, extension?: string}, updateTime: 600000 | 1800000 | 3600000 | 21600000 | 43200000 | 86400000 | 604800000, defaultMessage: string, defaultMessageFormat: { fontSize?: number, fontColor?: string, alignment?: { horizontal?: 'left' | 'right' | 'center' }, font?: { filename: string, id: string, __isAsset: true } }, orientation: 'h' | 'v', animationMode: 'fade' | 'slideRight' | 'slideLeft', animationSpeed: 2 | 1.5 | 1, animationOrder: boolean, animationTime: number, containerColumns: number, containerColumnsGap: number, containerRows: number, containerRowsGap: number, backgroundImage: {id?: string, filename?: string, extension?: string}, padding: string, textPosition: 1 | 2 | 3, textAlignment: 'start' | 'center' | 'end', nameFormat: { fontSize?: number, fontColor?: string, alignment?: { horizontal?: 'left' | 'right' | 'center' }, font?: { filename: string, id: string, __isAsset: true } }, nameMaxChar: number, textMargin: string, descriptionEnabled: boolean, descriptionFormat: { fontSize?: number, fontColor?: string, alignment?: { horizontal?: 'left' | 'right' | 'center' }, font?: { filename: string, id: string, __isAsset: true } }, descriptionMaxChar: number, optionalEnabled: boolean, optionalFormat: { fontSize?: number, fontColor?: string, alignment?: { horizontal?: 'left' | 'right' | 'center' }, font?: { filename: string, id: string, __isAsset: true } }, imageEnabled: boolean, imagePosition: 1 | 2 | 3, imageAlignment: 'start' | 'center' | 'end', imageStyle: 'normal' | 'rounded' | 'circle', imageMargin: string, imageSize: number, dateEnabled: boolean, datePosition: 1 | 2 | 3, dateAlignment: 'start' | 'center' | 'end', dateStyle: 'calendarFlat' | 'calendarText' | 'circle' | 'text' | 'outlines', dateDayFormat: { fontSize?: number, fontColor?: string, alignment?: { horizontal?: 'left' | 'right' | 'center' }, font?: { filename: string, id: string, __isAsset: true } }, dateMonthFormat: { fontSize?: number, fontColor?: string, alignment?: { horizontal?: 'left' | 'right' | 'center' }, font?: { filename: string, id: string, __isAsset: true } }, abbreviatedMonths: boolean, datePrimaryColor: string, dateMargin: string, separator: boolean, separatorWidth: number, separatorColor: string, itemMargins: string
9
+ }>
@@ -0,0 +1,40 @@
1
+ export class AnniversaryServiceParsers {
2
+ static readonly AnniversaryAppService = {
3
+ parse: (data: any[]): Anniversary[] => {
4
+ return data.map(item => ({
5
+ month: item.month,
6
+ day: item.day,
7
+ name: item.name,
8
+ image: item.image,
9
+ }))
10
+ }
11
+ }
12
+
13
+ static readonly RexmasAnniversaryService = {
14
+ parse: (data: any[]): Anniversary[] => {
15
+ return data.map(item => ({
16
+ month: item.month,
17
+ day: item.day,
18
+ name: item.name,
19
+ description: undefined,
20
+ image: item.image,
21
+ optional: undefined
22
+ }))
23
+ }
24
+ }
25
+
26
+ static getParser(serviceType: VixonicData['parameters']['displayService']): ServiceParser {
27
+ switch (serviceType) {
28
+ case 'AnniversaryAppService':
29
+ return this.AnniversaryAppService
30
+ case 'RexmasAnniversarieService':
31
+ return this.RexmasAnniversaryService
32
+ default:
33
+ return this.AnniversaryAppService
34
+ }
35
+ }
36
+ }
37
+
38
+ export interface ServiceParser {
39
+ parse: (data: any[]) => Anniversary[]
40
+ }
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "parameters": {
3
- "apiDomain": "https://docs.google.com/spreadsheets/d/1nxPf6Y97fPubVE9mWhShrWvcXAlndD4x-qSvdjgoIVk/edit?usp=sharing",
4
- "msj0": "No ingresos",
3
+ "documentService": {"id":"0159f12d-4a7d-24d1-f260-f33908c049e22"},
4
+ "rexmasService": {"id":"12b64ef1-0c66-c4ae-8797-9113e1063c4c"},
5
+ "defaultMessage": "No ingresos",
5
6
  "padding": "365px 25px 80px 40px",
6
7
  "dataMode": "monthly",
7
8
  "template": "standard",
@@ -0,0 +1,158 @@
1
+ {
2
+ "services": {
3
+ "d3e82496-63af-5992-96dc-7d9639d21dd6": {
4
+ "id": "d3e82496-63af-5992-96dc-7d9639d21dd6",
5
+ "data": [
6
+ {
7
+ "day": 14,
8
+ "month": 6,
9
+ "name": "MANUEL SOMOZA",
10
+ "description": "CORPORATIVO",
11
+ "image": "Foto prueba.jpg"
12
+ },
13
+ {
14
+ "day": 14,
15
+ "month": 6,
16
+ "name": "ANTONIO BELLO",
17
+ "description": "CORPORATIVO",
18
+ "image": "Foto prueba.jpg"
19
+ },
20
+ {
21
+ "day": 16,
22
+ "month": 6,
23
+ "name": "MARIA DEL PILAR MARTINEZ",
24
+ "description": "FORD DURANGO",
25
+ "image": "Foto prueba.jpg"
26
+ },
27
+ {
28
+ "day": 17,
29
+ "month": 6,
30
+ "name": "AXEL ZALDIVAR",
31
+ "description": "JAC METEPEC",
32
+ "image": "Foto prueba.jpg"
33
+ },
34
+ {
35
+ "day": 18,
36
+ "month": 6,
37
+ "name": "GUSTAVO MENDEZ",
38
+ "description": "PEUGEOT ARBOLEDAS",
39
+ "image": "Foto prueba.jpg"
40
+ },
41
+ {
42
+ "day": 19,
43
+ "month": 6,
44
+ "name": "CARLOS CAMPOS",
45
+ "description": "JAC METEPEC",
46
+ "image": "Foto prueba.jpg"
47
+ },
48
+ {
49
+ "day": 19,
50
+ "month": 6,
51
+ "name": "CRISTIAN HOLGUIN",
52
+ "description": "CORPORATIVO",
53
+ "image": "Foto prueba.jpg"
54
+ },
55
+ {
56
+ "day": 20,
57
+ "month": 6,
58
+ "name": "MARIA DOMINGUEZ",
59
+ "description": "JAC CUERNAVACA",
60
+ "image": "Foto prueba.jpg"
61
+ },
62
+ {
63
+ "day": 20,
64
+ "month": 6,
65
+ "name": "DANIEL PEREZ",
66
+ "description": "CORPORATIVO",
67
+ "image": "Foto prueba.jpg"
68
+ },
69
+ {
70
+ "day": 21,
71
+ "month": 6,
72
+ "name": "ORLANDO QUIROZ",
73
+ "description": "PEUGEOT ARBOLEDAS",
74
+ "image": "Foto prueba.jpg"
75
+ },
76
+ {
77
+ "day": 26,
78
+ "month": 6,
79
+ "name": "LIZZA GUZMAN",
80
+ "description": "FORD DURANGO",
81
+ "image": "Foto prueba.jpg"
82
+ },
83
+ {
84
+ "day": 26,
85
+ "month": 6,
86
+ "name": "MONTSERRAT TORRES",
87
+ "description": "LEXUS SANTA FE",
88
+ "image": "Foto prueba.jpg"
89
+ },
90
+ {
91
+ "day": 28,
92
+ "month": 6,
93
+ "name": "PAOLA ALEMAN",
94
+ "description": "CORPORATIVO",
95
+ "image": "Foto prueba.jpg"
96
+ },
97
+ {
98
+ "day": 30,
99
+ "month": 6,
100
+ "name": "FANNY ANDRADE",
101
+ "description": "FORD DURANGO",
102
+ "image": "Foto prueba.jpg"
103
+ }
104
+ ],
105
+ "updatedAt": 1749672137077,
106
+ "__typename": "AnniversaryAppService"
107
+ },
108
+ "12b64ef1-0c66-c4ae-8797-9113e1063c4c": {
109
+ "id": "12b64ef1-0c66-c4ae-8797-9113e1063c4c",
110
+ "data": [
111
+ {
112
+ "day": 5,
113
+ "month": 5,
114
+ "name": "Juan Esteban Cárdenas",
115
+ "image": "https://s3.us-east-2.amazonaws.com/payroll-prod-chile/media/static/entidades/losnavegantes/18749054-5.jpg"
116
+ },
117
+ {
118
+ "day": 5,
119
+ "month": 5,
120
+ "name": "CARLA ELENA OYARZÚN",
121
+ "image": "https://s3.us-east-2.amazonaws.com/payroll-prod-chile/media/static/entidades/losnavegantes/12810705-3.png"
122
+ },
123
+ {
124
+ "day": 7,
125
+ "month": 5,
126
+ "name": "César Claudio Llancafil",
127
+ "image": "https://s3.us-east-2.amazonaws.com/payroll-prod-chile/media/static/entidades/losnavegantes/20761855-1.png"
128
+ },
129
+ {
130
+ "day": 16,
131
+ "month": 5,
132
+ "name": "JOSE MIGUEL DUQUE",
133
+ "image": "https://s3.us-east-2.amazonaws.com/payroll-prod-chile/media/static/entidades/losnavegantes/13461287-8.png"
134
+ },
135
+ {
136
+ "day": 17,
137
+ "month": 5,
138
+ "name": "CARLOS EDUARDO RIVERA",
139
+ "image": "https://s3.us-east-2.amazonaws.com/payroll-prod-chile/media/static/entidades/losnavegantes/25455086-8.jpg"
140
+ },
141
+ {
142
+ "day": 22,
143
+ "month": 5,
144
+ "name": "Pablo Baltazar Troncoso",
145
+ "image": "https://s3.us-east-2.amazonaws.com/payroll-prod-chile/media/static/entidades/losnavegantes/18407251-3.jpg"
146
+ },
147
+ {
148
+ "day": 29,
149
+ "month": 5,
150
+ "name": "Elizabeth Marcela Urdaneta",
151
+ "image": "https://s3.us-east-2.amazonaws.com/payroll-prod-chile/media/static/entidades/losnavegantes/25440150-1.png"
152
+ }
153
+ ],
154
+ "updatedAt": 1749670622134,
155
+ "__typename": "RexmasBirthdayService"
156
+ }
157
+ }
158
+ }
@@ -1,8 +0,0 @@
1
- import { createContext } from "react"
2
-
3
- type ConfigureContext = {
4
- configureState: VixonicData
5
- addConfiguration: (configure: VixonicData) => void
6
- }
7
-
8
- export const ConfigureContext = createContext<ConfigureContext>({} as ConfigureContext);