@inseefr/lunatic 0.1.0-hackathon → 0.1.0-v2

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 (350) hide show
  1. package/lib/index.js +1433 -835
  2. package/lib/index.js.map +1 -1
  3. package/package.json +11 -8
  4. package/src/components/breadcrumb/component.js +29 -29
  5. package/src/components/button/index.js +1 -1
  6. package/src/components/button/lunatic-button.js +32 -0
  7. package/src/components/checkbox/checkbox-boolean/index.js +1 -0
  8. package/src/components/checkbox/checkbox-boolean/lunatic-checkbox-boolean.js +44 -0
  9. package/src/components/checkbox/checkbox-group/checkbox-group.js +78 -0
  10. package/src/components/checkbox/checkbox-group/checkbox-option.js +46 -0
  11. package/src/components/checkbox/checkbox-group/index.js +1 -0
  12. package/src/components/checkbox/checkbox-group/lunatic-checkbox-group.js +32 -0
  13. package/src/components/checkbox/checkbox-one/index.js +1 -0
  14. package/src/components/checkbox/checkbox-one/lunatic-checkbox-one.js +7 -0
  15. package/src/components/checkbox/checkbox.scss +1 -73
  16. package/src/components/checkbox/commons/checkbox-option.js +49 -0
  17. package/src/components/checkbox/commons/index.js +1 -0
  18. package/src/components/checkbox/index.js +3 -3
  19. package/src/components/commons/components/field-container/field-container.js +28 -0
  20. package/src/components/commons/components/field-container/field-container.scss +0 -0
  21. package/src/components/commons/components/field-container/index.js +1 -0
  22. package/src/components/commons/components/fieldset.js +12 -0
  23. package/src/components/commons/components/input-container.js +30 -0
  24. package/src/components/commons/components/label.js +14 -0
  25. package/src/components/commons/components/lunatic-field.js +35 -0
  26. package/src/components/commons/create-customizable-field.js +13 -0
  27. package/src/components/commons/index.js +9 -0
  28. package/src/components/commons/use-on-handle-change.js +16 -0
  29. package/src/components/commons/use-options-keydown.js +22 -0
  30. package/src/components/commons/use-previous.js +11 -0
  31. package/src/components/component-wrapper/controls/component.js +70 -0
  32. package/src/components/component-wrapper/controls/controls.scss +6 -0
  33. package/src/components/component-wrapper/controls/index.js +1 -0
  34. package/src/components/component-wrapper/controls/validators/datepicker.js +33 -0
  35. package/src/components/component-wrapper/controls/validators/index.js +16 -0
  36. package/src/components/component-wrapper/controls/validators/input-number.js +23 -0
  37. package/src/components/{missing-wrapper → component-wrapper}/index.js +1 -1
  38. package/src/components/{missing-wrapper → component-wrapper/missing}/component.js +72 -12
  39. package/src/components/component-wrapper/missing/index.js +1 -0
  40. package/src/components/{missing-wrapper → component-wrapper/missing}/missing.scss +0 -0
  41. package/src/components/component-wrapper/wrapper.js +23 -0
  42. package/src/components/components.js +22 -18
  43. package/src/components/datepicker/datepicker.js +25 -0
  44. package/src/components/datepicker/index.js +1 -1
  45. package/src/components/datepicker/lunatic-datepicker.js +50 -0
  46. package/src/components/declarations/declaration.js +11 -0
  47. package/src/components/declarations/declarations-after-text.js +8 -0
  48. package/src/components/declarations/declarations-before-text.js +8 -0
  49. package/src/components/declarations/declarations-detachable.js +8 -0
  50. package/src/components/declarations/declarations.js +35 -0
  51. package/src/components/declarations/index.js +4 -1
  52. package/src/components/declarations/wrappers/input-declarations-wrapper.js +40 -12
  53. package/src/components/declarations/wrappers/list-declarations-wrapper.js +235 -232
  54. package/src/components/dropdown/commons/actions.js +40 -31
  55. package/src/components/dropdown/commons/components/panel.js +78 -78
  56. package/src/components/dropdown/commons/reducer.js +152 -149
  57. package/src/components/dropdown/component.js +121 -115
  58. package/src/components/dropdown/dropdown-edit/dropdown-edit.js +6 -0
  59. package/src/components/dropdown/dropdown-simple/dropdown.js +8 -1
  60. package/src/components/filter-description/component.js +48 -42
  61. package/src/components/icon/component.js +31 -33
  62. package/src/components/index.scss +5 -3
  63. package/src/components/input/index.js +1 -2
  64. package/src/components/input/input.js +45 -9
  65. package/src/components/input/input.scss +0 -6
  66. package/src/components/input/lunatic-input.js +53 -0
  67. package/src/components/input-number/index.js +1 -0
  68. package/src/components/input-number/input-number.js +38 -0
  69. package/src/components/input-number/input-number.scss +0 -0
  70. package/src/components/input-number/lunatic-input-number.js +50 -0
  71. package/src/components/loop/{component.js → _old/component.js} +1 -0
  72. package/src/components/loop/{loop.scss → _old/loop.scss} +0 -0
  73. package/src/components/loop/{wrapper.js → _old/wrapper.js} +15 -15
  74. package/src/components/loop/block-for-loop/block-for-loop-ochestrator.js +6 -0
  75. package/src/components/loop/block-for-loop/block-for-loop.js +91 -0
  76. package/src/components/loop/block-for-loop/index.js +1 -0
  77. package/src/components/loop/block-for-loop/row.js +52 -0
  78. package/src/components/loop/commons/create-loop-orchestrator.js +36 -0
  79. package/src/components/loop/commons/index.js +2 -0
  80. package/src/components/loop/commons/row-component.js +52 -0
  81. package/src/components/loop/index.js +1 -1
  82. package/src/components/loop/loop.js +78 -0
  83. package/src/components/loop/roster-for-loop/add-row-button.js +12 -0
  84. package/src/components/loop/roster-for-loop/body.js +44 -0
  85. package/src/components/loop/roster-for-loop/header.js +25 -0
  86. package/src/components/loop/roster-for-loop/html-table/table.js +11 -0
  87. package/src/components/loop/roster-for-loop/html-table/tbody.js +11 -0
  88. package/src/components/loop/roster-for-loop/html-table/td.js +14 -0
  89. package/src/components/loop/roster-for-loop/html-table/th.js +11 -0
  90. package/src/components/loop/roster-for-loop/html-table/thead.js +11 -0
  91. package/src/components/loop/roster-for-loop/html-table/tr.js +11 -0
  92. package/src/components/loop/roster-for-loop/index.js +1 -0
  93. package/src/components/loop/roster-for-loop/roster-for-loop-orchestrator.js +6 -0
  94. package/src/components/loop/roster-for-loop/roster-for-loop.js +90 -0
  95. package/src/components/loop/roster-for-loop/roster-table.js +39 -0
  96. package/src/components/loop/roster-for-loop/roster.scss +42 -0
  97. package/src/components/loop/roster-for-loop/row.js +65 -0
  98. package/src/components/loop-constructor/block/component.js +2 -2
  99. package/src/components/loop-constructor/block/index.js +1 -1
  100. package/src/components/loop-constructor/index.js +1 -1
  101. package/src/components/loop-constructor/roster/component.js +2 -2
  102. package/src/components/loop-constructor/roster/index.js +1 -1
  103. package/src/components/loop-constructor/wrapper/body-component.js +6 -0
  104. package/src/components/loop-constructor/wrapper/build-components.js +33 -33
  105. package/src/components/loop-constructor/wrapper/index.js +1 -1
  106. package/src/components/modal/component.js +42 -0
  107. package/src/components/modal/index.js +1 -0
  108. package/src/components/modal/modal.scss +33 -0
  109. package/src/components/radio/index.js +1 -1
  110. package/src/components/radio/lunatic-radio-group.js +45 -0
  111. package/src/components/radio/radio-group.js +33 -0
  112. package/src/components/radio/radio-option.js +87 -0
  113. package/src/components/radio/radio.scss +52 -52
  114. package/src/components/sequence/index.js +1 -1
  115. package/src/components/sequence/sequence.js +75 -0
  116. package/src/components/subsequence/index.js +1 -1
  117. package/src/components/subsequence/subsequence.js +73 -0
  118. package/src/components/suggester/check-store.js +70 -70
  119. package/src/components/suggester/components/panel/option-container.js +11 -10
  120. package/src/components/suggester/components/panel/panel.js +20 -6
  121. package/src/components/suggester/components/selection/label.js +7 -6
  122. package/src/components/suggester/components/selection/selection.js +36 -11
  123. package/src/components/suggester/components/suggester-content.js +35 -42
  124. package/src/components/suggester/components/suggester.js +45 -26
  125. package/src/components/suggester/{components/create-on-keydown-callback.js → create-on-keydown-callback.js} +28 -28
  126. package/src/components/suggester/find-best-label/find-best-label.js +3 -1
  127. package/src/components/suggester/idb-suggester.js +2 -1
  128. package/src/components/suggester/lunatic-suggester.js +48 -96
  129. package/src/components/suggester/searching/create-searching.js +3 -1
  130. package/src/components/suggester/suggester-wrapper.js +75 -9
  131. package/src/components/switch/index.js +1 -0
  132. package/src/components/switch/lunatic-switch.js +49 -0
  133. package/src/components/switch/switch.js +72 -0
  134. package/src/components/switch/switch.scss +47 -0
  135. package/src/components/table/table.js +164 -158
  136. package/src/components/textarea/component.js +11 -5
  137. package/src/components/tooltip/response.js +58 -52
  138. package/src/stories/checkbox-boolean/data-forced.json +48 -48
  139. package/src/stories/checkbox-group/data-vtl.json +102 -102
  140. package/src/stories/cleaning/cleaning.stories.js +39 -0
  141. package/src/stories/cleaning/simple-loop.json +911 -0
  142. package/src/stories/cleaning/simpsons.json +5839 -0
  143. package/src/stories/datepicker/data.json +45 -43
  144. package/src/stories/declarations/declarations.stories.js +20 -13
  145. package/src/stories/icons/icons.stories.js +24 -16
  146. package/src/stories/loop-constructor/README.md +27 -27
  147. package/src/stories/loop-constructor/data-input-forced.json +64 -64
  148. package/src/stories/loop-constructor/data-input.json +100 -100
  149. package/src/stories/loop-constructor/data-loop-forced.json +66 -66
  150. package/src/stories/loop-constructor/data-loop-static-forced.json +66 -66
  151. package/src/stories/loop-constructor/data-loop-static.json +81 -81
  152. package/src/stories/loop-constructor/data-loop.json +81 -81
  153. package/src/stories/loop-constructor/data-roster-forced.json +68 -68
  154. package/src/stories/loop-constructor/data-roster.json +83 -83
  155. package/src/stories/loop-constructor/loop-constructor.stories.js +180 -180
  156. package/src/stories/questionnaire/logement-queen.json +23234 -0
  157. package/src/stories/questionnaire/logement.json +22068 -26812
  158. package/src/stories/questionnaire/questionnaire.stories.js +86 -29
  159. package/src/stories/questionnaire/update-external/data.json +1 -0
  160. package/src/stories/questionnaire/update-external/questionnaire.json +75 -0
  161. package/src/stories/suggester/bailleurs-sociaux-2021/fetch-bailleurs.js +12 -0
  162. package/src/stories/suggester/bailleurs-sociaux-2021/index.js +1 -0
  163. package/src/stories/suggester/data-auto.json +1 -0
  164. package/src/stories/suggester/data.json +35 -2
  165. package/src/stories/suggester/lunatic-suggester-mui.scss +27 -0
  166. package/src/stories/suggester/suggester-material-ui.js +148 -0
  167. package/src/stories/suggester/suggester-workers.stories.js +48 -1
  168. package/src/stories/suggester/suggester.stories.js +27 -1
  169. package/src/stories/switch/README.md +31 -0
  170. package/src/stories/switch/SwitchMaterialUI.js +35 -0
  171. package/src/stories/switch/data-forced.json +48 -0
  172. package/src/stories/switch/data.json +80 -0
  173. package/src/stories/switch/switch.stories.js +78 -0
  174. package/src/stories/utils/custom-lunatic.scss +28 -23
  175. package/src/stories/utils/orchestrator.js +151 -58
  176. package/src/stories/utils/waiting/index.js +1 -0
  177. package/src/stories/utils/waiting/preloader.svg +1 -0
  178. package/src/stories/utils/waiting/waiting.js +21 -0
  179. package/src/stories/utils/waiting/waiting.scss +21 -0
  180. package/src/tests/sample.spec.js +5 -0
  181. package/src/utils/icons/checkbox-checked.icon.js +25 -0
  182. package/src/utils/icons/checkbox-unchecked.icon.js +25 -0
  183. package/src/utils/icons/radio-checked.icon.js +25 -0
  184. package/src/utils/icons/radio-unchecked.icon.js +25 -0
  185. package/src/utils/lib/controls/index.js +1 -0
  186. package/src/utils/lib/controls/utils.js +146 -0
  187. package/src/utils/lib/index.js +20 -19
  188. package/src/utils/lib/pagination/navigation/shared.js +7 -4
  189. package/src/utils/lib/responses.js +9 -7
  190. package/src/utils/lib/tooltip/build-response.js +53 -41
  191. package/src/utils/store-tools/auto-load.js +2 -1
  192. package/src/utils/store-tools/create/index.js +2 -1
  193. package/src/utils/store-tools/create/update-store-info.js +26 -26
  194. package/src/utils/store-tools/index.js +7 -5
  195. package/src/utils/suggester-workers/append-to-index/create-append-task.js +3 -1
  196. package/src/utils/suggester-workers/commons-tokenizer/create-entity-tokenizer.js +56 -0
  197. package/src/utils/suggester-workers/commons-tokenizer/create-fields-tokenizer.js +56 -0
  198. package/src/utils/suggester-workers/commons-tokenizer/create-filter-stop-words.js +11 -11
  199. package/src/utils/suggester-workers/commons-tokenizer/filters/compose-filters.js +10 -0
  200. package/src/utils/suggester-workers/commons-tokenizer/filters/create-filter-stop-words.js +17 -0
  201. package/src/utils/suggester-workers/commons-tokenizer/filters/create-filter-stop-words.spec.js +14 -0
  202. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-accents.js +12 -0
  203. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-accents.spec.js +12 -0
  204. package/src/utils/suggester-workers/commons-tokenizer/{filter-double.js → filters/filter-double.js} +0 -0
  205. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-double.spec.js +20 -0
  206. package/src/utils/suggester-workers/commons-tokenizer/{filter-length.js → filters/filter-length.js} +0 -0
  207. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-length.spec.js +18 -0
  208. package/src/utils/suggester-workers/commons-tokenizer/{filter-stemmer.js → filters/filter-stemmer.js} +2 -2
  209. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-stemmer.spec.js +12 -0
  210. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-synonyms.js +36 -0
  211. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-synonyms.spec.js +12 -0
  212. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-to-lower.js +10 -0
  213. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-to-lower.spec.js +12 -0
  214. package/src/utils/suggester-workers/commons-tokenizer/filters/index.js +2 -0
  215. package/src/utils/suggester-workers/commons-tokenizer/{stop-words.js → filters/stop-words.js} +0 -0
  216. package/src/utils/suggester-workers/commons-tokenizer/index.js +6 -5
  217. package/src/utils/suggester-workers/commons-tokenizer/prepare-string-indexation.js +7 -3
  218. package/src/utils/suggester-workers/commons-tokenizer/soft-tokenizer.js +1 -1
  219. package/src/utils/suggester-workers/create-worker.js +55 -0
  220. package/src/utils/suggester-workers/find-best-label/tokenize.js +2 -5
  221. package/src/utils/suggester-workers/{query-parser → searching/query-parser}/index.js +0 -0
  222. package/src/utils/suggester-workers/searching/query-parser/query-parser-soft.js +7 -0
  223. package/src/utils/suggester-workers/{query-parser → searching/query-parser}/query-parser-soft.spec.js +0 -0
  224. package/src/utils/suggester-workers/searching/query-parser/query-parser-tokenized.js +34 -0
  225. package/src/utils/suggester-workers/searching/resolve-query-parser.js +2 -2
  226. package/src/utils/suggester-workers/searching/searching.js +2 -2
  227. package/src/utils/to-expose/{calculated-variables.js → _old/calculated-variables.js} +0 -0
  228. package/src/utils/to-expose/{handler.js → _old/handler.js} +22 -0
  229. package/src/utils/to-expose/{init-questionnaire.js → _old/init-questionnaire.js} +0 -0
  230. package/src/utils/to-expose/{state.js → _old/state.js} +13 -14
  231. package/src/utils/to-expose/hooks/filter-components.js +106 -106
  232. package/src/utils/to-expose/hooks/index.js +1 -1
  233. package/src/utils/to-expose/hooks/lunatic.js +68 -7
  234. package/src/utils/to-expose/hooks/use-lunatic/actions.js +23 -0
  235. package/src/utils/to-expose/hooks/use-lunatic/commons/check-loops.js +61 -0
  236. package/src/utils/to-expose/hooks/use-lunatic/commons/create-map-pages.js +69 -0
  237. package/src/utils/to-expose/hooks/use-lunatic/commons/execute-condition-filter.js +16 -0
  238. package/src/utils/to-expose/hooks/use-lunatic/commons/execute-expression/create-execute-expression.js +182 -0
  239. package/src/utils/to-expose/hooks/use-lunatic/commons/execute-expression/create-memoizer.js +42 -0
  240. package/src/utils/to-expose/hooks/use-lunatic/commons/execute-expression/create-refresh-calculated.js +50 -0
  241. package/src/utils/to-expose/hooks/use-lunatic/commons/execute-expression/execute-expression.js +60 -0
  242. package/src/utils/to-expose/hooks/use-lunatic/commons/execute-expression/get-expressions-variables.js +22 -0
  243. package/src/utils/to-expose/hooks/use-lunatic/commons/execute-expression/index.js +1 -0
  244. package/src/utils/to-expose/hooks/use-lunatic/commons/fill-component-expressions.js +113 -0
  245. package/src/utils/to-expose/hooks/use-lunatic/commons/fill-components.js +31 -0
  246. package/src/utils/to-expose/hooks/use-lunatic/commons/get-compatible-vtl-expression.js +14 -0
  247. package/src/utils/to-expose/hooks/use-lunatic/commons/get-component-value/get-component-value.js +161 -0
  248. package/src/utils/to-expose/hooks/use-lunatic/commons/get-component-value/index.js +1 -0
  249. package/src/utils/to-expose/hooks/use-lunatic/commons/get-components-from-state.js +24 -0
  250. package/src/utils/to-expose/hooks/use-lunatic/commons/get-page-tag.js +10 -0
  251. package/src/utils/to-expose/hooks/use-lunatic/commons/index.js +12 -0
  252. package/src/utils/to-expose/hooks/use-lunatic/commons/is-First-last-page.js +8 -0
  253. package/src/utils/to-expose/hooks/use-lunatic/commons/is-paginated-loop.js +6 -0
  254. package/src/utils/to-expose/hooks/use-lunatic/commons/load-suggesters.js +59 -0
  255. package/src/utils/to-expose/hooks/use-lunatic/commons/use-components-from-state.js +20 -0
  256. package/src/utils/to-expose/hooks/use-lunatic/index.js +1 -0
  257. package/src/utils/to-expose/hooks/use-lunatic/initial-state.js +22 -0
  258. package/src/utils/to-expose/hooks/use-lunatic/reducer/commons/index.js +3 -0
  259. package/src/utils/to-expose/hooks/use-lunatic/reducer/commons/is-empty-on-empty-page.js +29 -0
  260. package/src/utils/to-expose/hooks/use-lunatic/reducer/commons/resize-array-variable.js +26 -0
  261. package/src/utils/to-expose/hooks/use-lunatic/reducer/commons/validate-loop-condition-filter.js +20 -0
  262. package/src/utils/to-expose/hooks/use-lunatic/reducer/index.js +1 -0
  263. package/src/utils/to-expose/hooks/use-lunatic/reducer/reduce-go-next-page.js +129 -0
  264. package/src/utils/to-expose/hooks/use-lunatic/reducer/reduce-go-previous-page.js +131 -0
  265. package/src/utils/to-expose/hooks/use-lunatic/reducer/reduce-handle-change/index.js +1 -0
  266. package/src/utils/to-expose/hooks/use-lunatic/reducer/reduce-handle-change/reduce-handle-change.js +69 -0
  267. package/src/utils/to-expose/hooks/use-lunatic/reducer/reduce-handle-change/reduce-variables-array.js +22 -0
  268. package/src/utils/to-expose/hooks/use-lunatic/reducer/reduce-handle-change/reduce-variables-simple.js +13 -0
  269. package/src/utils/to-expose/hooks/use-lunatic/reducer/reduce-on-init.js +166 -0
  270. package/src/utils/to-expose/hooks/use-lunatic/reducer/reduce-on-set-waiting.js +7 -0
  271. package/src/utils/to-expose/hooks/use-lunatic/reducer/reducer.js +26 -0
  272. package/src/utils/to-expose/hooks/use-lunatic/use-lunatic.js +79 -0
  273. package/src/utils/to-expose/index.js +16 -11
  274. package/src/components/button/component.js +0 -53
  275. package/src/components/checkbox/boolean.js +0 -172
  276. package/src/components/checkbox/group.js +0 -231
  277. package/src/components/checkbox/one.js +0 -11
  278. package/src/components/datepicker/component.js +0 -11
  279. package/src/components/input/input-number.js +0 -54
  280. package/src/components/missing-wrapper/wrapper.js +0 -10
  281. package/src/components/radio/component.js +0 -9
  282. package/src/components/sequence/component.js +0 -50
  283. package/src/components/subsequence/component.js +0 -49
  284. package/src/tests/components/breadcrumb.spec.js +0 -13
  285. package/src/tests/components/button.spec.js +0 -11
  286. package/src/tests/components/checkbox-boolean.spec.js +0 -45
  287. package/src/tests/components/checkbox-group.spec.js +0 -53
  288. package/src/tests/components/checkbox-one.spec.js +0 -32
  289. package/src/tests/components/datepicker.spec.js +0 -22
  290. package/src/tests/components/declarations-wrappers/input-declarations-wrapper.spec.js +0 -67
  291. package/src/tests/components/declarations-wrappers/list-declarations-wrapper.spec.js +0 -52
  292. package/src/tests/components/declarations-wrappers/simple-declarations-wrapper.spec.js +0 -21
  293. package/src/tests/components/declarations.spec.js +0 -46
  294. package/src/tests/components/input-number.spec.js +0 -194
  295. package/src/tests/components/input.spec.js +0 -18
  296. package/src/tests/components/loops/loop-static.json +0 -66
  297. package/src/tests/components/loops/loop.json +0 -258
  298. package/src/tests/components/loops/loop.spec.js +0 -30
  299. package/src/tests/components/loops/roster-for-loop.spec.js +0 -18
  300. package/src/tests/components/loops/roster-loop.json +0 -71
  301. package/src/tests/components/missing-wrapper.spec.js +0 -33
  302. package/src/tests/components/progress-bar.spec.js +0 -15
  303. package/src/tests/components/radio.spec.js +0 -27
  304. package/src/tests/components/sequence.spec.js +0 -9
  305. package/src/tests/components/subsequence.spec.js +0 -9
  306. package/src/tests/components/table.spec.js +0 -11
  307. package/src/tests/components/textarea.spec.js +0 -18
  308. package/src/tests/components/tooltip.spec.js +0 -25
  309. package/src/tests/setup/setupTests.js +0 -4
  310. package/src/tests/utils/lib/alphabet.spec.js +0 -36
  311. package/src/tests/utils/lib/array.spec.js +0 -22
  312. package/src/tests/utils/lib/checkbox/group.spec.js +0 -72
  313. package/src/tests/utils/lib/decorator/title-decorator.spec.js +0 -12
  314. package/src/tests/utils/lib/input-number.spec.js +0 -18
  315. package/src/tests/utils/lib/items-positioning.spec.js +0 -17
  316. package/src/tests/utils/lib/label-position.spec.js +0 -22
  317. package/src/tests/utils/lib/loops/bindings.spec.js +0 -75
  318. package/src/tests/utils/lib/loops/shared.spec.js +0 -82
  319. package/src/tests/utils/lib/missing/missing.spec.js +0 -74
  320. package/src/tests/utils/lib/missing/mock.js +0 -137
  321. package/src/tests/utils/lib/pagination/shared.spec.js +0 -42
  322. package/src/tests/utils/lib/responses.spec.js +0 -64
  323. package/src/tests/utils/lib/style.spec.js +0 -26
  324. package/src/tests/utils/lib/table/roster.spec.js +0 -25
  325. package/src/tests/utils/lib/tooltip/build-response.spec.js +0 -95
  326. package/src/tests/utils/lib/tooltip/content.spec.js +0 -109
  327. package/src/tests/utils/to-expose/handler/handler.spec.js +0 -94
  328. package/src/tests/utils/to-expose/handler/questionnaire.json +0 -158
  329. package/src/tests/utils/to-expose/handler/results/index.js +0 -6
  330. package/src/tests/utils/to-expose/handler/results/res-double.json +0 -158
  331. package/src/tests/utils/to-expose/handler/results/res-input-collected.json +0 -158
  332. package/src/tests/utils/to-expose/handler/results/res-input-edited.json +0 -158
  333. package/src/tests/utils/to-expose/handler/results/res-loop.json +0 -158
  334. package/src/tests/utils/to-expose/handler/results/res-matrix.json +0 -158
  335. package/src/tests/utils/to-expose/handler/results/res-responses.json +0 -158
  336. package/src/tests/utils/to-expose/hooks/use-lunatic.spec.js +0 -46
  337. package/src/tests/utils/to-expose/init-questionnaire/data.json +0 -12
  338. package/src/tests/utils/to-expose/init-questionnaire/init-questionnaire.spec.js +0 -19
  339. package/src/tests/utils/to-expose/init-questionnaire/questionnaire.json +0 -148
  340. package/src/tests/utils/to-expose/init-questionnaire/result.json +0 -181
  341. package/src/tests/utils/to-expose/interpret/interpret.spec.js +0 -48
  342. package/src/tests/utils/to-expose/state/questionnaire.json +0 -61
  343. package/src/tests/utils/to-expose/state/results.js +0 -78
  344. package/src/tests/utils/to-expose/state/state.spec.js +0 -59
  345. package/src/utils/suggester-workers/commons-tokenizer/create-tokenizer.js +0 -103
  346. package/src/utils/suggester-workers/commons-tokenizer/filter-accents-to-lower.js +0 -9
  347. package/src/utils/suggester-workers/commons-tokenizer/filter-synonyms.js +0 -10
  348. package/src/utils/suggester-workers/query-parser/query-parser-soft.js +0 -7
  349. package/src/utils/suggester-workers/query-parser/query-parser-tokenized.js +0 -31
  350. package/src/utils/suggester-workers/query-parser/query-parser-tokenized.spec.js +0 -32
@@ -0,0 +1,113 @@
1
+ const VTL_ATTRIBUTES = [
2
+ 'label',
3
+ 'hierarchy.label',
4
+ 'hierarchy.subSequence.label',
5
+ 'hierarchy.sequence.label',
6
+ 'declarations.label',
7
+ 'controls.control',
8
+ 'controls.errorMessage',
9
+ 'options.label',
10
+ 'lines.min',
11
+ 'lines.max',
12
+ 'iterations',
13
+ ];
14
+
15
+ function createCrawl({ executeExpression, iteration }) {
16
+ /**
17
+ *
18
+ * @param {*} object
19
+ * @param {*} path
20
+ * @returns
21
+ */
22
+ function executeAndFillObject(object, path) {
23
+ const candidate = object[path];
24
+
25
+ if (typeof candidate === 'object') {
26
+ const { type } = candidate;
27
+ if (type === 'VTL|MD') {
28
+ return {
29
+ ...object,
30
+ [path]: executeExpression(candidate, {
31
+ iteration,
32
+ }),
33
+ };
34
+ }
35
+ }
36
+
37
+ return object;
38
+ }
39
+
40
+ /**
41
+ *
42
+ * @param {*} object
43
+ * @param {*} array
44
+ * @param {*} path
45
+ * @returns
46
+ */
47
+ function crawlArray(object, path) {
48
+ const [step, ...rest] = path;
49
+ return object[step].reduce(
50
+ function (stack, entry) {
51
+ return {
52
+ ...stack,
53
+ [step]: [...stack[step], crawl(rest, entry)],
54
+ };
55
+ },
56
+ { ...object, [step]: [] }
57
+ );
58
+ }
59
+
60
+ /**
61
+ *
62
+ * @param {*} object
63
+ * @param {*} path
64
+ * @returns
65
+ */
66
+ function crawlObject(object, path) {
67
+ const [step, ...rest] = path;
68
+ return { ...object, [step]: crawl(rest, object[step]) };
69
+ }
70
+
71
+ /**
72
+ *
73
+ * @param {*} path
74
+ * @param {*} object
75
+ * @returns
76
+ */
77
+ function crawl(path, object) {
78
+ const [step, ...rest] = path;
79
+
80
+ if (step in object && rest.length === 0) {
81
+ return executeAndFillObject(object, step);
82
+ } else if (step in object) {
83
+ if (Array.isArray(object[step])) {
84
+ return crawlArray(object, path);
85
+ }
86
+ return crawlObject(object, path);
87
+ }
88
+
89
+ return object;
90
+ }
91
+
92
+ return crawl;
93
+ }
94
+
95
+ function fillAttributes(component, { executeExpression, iteration }) {
96
+ const crawl = createCrawl({ executeExpression, iteration });
97
+ return VTL_ATTRIBUTES.reduce(
98
+ function (step, fullStringPath) {
99
+ const path = fullStringPath.split('.');
100
+ return {
101
+ ...step,
102
+ ...crawl(path, step, fullStringPath),
103
+ };
104
+ },
105
+ { ...component }
106
+ );
107
+ }
108
+
109
+ function fillComponentExpressions(component, { executeExpression, iteration }) {
110
+ return fillAttributes(component, { executeExpression, iteration });
111
+ }
112
+
113
+ export default fillComponentExpressions;
@@ -0,0 +1,31 @@
1
+ import getComponentValue from './get-component-value';
2
+ import fillComponentExpressions from './fill-component-expressions';
3
+
4
+ function fillComponentValue(component, state) {
5
+ const value = getComponentValue(component, state);
6
+ return { ...component, value };
7
+ }
8
+
9
+ function fillPagination(component, state) {
10
+ const { pager } = state;
11
+ const { iteration } = pager;
12
+
13
+ return { ...component, iteration };
14
+ }
15
+
16
+ function fillComponents(components, state) {
17
+ return components.map(function (component) {
18
+ const { pager, executeExpression } = state;
19
+ const { iteration } = pager;
20
+
21
+ return fillComponentExpressions(
22
+ fillPagination(fillComponentValue(component, state), state),
23
+ {
24
+ executeExpression,
25
+ iteration,
26
+ }
27
+ );
28
+ });
29
+ }
30
+
31
+ export default fillComponents;
@@ -0,0 +1,14 @@
1
+ function getCompatibleVTLExpression(expression) {
2
+ if (typeof expression === 'string') {
3
+ return { value: expression, type: 'VTL|MD' };
4
+ }
5
+ if (typeof expression === 'object') {
6
+ const { type } = expression;
7
+ if (expression === 'VTL') {
8
+ return expression;
9
+ }
10
+ }
11
+ throw new Error(`Non-VTL compatible expression : ${expression}`);
12
+ }
13
+
14
+ export default getCompatibleVTLExpression;
@@ -0,0 +1,161 @@
1
+ // function isCheckboxGroup(component) {
2
+ // const { componentType } = component;
3
+ // return componentType === 'CheckboxGroup';
4
+ // }
5
+
6
+ // function isLoopComponent(component) {
7
+ // const { componentType, lines, iterations } = component;
8
+ // if (componentType === 'Loop' && iterations !== undefined) {
9
+ // return true;
10
+ // }
11
+ // if (
12
+ // componentType === 'Loop' &&
13
+ // typeof lines === 'object' &&
14
+ // lines.max !== undefined &&
15
+ // lines.min !== undefined
16
+ // ) {
17
+ // return true;
18
+ // }
19
+ // return false;
20
+ // }
21
+
22
+ function isInSubPage(state) {
23
+ const { pager } = state;
24
+ const { subPage } = pager;
25
+
26
+ return subPage !== undefined;
27
+ }
28
+
29
+ // function getLoopValues(component, variables) {
30
+ // const { components } = component;
31
+ // return components.reduce(function (map, component) {
32
+ // // TODO responses cells
33
+ // const { response } = component;
34
+ // if (response) {
35
+ // const { name } = response;
36
+ // if (name) {
37
+ // return { ...map, [name]: getCollectedValue(component, variables) };
38
+ // }
39
+ // }
40
+ // return map;
41
+ // }, {});
42
+ // }
43
+
44
+ // function getCheckboxGroupValue(component, variables) {
45
+ // const { responses } = component;
46
+ // if (typeof responses === 'object') {
47
+ // return responses.reduce(function (map, entry) {
48
+ // const { response } = entry;
49
+ // if (entry) {
50
+ // const { name } = response;
51
+ // return { ...map, [name]: getCollectedValue({ response }, variables) };
52
+ // }
53
+ // return map;
54
+ // }, {});
55
+ // }
56
+ // return {};
57
+ // }
58
+
59
+ // function getCollectedValue(component, variables) {
60
+ // const { response } = component;
61
+
62
+ // if (response) {
63
+ // const { name } = response;
64
+ // if (name in variables) {
65
+ // const { value } = variables[name];
66
+ // return value;
67
+ // }
68
+ // }
69
+
70
+ // return undefined;
71
+ // }
72
+
73
+ // function getSubPageValue(state, component, variables) {
74
+ // const value = getCollectedValue(component, variables);
75
+
76
+ // if (value && Array.isArray(value)) {
77
+ // const { pager } = state;
78
+ // const { iteration } = pager;
79
+ // return value[iteration];
80
+ // }
81
+ // return undefined;
82
+ // }
83
+
84
+ /* */
85
+ function mergeResponse({ map, response, variables }) {
86
+ const { name } = response;
87
+ if (name in variables) {
88
+ return { ...map, [name]: variables[name].value };
89
+ }
90
+ return map;
91
+ }
92
+
93
+ function collecteArrayResponses({ components, variables, map = {} }) {
94
+ return components.reduce(function (sub, component) {
95
+ return collecteComponentResponse({
96
+ component,
97
+ variables,
98
+ map: sub,
99
+ });
100
+ }, map);
101
+ }
102
+
103
+ function collecteComponentResponse({ component, variables, map = {} }) {
104
+ const { components, response, responses } = component;
105
+ if (response) {
106
+ return mergeResponse({ map, response, variables });
107
+ }
108
+ if (components) {
109
+ return collecteArrayResponses({ components, variables, map });
110
+ }
111
+ if (responses) {
112
+ return collecteArrayResponses({ components: responses, variables, map });
113
+ }
114
+ return map;
115
+ }
116
+
117
+ /* */
118
+
119
+ function checkArrayForSubPage(map, state) {
120
+ const { pager } = state;
121
+ const { iteration } = pager;
122
+
123
+ return Object.entries(map).reduce(function (sub, [name, value]) {
124
+ if (value && Array.isArray(value)) {
125
+ return { ...sub, [name]: value[iteration] };
126
+ }
127
+ return { ...sub, [name]: value };
128
+ }, {});
129
+ }
130
+
131
+ function checkUseContext(map, state) {
132
+ if (isInSubPage(state)) {
133
+ return checkArrayForSubPage(map, state);
134
+ }
135
+ return map;
136
+ }
137
+
138
+ function isSimpleComponent(component) {
139
+ const { response } = component;
140
+ return typeof response === 'object';
141
+ }
142
+
143
+ /* */
144
+
145
+ function getComponentValue(component, state) {
146
+ const { variables } = state;
147
+ /* */
148
+ const map = checkUseContext(
149
+ collecteComponentResponse({ component, variables }),
150
+ state
151
+ );
152
+ if (isSimpleComponent(component)) {
153
+ const { response } = component;
154
+ const { name } = response;
155
+
156
+ return map[name];
157
+ }
158
+ return map;
159
+ }
160
+
161
+ export default getComponentValue;
@@ -0,0 +1 @@
1
+ export { default } from './get-component-value';
@@ -0,0 +1,24 @@
1
+ function getComponentsFromState(state) {
2
+ const { pager, pages, isInLoop } = state;
3
+ const { page, subPage } = pager;
4
+
5
+ if (page && pages && page in pages) {
6
+ const current = pages[page];
7
+ if (isInLoop) {
8
+ const { subPages } = current;
9
+ const stepName = subPages[subPage];
10
+ if (stepName in pages) {
11
+ const currentSubPage = pages[stepName];
12
+ const { components } = currentSubPage;
13
+ return components;
14
+ }
15
+ } else {
16
+ const { components } = current;
17
+ return components;
18
+ }
19
+ }
20
+
21
+ return [];
22
+ }
23
+
24
+ export default getComponentsFromState;
@@ -0,0 +1,10 @@
1
+ function getPageTag(pager) {
2
+ const { page, subPage, iteration } = pager;
3
+ if (subPage !== undefined && iteration !== undefined) {
4
+ return `${page}.${subPage + 1}#${iteration + 1}`;
5
+ }
6
+
7
+ return `${page}`;
8
+ }
9
+
10
+ export default getPageTag;
@@ -0,0 +1,12 @@
1
+ export { default as checkLoops } from './check-loops';
2
+ export { default as createMapPages } from './create-map-pages';
3
+ export { default as isPaginatedLoop } from './is-paginated-loop';
4
+ export { default as getComponentsFromState } from './get-components-from-state';
5
+ export { default as useComponentsFromState } from './use-components-from-state';
6
+ export { default as getPageTag } from './get-page-tag';
7
+ export { default as isFirstLastPage } from './is-First-last-page';
8
+ export { default as createExecuteExpression } from './execute-expression';
9
+ export { default as executeConditionFilter } from './execute-condition-filter';
10
+ export { default as fillComponentExpressions } from './fill-component-expressions';
11
+ export { default as loadSuggester } from './load-suggesters';
12
+ export { default as getCompatibleVTLExpression } from './get-compatible-vtl-expression';
@@ -0,0 +1,8 @@
1
+ function isFirstLastPage(pager) {
2
+ const { page, maxPage } = pager;
3
+ const isFirstPage = page === '1';
4
+ const isLastPage = page === maxPage;
5
+ return { isFirstPage, isLastPage };
6
+ }
7
+
8
+ export default isFirstLastPage;
@@ -0,0 +1,6 @@
1
+ function isPaginatedLoop(component) {
2
+ const { componentType, paginatedLoop } = component;
3
+ return componentType === 'Loop' && paginatedLoop;
4
+ }
5
+
6
+ export default isPaginatedLoop;
@@ -0,0 +1,59 @@
1
+ import {
2
+ openOrCreateStore,
3
+ clearStoreInfo,
4
+ clearStoreData,
5
+ updateStoreInfo,
6
+ } from '../../../../store-tools';
7
+ import { createAppendTask } from '../../../../suggester-workers/append-to-index';
8
+
9
+ async function prepareStore(storeInfo, idbVersion) {
10
+ const { name } = storeInfo;
11
+ const db = await openOrCreateStore(name, idbVersion);
12
+ if (db) {
13
+ await clearStoreInfo(db);
14
+ await clearStoreData(db);
15
+ await updateStoreInfo(db, storeInfo);
16
+
17
+ return true;
18
+ }
19
+ return false;
20
+ }
21
+
22
+ async function loadOne(suggester, logging) {
23
+ const { idbVersion, fetch, ...storeInfo } = suggester;
24
+ const ready = await prepareStore(storeInfo, idbVersion);
25
+
26
+ if (ready) {
27
+ const data = await fetch();
28
+ const [launch, terminate] = createAppendTask(
29
+ storeInfo,
30
+ idbVersion,
31
+ logging
32
+ );
33
+ await launch(data);
34
+ terminate();
35
+ }
36
+ }
37
+
38
+ async function loadSuggesters(suggesters = []) {
39
+ try {
40
+ for (let i = 0; i < suggesters.length; i++) {
41
+ const suggester = suggesters[i];
42
+ const { autoLoad } = suggester;
43
+ function logging(message) {
44
+ //console.log(name, message);
45
+ }
46
+ if (autoLoad) {
47
+ await loadOne(suggester, logging);
48
+ }
49
+ }
50
+ return true;
51
+ } catch (e) {
52
+ console.warn(
53
+ "Une erreur s'est produite lors de l'initialisation des suggesters."
54
+ );
55
+ return false;
56
+ }
57
+ }
58
+
59
+ export default loadSuggesters;
@@ -0,0 +1,20 @@
1
+ import { useState, useEffect } from 'react';
2
+ import getComponentsFromState from './get-components-from-state';
3
+ import fillComponents from './fill-components';
4
+
5
+ function useComponentsFromState(state) {
6
+ const [componentsFilled, setComponentsFilled] = useState([]);
7
+
8
+ useEffect(
9
+ function () {
10
+ const { pager, pages, isInLoop } = state;
11
+ const components = getComponentsFromState({ pager, pages, isInLoop });
12
+ setComponentsFilled(fillComponents(components, state));
13
+ },
14
+ [state]
15
+ );
16
+
17
+ return componentsFilled;
18
+ }
19
+
20
+ export default useComponentsFromState;
@@ -0,0 +1 @@
1
+ export { default } from './use-lunatic';
@@ -0,0 +1,22 @@
1
+ const INITIAL_STATE = {
2
+ variables: {}, // map des variables du questionnaires
3
+ pages: {},
4
+ isInLoop: false,
5
+ isFirstPage: false,
6
+ isLastPage: false,
7
+ features: ['VTL'],
8
+ pager: {
9
+ page: undefined,
10
+ maxPage: undefined,
11
+ subPage: undefined,
12
+ nbSubPages: undefined,
13
+ iteration: undefined,
14
+ nbIterations: undefined,
15
+ },
16
+ waiting: false,
17
+ /* fonctionnalités vtl & md */
18
+ updateBindings: () => {},
19
+ executeExpression: () => {},
20
+ };
21
+
22
+ export default INITIAL_STATE;
@@ -0,0 +1,3 @@
1
+ export { default as isOnEmptyPage } from './is-empty-on-empty-page';
2
+ export { default as resizeArrayVariable } from './resize-array-variable';
3
+ export { default as validateLoopConditionFilter } from './validate-loop-condition-filter';
@@ -0,0 +1,29 @@
1
+ import { getComponentsFromState, executeConditionFilter } from '../../commons';
2
+
3
+ function isOnEmptyPage(state) {
4
+ const { executeExpression, pager } = state;
5
+ const { iteration } = pager;
6
+ const components = getComponentsFromState(state);
7
+ const rest = components.reduce(function (rest, component) {
8
+ const { conditionFilter } = component;
9
+ if (conditionFilter) {
10
+ const result = executeConditionFilter(
11
+ conditionFilter,
12
+ executeExpression,
13
+ iteration
14
+ );
15
+ if (result !== false) {
16
+ return [...rest, component];
17
+ }
18
+ }
19
+ return rest;
20
+ }, []);
21
+
22
+ if (!rest.length) {
23
+ return true;
24
+ }
25
+
26
+ return false;
27
+ }
28
+
29
+ export default isOnEmptyPage;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * certaines variables du questionnaire sont de type tableau.
3
+ * Il faut alors vérifier qu'elles le sont véritablement.
4
+ * Il faut aussi vérifier quelles sont de la taille adéquate.
5
+ * @param {*} array
6
+ * @param {*} length
7
+ * @returns le tableau à la taille correcte.
8
+ */
9
+ function resizeArrayVariable(array, length) {
10
+ if (!Array.isArray(array)) {
11
+ // create the array
12
+ return new Array(length).fill(null);
13
+ } else if (array.length !== length) {
14
+ // renew array end keep previous values
15
+ return new Array(length).fill(null).reduce(function (step, current, index) {
16
+ if (index < array.length) {
17
+ return [...step, array[index]];
18
+ }
19
+ return [...step, current];
20
+ }, []);
21
+ }
22
+ // do nothing
23
+ return array;
24
+ }
25
+
26
+ export default resizeArrayVariable;
@@ -0,0 +1,20 @@
1
+ import { executeConditionFilter } from '../../commons';
2
+
3
+ function validateLoopConditionFilter(state, { next, iteration }) {
4
+ const { pages, executeExpression } = state;
5
+ const { components } = pages[next];
6
+ const [loop] = components;
7
+ if (loop) {
8
+ const { conditionFilter } = loop;
9
+ if (conditionFilter) {
10
+ return executeConditionFilter(
11
+ conditionFilter,
12
+ executeExpression,
13
+ iteration
14
+ );
15
+ }
16
+ }
17
+ return true;
18
+ }
19
+
20
+ export default validateLoopConditionFilter;
@@ -0,0 +1 @@
1
+ export { default } from './reducer';