@inseefr/lunatic 2.6.2 → 2.6.3-rc.1

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 (144) hide show
  1. package/lib/components/index.js +4 -4
  2. package/lib/components/loop/block-for-loop.js +6 -10
  3. package/lib/components/loop/roster-for-loop/roster-for-loop.js +27 -35
  4. package/lib/components/lunatic-components.js +16 -5
  5. package/lib/components/pairwise-links/pairwise-links.js +27 -30
  6. package/lib/components/table/lunatic-table.js +22 -13
  7. package/lib/components/table/{header.js → table-header.js} +3 -5
  8. package/lib/hooks/use-track-changes.js +50 -0
  9. package/lib/src/components/index.d.ts +2 -2
  10. package/lib/src/components/loop/block-for-loop.d.ts +3 -4
  11. package/lib/src/components/loop/roster-for-loop/roster-for-loop.d.ts +3 -4
  12. package/lib/src/components/lunatic-components.d.ts +5 -3
  13. package/lib/src/components/pairwise-links/pairwise-links.d.ts +1 -2
  14. package/lib/src/components/table/lunatic-table.d.ts +1 -1
  15. package/lib/src/components/table/{header.d.ts → table-header.d.ts} +2 -2
  16. package/lib/src/components/type.d.ts +5 -6
  17. package/lib/src/hooks/use-track-changes.d.ts +9 -0
  18. package/lib/src/use-lunatic/actions.d.ts +3 -16
  19. package/lib/src/use-lunatic/commons/compile-controls.d.ts +3 -2
  20. package/lib/src/use-lunatic/commons/component.d.ts +22 -0
  21. package/lib/src/use-lunatic/commons/fill-components/fill-component-value.d.ts +2 -3
  22. package/lib/src/use-lunatic/commons/fill-components/fill-components.d.ts +6 -0
  23. package/lib/src/use-lunatic/commons/fill-components/fill-from-state.d.ts +107 -122
  24. package/lib/src/use-lunatic/commons/fill-components/fill-iterations.d.ts +112 -0
  25. package/lib/src/use-lunatic/commons/fill-components/fill-specific-expression.d.ts +53 -89
  26. package/lib/src/use-lunatic/commons/get-compatible-vtl-expression.d.ts +1 -0
  27. package/lib/src/use-lunatic/commons/index.d.ts +0 -3
  28. package/lib/src/use-lunatic/commons/variables/behaviours/cleaning-behaviour.d.ts +7 -0
  29. package/lib/src/use-lunatic/commons/variables/behaviours/missing-behaviour.d.ts +7 -0
  30. package/lib/src/use-lunatic/commons/variables/behaviours/resizing-behaviour.d.ts +7 -0
  31. package/lib/src/use-lunatic/commons/variables/get-questionnaire-data.d.ts +4 -0
  32. package/lib/src/use-lunatic/commons/variables/lunatic-variables-store.d.ts +77 -0
  33. package/lib/src/use-lunatic/reducer/overview/overview-on-init.d.ts +10 -8
  34. package/lib/src/use-lunatic/reducer/reduce-handle-change.d.ts +6 -0
  35. package/lib/src/use-lunatic/reducer/reduce-on-init.d.ts +1 -12
  36. package/lib/src/use-lunatic/type-source.d.ts +7 -21
  37. package/lib/src/use-lunatic/type.d.ts +13 -11
  38. package/lib/src/use-lunatic/use-lunatic.d.ts +33 -56
  39. package/lib/src/utils/array.d.ts +6 -1
  40. package/lib/src/utils/env.d.ts +1 -0
  41. package/lib/src/utils/number.d.ts +4 -0
  42. package/lib/src/utils/variables.d.ts +5 -0
  43. package/lib/src/utils/vtl.d.ts +14 -0
  44. package/lib/use-lunatic/actions.js +3 -3
  45. package/lib/use-lunatic/commons/compile-controls.js +3 -5
  46. package/lib/use-lunatic/commons/component.js +22 -0
  47. package/lib/use-lunatic/commons/execute-condition-filter.js +1 -9
  48. package/lib/use-lunatic/commons/fill-components/fill-component-expressions.js +2 -3
  49. package/lib/use-lunatic/commons/fill-components/fill-component-value.js +21 -7
  50. package/lib/use-lunatic/commons/fill-components/fill-components.js +5 -3
  51. package/lib/use-lunatic/commons/{execute-expression/get-safety-expression.js → fill-components/fill-iterations.js} +30 -20
  52. package/lib/use-lunatic/commons/fill-components/fill-missing-response.js +6 -13
  53. package/lib/use-lunatic/commons/fill-components/fill-specific-expression.js +58 -5
  54. package/lib/use-lunatic/commons/get-compatible-vtl-expression.js +1 -0
  55. package/lib/use-lunatic/commons/index.js +0 -21
  56. package/lib/use-lunatic/commons/variables/behaviours/cleaning-behaviour.js +39 -0
  57. package/lib/use-lunatic/commons/variables/behaviours/missing-behaviour.js +47 -0
  58. package/lib/use-lunatic/commons/variables/behaviours/resizing-behaviour.js +78 -0
  59. package/lib/use-lunatic/{reducer/reduce-handle-change/reduce-variables-array.js → commons/variables/get-questionnaire-data.js} +53 -32
  60. package/lib/use-lunatic/commons/variables/lunatic-variables-store.js +330 -0
  61. package/lib/use-lunatic/commons/variables/lunatic-variables-store.spec.js +216 -0
  62. package/lib/use-lunatic/initial-state.js +5 -2
  63. package/lib/use-lunatic/reducer/overview/overview-on-change.js +1 -1
  64. package/lib/use-lunatic/reducer/{reduce-handle-change/reduce-variables-simple.js → reduce-handle-change.js} +15 -14
  65. package/lib/use-lunatic/reducer/reduce-on-init.js +89 -181
  66. package/lib/use-lunatic/reducer/reducer.js +2 -2
  67. package/lib/use-lunatic/reducer/resolve-component-controls/resolve-simple-control.js +2 -4
  68. package/lib/use-lunatic/use-lunatic.js +18 -14
  69. package/lib/use-lunatic/use-lunatic.test.js +131 -2
  70. package/lib/utils/array.js +57 -6
  71. package/lib/utils/array.spec.js +30 -0
  72. package/lib/utils/env.js +10 -0
  73. package/lib/utils/get-component-value.js +3 -9
  74. package/lib/utils/number.js +13 -1
  75. package/lib/utils/variables.js +37 -0
  76. package/lib/utils/vtl.js +100 -0
  77. package/package.json +1 -1
  78. package/lib/components/loop/utils/get-initial-nb-rows.js +0 -17
  79. package/lib/components/pairwise-links/index.js +0 -13
  80. package/lib/components/pairwise-links/orchestrator.js +0 -71
  81. package/lib/components/pairwise-links/row.js +0 -74
  82. package/lib/components/table/cell.js +0 -89
  83. package/lib/components/table/index.js +0 -13
  84. package/lib/components/table/row.js +0 -40
  85. package/lib/components/table/table-orchestrator.js +0 -35
  86. package/lib/src/components/loop/utils/get-initial-nb-rows.d.ts +0 -4
  87. package/lib/src/components/pairwise-links/index.d.ts +0 -1
  88. package/lib/src/components/pairwise-links/orchestrator.d.ts +0 -6
  89. package/lib/src/components/pairwise-links/row.d.ts +0 -7
  90. package/lib/src/components/table/cell.d.ts +0 -19
  91. package/lib/src/components/table/index.d.ts +0 -1
  92. package/lib/src/components/table/row.d.ts +0 -18
  93. package/lib/src/components/table/table-orchestrator.d.ts +0 -4
  94. package/lib/src/use-lunatic/commons/calculated-variables.d.ts +0 -8
  95. package/lib/src/use-lunatic/commons/execute-expression/create-execute-expression.d.ts +0 -9
  96. package/lib/src/use-lunatic/commons/execute-expression/create-memoizer.d.ts +0 -8
  97. package/lib/src/use-lunatic/commons/execute-expression/create-refresh-calculated.d.ts +0 -24
  98. package/lib/src/use-lunatic/commons/execute-expression/execute-expression.d.ts +0 -11
  99. package/lib/src/use-lunatic/commons/execute-expression/get-expressions-variables.d.ts +0 -7
  100. package/lib/src/use-lunatic/commons/execute-expression/get-expressions-variables.spec.d.ts +0 -1
  101. package/lib/src/use-lunatic/commons/execute-expression/get-safety-expression.d.ts +0 -6
  102. package/lib/src/use-lunatic/commons/execute-expression/index.d.ts +0 -1
  103. package/lib/src/use-lunatic/commons/get-component-value/get-component-value.d.ts +0 -6
  104. package/lib/src/use-lunatic/commons/get-component-value/index.d.ts +0 -1
  105. package/lib/src/use-lunatic/commons/get-data.d.ts +0 -26
  106. package/lib/src/use-lunatic/reducer/reduce-handle-change/index.d.ts +0 -1
  107. package/lib/src/use-lunatic/reducer/reduce-handle-change/reduce-cleaning.d.ts +0 -7
  108. package/lib/src/use-lunatic/reducer/reduce-handle-change/reduce-cleaning.spec.d.ts +0 -1
  109. package/lib/src/use-lunatic/reducer/reduce-handle-change/reduce-handle-change.d.ts +0 -4
  110. package/lib/src/use-lunatic/reducer/reduce-handle-change/reduce-links-variable.d.ts +0 -15
  111. package/lib/src/use-lunatic/reducer/reduce-handle-change/reduce-missing.d.ts +0 -7
  112. package/lib/src/use-lunatic/reducer/reduce-handle-change/reduce-resizing.d.ts +0 -4
  113. package/lib/src/use-lunatic/reducer/reduce-handle-change/reduce-variables-array.d.ts +0 -14
  114. package/lib/src/use-lunatic/reducer/reduce-handle-change/reduce-variables-simple.d.ts +0 -9
  115. package/lib/src/use-lunatic/reducer/reduce-on-init.spec.d.ts +0 -1
  116. package/lib/src/utils/vtl/dataset-builder.d.ts +0 -5
  117. package/lib/src/utils/vtl/index.d.ts +0 -1
  118. package/lib/use-lunatic/commons/calculated-variables.js +0 -104
  119. package/lib/use-lunatic/commons/execute-expression/create-execute-expression.js +0 -233
  120. package/lib/use-lunatic/commons/execute-expression/create-execute-expression.spec.js +0 -155
  121. package/lib/use-lunatic/commons/execute-expression/create-memoizer.js +0 -63
  122. package/lib/use-lunatic/commons/execute-expression/create-refresh-calculated.js +0 -149
  123. package/lib/use-lunatic/commons/execute-expression/create-refresh-calculated.spec.js +0 -130
  124. package/lib/use-lunatic/commons/execute-expression/execute-expression.js +0 -90
  125. package/lib/use-lunatic/commons/execute-expression/execute-expression.spec.js +0 -38
  126. package/lib/use-lunatic/commons/execute-expression/get-expressions-variables.js +0 -40
  127. package/lib/use-lunatic/commons/execute-expression/get-expressions-variables.spec.js +0 -31
  128. package/lib/use-lunatic/commons/execute-expression/index.js +0 -13
  129. package/lib/use-lunatic/commons/get-component-value/get-component-value.js +0 -174
  130. package/lib/use-lunatic/commons/get-component-value/index.js +0 -13
  131. package/lib/use-lunatic/commons/get-data.js +0 -80
  132. package/lib/use-lunatic/reducer/reduce-handle-change/__mocks__/source-cleaning-loop.json +0 -792
  133. package/lib/use-lunatic/reducer/reduce-handle-change/index.js +0 -13
  134. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-cleaning.js +0 -72
  135. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-cleaning.spec.js +0 -46
  136. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-handle-change.js +0 -115
  137. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-links-variable.js +0 -89
  138. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-missing.js +0 -88
  139. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-resizing.js +0 -110
  140. package/lib/use-lunatic/reducer/reduce-on-init.spec.js +0 -17
  141. package/lib/utils/vtl/dataset-builder.js +0 -27
  142. package/lib/utils/vtl/index.js +0 -13
  143. /package/lib/src/use-lunatic/commons/{execute-expression/create-refresh-calculated.spec.d.ts → variables/lunatic-variables-store.spec.d.ts} +0 -0
  144. /package/lib/src/{use-lunatic/commons/execute-expression/execute-expression.spec.d.ts → utils/array.spec.d.ts} +0 -0
@@ -91,27 +91,9 @@ declare function fillSpecificExpressions(component: DeepTranslateExpression<Luna
91
91
  colspan?: number | undefined;
92
92
  rowspan?: number | undefined;
93
93
  }[];
94
- body: {
95
- label?: import("../../type-source").LabelType | undefined;
96
- value?: string | undefined;
97
- format?: string | undefined;
98
- dateFormat?: string | undefined;
99
- unit?: string | undefined;
100
- options: {
101
- value: string;
102
- label: import("../../type-source").LabelType;
103
- }[];
104
- response: import("../../type-source").ResponseType;
105
- bindingDependencies: string[];
106
- componentType?: import("../../type-source").ComponentTypeEnum | undefined;
107
- maxLength?: number | undefined;
108
- min?: number | undefined;
109
- max?: number | undefined;
110
- decimals?: number | undefined;
111
- colspan?: number | undefined;
112
- rowspan?: number | undefined;
113
- id?: string | undefined;
114
- }[];
94
+ body: (import("../../type-source").ComponentType | {
95
+ label: import("../../type-source").LabelType;
96
+ })[][];
115
97
  positioning: "HORIZONTAL";
116
98
  value?: Record<string, unknown[]> | undefined;
117
99
  } | {
@@ -149,6 +131,7 @@ declare function fillSpecificExpressions(component: DeepTranslateExpression<Luna
149
131
  paginatedLoop: boolean;
150
132
  value?: Record<string, unknown[]> | undefined;
151
133
  } | {
134
+ getComponents: (x: number, y: number) => import("./fill-components").FilledLunaticComponentProps<"Sequence" | "Subsequence" | "RosterForLoop" | "Loop" | "Table" | "Input" | "InputNumber" | "Datepicker" | "CheckboxGroup" | "CheckboxOne" | "CheckboxBoolean" | "Radio" | "Dropdown" | "Textarea" | "FilterDescription" | "PairwiseLinks" | "Suggester" | "ConfirmationModal" | "ComponentSet" | "Roundabout" | "QuestionExplication">[];
152
135
  label: import("react").ReactNode;
153
136
  declarations?: import("../../type-source").DeclarationType[] | undefined;
154
137
  conditionFilter: import("react").ReactNode;
@@ -169,8 +152,17 @@ declare function fillSpecificExpressions(component: DeepTranslateExpression<Luna
169
152
  };
170
153
  mandatory?: boolean | undefined;
171
154
  page: string;
172
- componentType: "Sequence";
155
+ componentType: "PairwiseLinks";
156
+ xAxisIterations: import("react").ReactNode;
157
+ yAxisIterations: import("react").ReactNode;
158
+ symLinks: {
159
+ [x: string]: {
160
+ [x: string]: string;
161
+ };
162
+ };
163
+ components: import("../../type-source").ComponentType[];
173
164
  } | {
165
+ body: unknown[][];
174
166
  label: import("react").ReactNode;
175
167
  declarations?: import("../../type-source").DeclarationType[] | undefined;
176
168
  conditionFilter: import("react").ReactNode;
@@ -191,8 +183,22 @@ declare function fillSpecificExpressions(component: DeepTranslateExpression<Luna
191
183
  };
192
184
  mandatory?: boolean | undefined;
193
185
  page: string;
194
- componentType: "Subsequence";
195
- gotoPage: string;
186
+ componentType: "Table";
187
+ lines: {
188
+ min: import("react").ReactNode;
189
+ max: import("react").ReactNode;
190
+ };
191
+ header: {
192
+ value: string;
193
+ label: string | import("../../type-source").LabelType;
194
+ options: {
195
+ value: string;
196
+ label: import("../../type-source").LabelType;
197
+ }[];
198
+ colspan?: number | undefined;
199
+ rowspan?: number | undefined;
200
+ }[];
201
+ positioning: "HORIZONTAL";
196
202
  } | {
197
203
  label: import("react").ReactNode;
198
204
  declarations?: import("../../type-source").DeclarationType[] | undefined;
@@ -214,43 +220,30 @@ declare function fillSpecificExpressions(component: DeepTranslateExpression<Luna
214
220
  };
215
221
  mandatory?: boolean | undefined;
216
222
  page: string;
217
- componentType: "Table";
218
- lines: {
219
- min: import("react").ReactNode;
220
- max: import("react").ReactNode;
223
+ componentType: "Sequence";
224
+ } | {
225
+ label: import("react").ReactNode;
226
+ declarations?: import("../../type-source").DeclarationType[] | undefined;
227
+ conditionFilter: import("react").ReactNode;
228
+ controls?: import("../../type-source").ControlType[] | undefined;
229
+ id: string;
230
+ bindingDependencies?: string[] | undefined;
231
+ hierarchy: {
232
+ sequence: {
233
+ label: import("react").ReactNode;
234
+ id: string;
235
+ page: string;
236
+ };
237
+ subSequence?: {
238
+ label: import("react").ReactNode;
239
+ id: string;
240
+ page: string;
241
+ } | undefined;
221
242
  };
222
- header: {
223
- value: string;
224
- label: string | import("../../type-source").LabelType;
225
- options: {
226
- value: string;
227
- label: import("../../type-source").LabelType;
228
- }[];
229
- colspan?: number | undefined;
230
- rowspan?: number | undefined;
231
- }[];
232
- body: {
233
- label?: import("../../type-source").LabelType | undefined;
234
- value?: string | undefined;
235
- format?: string | undefined;
236
- dateFormat?: string | undefined;
237
- unit?: string | undefined;
238
- options: {
239
- value: string;
240
- label: import("../../type-source").LabelType;
241
- }[];
242
- response: import("../../type-source").ResponseType;
243
- bindingDependencies: string[];
244
- componentType?: import("../../type-source").ComponentTypeEnum | undefined;
245
- maxLength?: number | undefined;
246
- min?: number | undefined;
247
- max?: number | undefined;
248
- decimals?: number | undefined;
249
- colspan?: number | undefined;
250
- rowspan?: number | undefined;
251
- id?: string | undefined;
252
- }[];
253
- positioning: "HORIZONTAL";
243
+ mandatory?: boolean | undefined;
244
+ page: string;
245
+ componentType: "Subsequence";
246
+ gotoPage: string;
254
247
  } | {
255
248
  label: import("react").ReactNode;
256
249
  declarations?: import("../../type-source").DeclarationType[] | undefined;
@@ -450,35 +443,6 @@ declare function fillSpecificExpressions(component: DeepTranslateExpression<Luna
450
443
  missingResponse?: {
451
444
  name: string;
452
445
  } | undefined;
453
- } | {
454
- label: import("react").ReactNode;
455
- declarations?: import("../../type-source").DeclarationType[] | undefined;
456
- conditionFilter: import("react").ReactNode;
457
- controls?: import("../../type-source").ControlType[] | undefined;
458
- id: string;
459
- bindingDependencies?: string[] | undefined;
460
- hierarchy: {
461
- sequence: {
462
- label: import("react").ReactNode;
463
- id: string;
464
- page: string;
465
- };
466
- subSequence?: {
467
- label: import("react").ReactNode;
468
- id: string;
469
- page: string;
470
- } | undefined;
471
- };
472
- mandatory?: boolean | undefined;
473
- page: string;
474
- componentType: "PairwiseLinks";
475
- xAxisIterations: import("react").ReactNode;
476
- yAxisIterations: import("react").ReactNode;
477
- symLinks: {
478
- [x: string]: {
479
- [x: string]: string;
480
- };
481
- };
482
446
  } | {
483
447
  label: import("react").ReactNode;
484
448
  declarations?: import("../../type-source").DeclarationType[] | undefined;
@@ -1,6 +1,7 @@
1
1
  import type { LunaticExpression } from '../type';
2
2
  /**
3
3
  * Ensure that an expression is compatible with VTL (convert if necessary)
4
+ * @deprecated use getExpressionAsString() instead
4
5
  */
5
6
  declare function getCompatibleVTLExpression(expression: LunaticExpression | string): LunaticExpression | undefined;
6
7
  export default getCompatibleVTLExpression;
@@ -1,12 +1,9 @@
1
1
  export { default as checkLoops } from './check-loops';
2
2
  export { default as createMapPages } from './create-map-pages';
3
3
  export { default as executeConditionFilter } from './execute-condition-filter';
4
- export { default as createExecuteExpression } from './execute-expression';
5
4
  export { default as fillComponentExpressions } from './fill-components/fill-component-expressions';
6
5
  export { default as getCompatibleVTLExpression } from './get-compatible-vtl-expression';
7
6
  export { default as getComponentsFromState } from './get-components-from-state';
8
- export { default as getErrorsWithoutEmptyValue } from './get-errors-without-empty-value';
9
7
  export { default as isFirstLastPage } from './is-First-last-page';
10
- export { default as isPaginatedLoop } from './is-paginated-loop';
11
8
  export { getNewReachedPage, getPageTag, isNewReachedPage } from './page-tag';
12
9
  export { default as useComponentsFromState } from './use-components-from-state';
@@ -0,0 +1,7 @@
1
+ import type { LunaticVariablesStore } from '../lunatic-variables-store';
2
+ import type { LunaticSource } from '../../../type-source';
3
+ /**
4
+ * Cleaning behaviour for the store
5
+ * When a variable changes, other variables can be reset
6
+ */
7
+ export declare function cleaningBehaviour(store: LunaticVariablesStore, cleaning: LunaticSource['cleaning'], initialValues?: Record<string, unknown>): void;
@@ -0,0 +1,7 @@
1
+ import type { LunaticVariablesStore } from '../lunatic-variables-store';
2
+ import type { LunaticSource } from '../../../type-source';
3
+ /**
4
+ * Add missing behaviour to the store
5
+ * Missing works as a simplified cleaning that reset a linked variable
6
+ */
7
+ export declare function missingBehaviour(store: LunaticVariablesStore, missing: LunaticSource['missingBlock']): void;
@@ -0,0 +1,7 @@
1
+ import type { LunaticVariablesStore } from '../lunatic-variables-store';
2
+ import type { LunaticSource } from '../../../type-source';
3
+ /**
4
+ * Resizing behaviour for the store
5
+ * When a variable changes, multiple other variables can change size (size of the array)
6
+ */
7
+ export declare function resizingBehaviour(store: LunaticVariablesStore, resizing: LunaticSource['resizing']): void;
@@ -0,0 +1,4 @@
1
+ import type { LunaticVariablesStore } from './lunatic-variables-store';
2
+ import type { LunaticSource } from '../../type-source';
3
+ import type { LunaticData } from '../../type';
4
+ export declare function getQuestionnaireData(store: LunaticVariablesStore, variables: LunaticSource['variables'], withCalculated?: boolean, variableNames?: string[]): LunaticData;
@@ -0,0 +1,77 @@
1
+ import type { LunaticSource } from '../../type-source';
2
+ import type { LunaticData } from '../../type';
3
+ type IterationLevel = number[];
4
+ type EventArgs = {
5
+ change: {
6
+ name: string;
7
+ value: unknown;
8
+ iteration?: IterationLevel | undefined;
9
+ };
10
+ };
11
+ export type LunaticVariablesStoreEvent<T extends keyof EventArgs> = {
12
+ detail: EventArgs[T];
13
+ };
14
+ export declare class LunaticVariablesStore {
15
+ private dictionary;
16
+ private eventTarget;
17
+ constructor();
18
+ static makeFromSource(source: LunaticSource, data: LunaticData): LunaticVariablesStore;
19
+ /**
20
+ * Retrieve variable value
21
+ */
22
+ get<T>(name: string, iteration?: IterationLevel): T | null;
23
+ /**
24
+ * Set variable value
25
+ */
26
+ set(name: string, value: unknown, args?: Pick<EventArgs['change'], 'iteration'>): LunaticVariable;
27
+ /**
28
+ * Register calculated variable
29
+ */
30
+ setCalculated(name: string, expression: string, { dependencies, iterationDepth, }?: {
31
+ dependencies?: string[];
32
+ iterationDepth?: number;
33
+ }): LunaticVariable;
34
+ /**
35
+ * Run a VTL expression
36
+ */
37
+ run(expression: string, args?: {
38
+ iteration?: IterationLevel;
39
+ deps?: string[];
40
+ }): unknown;
41
+ /**
42
+ * Bind event listeners
43
+ */
44
+ on<T extends keyof EventArgs>(eventName: T, cb: (e: CustomEvent<EventArgs[T]>) => void): void;
45
+ /**
46
+ * Detach a listener
47
+ */
48
+ off<T extends keyof EventArgs>(eventName: T, cb: (e: CustomEvent<EventArgs[T]>) => void): void;
49
+ get interpretCount(): number;
50
+ }
51
+ declare class LunaticVariable {
52
+ updatedAt: Map<string | undefined, number>;
53
+ private calculatedAt;
54
+ private value;
55
+ private dependencies?;
56
+ private readonly expression?;
57
+ private readonly dictionary?;
58
+ private readonly iterationDepth?;
59
+ private readonly name?;
60
+ constructor(args?: {
61
+ expression?: string;
62
+ dependencies?: string[];
63
+ dictionary?: Map<string, LunaticVariable>;
64
+ iterationDepth?: number;
65
+ name?: string;
66
+ });
67
+ getValue(iteration?: IterationLevel): unknown;
68
+ /**
69
+ * Set the value and returns true if the variable is touched
70
+ */
71
+ setValue(value: unknown, iteration?: IterationLevel): boolean;
72
+ private getSavedValue;
73
+ private getDependencies;
74
+ private getDependenciesValues;
75
+ private isOutdated;
76
+ }
77
+ export {};
@@ -2,9 +2,8 @@ import type { LunaticOverviewItem, LunaticState } from '../../type';
2
2
  import { type ActionInit } from '../../actions';
3
3
  export declare function reduceOverviewOnInit(state: LunaticState, action: ActionInit): {
4
4
  overview: LunaticOverviewItem[];
5
- variables: {
6
- [variableName: string]: import("../../type").LunaticStateVariable;
7
- };
5
+ updatedAt: number;
6
+ variables: import("../../commons/variables/lunatic-variables-store").LunaticVariablesStore;
8
7
  pages: {
9
8
  [key: string]: {
10
9
  components: import("../../type-source").ComponentType[];
@@ -78,14 +77,17 @@ export declare function reduceOverviewOnInit(state: LunaticState, action: Action
78
77
  modalErrors?: Record<string, import("../../type").LunaticError[]> | undefined;
79
78
  handleChange: (response: {
80
79
  name: string;
81
- }, value: any, args?: Record<string, unknown> | undefined) => void;
80
+ }, value: any, args?: {
81
+ iteration?: number[] | undefined;
82
+ } | undefined) => void;
82
83
  executeExpression: <T extends unknown = unknown>(expression: unknown, args?: {
83
- iteration?: number | undefined;
84
- linksIterations?: number[] | undefined;
85
- logging?: import("../../commons/execute-expression/create-execute-expression").ExpressionLogger | undefined;
84
+ iteration?: number | number[] | undefined;
86
85
  bindingDependencies?: string[] | undefined;
86
+ deps?: string[] | undefined;
87
87
  } | undefined) => T;
88
- updateBindings: (variableName: string, value: unknown) => unknown;
88
+ updateBindings: (variableName: string, value: unknown, options: {
89
+ iteration?: number[] | undefined;
90
+ }) => unknown;
89
91
  activeControls: boolean;
90
92
  shortcut?: boolean | undefined;
91
93
  management?: boolean | undefined;
@@ -0,0 +1,6 @@
1
+ import { type ActionHandleChange } from '../actions';
2
+ import type { LunaticState } from '../type';
3
+ /**
4
+ * Update collected variables
5
+ */
6
+ export declare function reduceHandleChange(state: LunaticState, action: ActionHandleChange): LunaticState;
@@ -1,15 +1,4 @@
1
1
  import { type ActionInit } from '../actions';
2
- import type { LunaticState, LunaticVariable } from '../type';
3
- export type VariablesByType = {
4
- EXTERNAL: (LunaticVariable & {
5
- variableType: 'EXTERNAL';
6
- })[];
7
- COLLECTED: (LunaticVariable & {
8
- variableType: 'COLLECTED';
9
- })[];
10
- CALCULATED: (LunaticVariable & {
11
- variableType: 'CALCULATED';
12
- })[];
13
- };
2
+ import type { LunaticState } from '../type';
14
3
  declare const reducers: (acc: LunaticState, action: ActionInit) => LunaticState;
15
4
  export default reducers;
@@ -117,27 +117,9 @@ export type ComponentRosterForLoopType = {
117
117
  colspan?: number;
118
118
  rowspan?: number;
119
119
  }[];
120
- body: {
121
- label?: LabelType;
122
- value?: string;
123
- format?: string;
124
- dateFormat?: string;
125
- unit?: string;
126
- options: {
127
- value: string;
128
- label: LabelType;
129
- }[];
130
- response: ResponseType;
131
- bindingDependencies: string[];
132
- componentType?: ComponentTypeEnum;
133
- maxLength?: number;
134
- min?: number;
135
- max?: number;
136
- decimals?: number;
137
- colspan?: number;
138
- rowspan?: number;
139
- id?: string;
140
- }[];
120
+ body: ({
121
+ label: LabelType;
122
+ } | ComponentType)[][];
141
123
  positioning: 'HORIZONTAL';
142
124
  };
143
125
  export type ComponentLoopType = {
@@ -217,6 +199,7 @@ export type ComponentPairWiseLinksType = {
217
199
  symLinks: {
218
200
  [variableName: string]: Record<string, string>;
219
201
  };
202
+ components: ComponentType[];
220
203
  };
221
204
  export type ComponentComponentSetType = {
222
205
  componentType: 'ComponentSet';
@@ -298,6 +281,9 @@ export type LunaticSource = {
298
281
  [variableName: string]: {
299
282
  size: string;
300
283
  variables: string[];
284
+ } | {
285
+ sizeForLinksVariables: string[];
286
+ linksVariables: string[];
301
287
  };
302
288
  };
303
289
  };
@@ -1,7 +1,7 @@
1
1
  import type { ReactNode } from 'react';
2
2
  import type { ComponentType, ControlType, LunaticSource, Variable } from './type-source';
3
- import { type ExpressionLogger } from './commons/execute-expression/create-execute-expression';
4
3
  import { SuggesterStatus } from './use-suggesters';
4
+ import type { LunaticVariablesStore } from './commons/variables/lunatic-variables-store';
5
5
  export type LunaticComponentDefinition<T extends ComponentType['componentType'] = ComponentType['componentType']> = ComponentType & {
6
6
  componentType: T;
7
7
  };
@@ -9,9 +9,9 @@ export type LunaticControl = ControlType;
9
9
  export type VTLBindings = {
10
10
  [variableName: string]: unknown;
11
11
  };
12
- export type LunaticData = Partial<Record<Exclude<VariableType, 'COLLECTED'>, Record<string, unknown>> & {
12
+ export type LunaticData = Record<Exclude<VariableType, 'COLLECTED'>, Record<string, unknown>> & {
13
13
  COLLECTED: Record<string, LunaticCollectedValue>;
14
- }>;
14
+ };
15
15
  export type LunaticValues = {
16
16
  [variableName: string]: unknown;
17
17
  };
@@ -59,9 +59,8 @@ export type LunaticStateVariable = {
59
59
  };
60
60
  }[LunaticVariable['variableType']];
61
61
  export type LunaticState = {
62
- variables: {
63
- [variableName: string]: LunaticStateVariable;
64
- };
62
+ updatedAt: number;
63
+ variables: LunaticVariablesStore;
65
64
  pages: {
66
65
  [key: number | string]: {
67
66
  components: ComponentType[];
@@ -119,14 +118,17 @@ export type LunaticState = {
119
118
  modalErrors?: Record<string, LunaticError[]>;
120
119
  handleChange: (response: {
121
120
  name: string;
122
- }, value: any, args?: Record<string, unknown>) => void;
121
+ }, value: any, args?: {
122
+ iteration?: number[];
123
+ }) => void;
123
124
  executeExpression: <T extends unknown = unknown>(expression: unknown, args?: {
124
- iteration?: number;
125
- linksIterations?: number[];
126
- logging?: ExpressionLogger;
125
+ iteration?: number | number[];
127
126
  bindingDependencies?: string[];
127
+ deps?: string[];
128
128
  }) => T;
129
- updateBindings: (variableName: string, value: unknown) => unknown;
129
+ updateBindings: (variableName: string, value: unknown, options: {
130
+ iteration?: number[];
131
+ }) => unknown;
130
132
  activeControls: boolean;
131
133
  shortcut?: boolean;
132
134
  management?: boolean;