@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,20 @@
1
+ import filterDouble from './filter-double';
2
+
3
+ describe('filter-double', function () {
4
+ it('empty', function () {
5
+ const tokens = ['un', 'un'];
6
+ const results = filterDouble(tokens);
7
+ expect(Array.isArray(results)).toBe(true);
8
+ expect(results.length).toBe(1);
9
+ expect(results[0]).toBe('un');
10
+ });
11
+
12
+ it('remove one', function () {
13
+ const tokens = ['un', 'un', 'long'];
14
+ const results = filterDouble(tokens, { min: 3 });
15
+ expect(Array.isArray(results)).toBe(true);
16
+ expect(results.length).toBe(2);
17
+ expect(results[0]).toBe('un');
18
+ expect(results[1]).toBe('long');
19
+ });
20
+ });
@@ -0,0 +1,18 @@
1
+ import filterLength from './filter-length';
2
+
3
+ describe('filter-length', function () {
4
+ it('empty', function () {
5
+ const tokens = ['un', 'no'];
6
+ const results = filterLength(tokens, { min: 3 });
7
+ expect(Array.isArray(results)).toBe(true);
8
+ expect(results.length).toBe(0);
9
+ });
10
+
11
+ it('remove one', function () {
12
+ const tokens = ['un', 'long'];
13
+ const results = filterLength(tokens, { min: 3 });
14
+ expect(Array.isArray(results)).toBe(true);
15
+ expect(results.length).toBe(1);
16
+ expect(results[0]).toBe('long');
17
+ });
18
+ });
@@ -1,6 +1,6 @@
1
- import getStemmer from './get-stemmer';
1
+ import getStemmer from '../get-stemmer';
2
2
 
3
- function filterStemmer(tokens, { language, stemmer = true }) {
3
+ function filterStemmer(tokens, { language = 'French', stemmer = true }) {
4
4
  if (stemmer) {
5
5
  const stemming = getStemmer(language);
6
6
  return tokens.map(function (token) {
@@ -0,0 +1,12 @@
1
+ import filterStemmer from './filter-stemmer';
2
+
3
+ describe('filter-stemmer', function () {
4
+ it('commerce', function () {
5
+ const tokens = ['commerce', 'commercial'];
6
+ const results = filterStemmer(tokens, { language: 'French' });
7
+ expect(Array.isArray(results)).toBe(true);
8
+ expect(results.length).toBe(2);
9
+ expect(results[0]).toBe('commerc');
10
+ expect(results[1]).toBe('commercial');
11
+ });
12
+ });
@@ -0,0 +1,36 @@
1
+ const MAPS_FROM_ARRAY = new Map(); // Pour éviter de recalculer une map à chaque fois
2
+
3
+ function filterFromObject(tokens, synonyms) {
4
+ return tokens.reduce(function (prec, token) {
5
+ if (token in synonyms) {
6
+ return [...prec, token, ...synonyms[token]];
7
+ }
8
+ return [...prec, token];
9
+ }, []);
10
+ }
11
+
12
+ function buildSynonymsMap(array) {
13
+ return array.reduce(function (map, { source, target }) {
14
+ return { ...map, [source]: target };
15
+ }, {});
16
+ }
17
+
18
+ function filterFromArray(tokens, synonyms) {
19
+ if (!MAPS_FROM_ARRAY.has(synonyms)) {
20
+ MAPS_FROM_ARRAY.set(synonyms, buildSynonymsMap(synonyms));
21
+ }
22
+ return filterFromObject(tokens, MAPS_FROM_ARRAY.get(synonyms));
23
+ }
24
+
25
+ function filterSynonyms(tokens, { synonyms }) {
26
+ if (Array.isArray(synonyms) && synonyms.length) {
27
+ return filterFromArray(tokens, synonyms);
28
+ }
29
+ if (typeof synonyms === 'object') {
30
+ return filterFromObject(tokens, synonyms);
31
+ }
32
+
33
+ return tokens;
34
+ }
35
+
36
+ export default filterSynonyms;
@@ -0,0 +1,12 @@
1
+ import filterSynonyms from './filter-synonyms';
2
+
3
+ describe('filter-synonyms', function () {
4
+ it('', function () {
5
+ // const tokens = ['saint', 'sainte'];
6
+ // const results = filterStemmer(tokens, { language: 'French' });
7
+ // expect(Array.isArray(results)).toBe(true);
8
+ // expect(results.length).toBe(2);
9
+ // expect(results[0]).toBe('commerc');
10
+ // expect(results[1]).toBe('commercial');
11
+ });
12
+ });
@@ -0,0 +1,10 @@
1
+ function filterToLower(tokens) {
2
+ return tokens.map(function (token) {
3
+ if (typeof token === 'string') {
4
+ return token.toLocaleLowerCase();
5
+ }
6
+ return token;
7
+ });
8
+ }
9
+
10
+ export default filterToLower;
@@ -0,0 +1,12 @@
1
+ import filterToLower from './filter-to-lower';
2
+
3
+ describe('filter-to-lower', function () {
4
+ it('UN', function () {
5
+ const tokens = ['UN', 'no'];
6
+ const results = filterToLower(tokens);
7
+ expect(Array.isArray(results)).toBe(true);
8
+ expect(results.length).toBe(2);
9
+ expect(results[0]).toBe('un');
10
+ expect(results[1]).toBe('no');
11
+ });
12
+ });
@@ -0,0 +1,2 @@
1
+ export { default as composeFilters } from './compose-filters';
2
+ export { default as createFilterStopWords } from './create-filter-stop-words';
@@ -1,8 +1,9 @@
1
1
  export { default as getStemmer } from './get-stemmer';
2
- export { default as createTokenizer } from './create-tokenizer';
2
+ export { default as createTokenizer } from './create-entity-tokenizer';
3
3
  export { default as prepareStringIndexation } from './prepare-string-indexation';
4
- export { default as filterStemmer } from './filter-stemmer';
5
- export { default as filterLength } from './filter-length';
6
- export { default as filterDouble } from './filter-double';
7
- export { default as filterAccentsToLower } from './filter-accents-to-lower';
4
+ export { default as filterStemmer } from './filters/filter-stemmer';
5
+ export { default as filterLength } from './filters/filter-length';
6
+ export { default as filterDouble } from './filters/filter-double';
7
+ export { default as filterAccents } from './filters/filter-accents';
8
+ export { default as filterToLower } from './filters/filter-to-lower';
8
9
  export { default as getRegExpFromPattern } from './get-regexp-from-pattern';
@@ -1,9 +1,13 @@
1
1
  import removeAccents from 'remove-accents';
2
2
 
3
3
  function prepare(token = '', replacement = '') {
4
- return typeof token === 'string'
5
- ? removeAccents(token.toLowerCase()).replace(/[- ']/g, replacement)
6
- : token;
4
+ if (typeof token === 'string') {
5
+ return removeAccents(token.trim().toLowerCase()).replace(
6
+ /[- ']/g,
7
+ replacement
8
+ );
9
+ }
10
+ return token;
7
11
  }
8
12
 
9
13
  export default prepare;
@@ -1,4 +1,4 @@
1
- import prepareStringIndexation from './prepare-string-indexation';
1
+ import { prepareStringIndexation } from '../commons-tokenizer';
2
2
 
3
3
  function softTokenizer(string) {
4
4
  return [prepareStringIndexation(string, '-')];
@@ -0,0 +1,55 @@
1
+ // Enable cross domain workers
2
+
3
+ const testSameOrigin = (url) => {
4
+ var loc = window.location;
5
+ var a = document.createElement('a');
6
+ a.href = url;
7
+ return (
8
+ a.hostname === loc.hostname &&
9
+ a.port === loc.port &&
10
+ a.protocol === loc.protocol
11
+ );
12
+ };
13
+
14
+ const createWorkerFallback = (workerUrl) => {
15
+ console.log('Create worker for MFE');
16
+ var worker = null;
17
+ try {
18
+ var blob;
19
+ try {
20
+ blob = new Blob([`importScripts('${workerUrl}');`], {
21
+ type: 'application/javascript',
22
+ });
23
+ } catch (e) {
24
+ var blobBuilder = new (window.BlobBuilder ||
25
+ window.WebKitBlobBuilder ||
26
+ window.MozBlobBuilder)();
27
+ blobBuilder.append(`importScripts('${workerUrl}');`);
28
+ blob = blobBuilder.getBlob('application/javascript');
29
+ }
30
+ var url = window.URL || window.webkitURL;
31
+ var blobUrl = url.createObjectURL(blob);
32
+ worker = new Worker(blobUrl);
33
+ } catch (e1) {
34
+ console.error(`Lunatic-worker : Failed to load web worker : ${workerUrl}`);
35
+ }
36
+ return worker;
37
+ };
38
+
39
+ export const createWorker = (workerUrl) => {
40
+ var worker = null;
41
+ try {
42
+ if (testSameOrigin(workerUrl)) {
43
+ worker = new Worker(workerUrl);
44
+ worker.onerror = (event) => {
45
+ event.preventDefault();
46
+ worker = createWorkerFallback(workerUrl);
47
+ };
48
+ } else {
49
+ worker = createWorkerFallback(workerUrl);
50
+ }
51
+ } catch (e) {
52
+ worker = createWorkerFallback(workerUrl);
53
+ }
54
+ return worker;
55
+ };
@@ -1,5 +1,4 @@
1
1
  import tokenizer from 'string-tokenizer';
2
- import removeAccents from 'remove-accents';
3
2
 
4
3
  function toArray(tokens) {
5
4
  if (Array.isArray(tokens)) {
@@ -12,13 +11,11 @@ function tokenize(object, pattern = /[\w]+/) {
12
11
  if (typeof object === 'object') {
13
12
  const map = {};
14
13
  Object.entries(object).forEach(function ([key, string]) {
15
- const input = removeAccents(string).toLowerCase().trim();
16
- if (input.length) {
14
+ if (string.length) {
17
15
  const { tokens } = tokenizer()
18
- .input(removeAccents(string).toLowerCase())
16
+ .input(string)
19
17
  .tokens({ tokens: pattern })
20
18
  .resolve();
21
-
22
19
  map[key] = toArray(tokens);
23
20
  } else {
24
21
  map[key] = [];
@@ -0,0 +1,7 @@
1
+ import { prepareStringIndexation } from '../../commons-tokenizer';
2
+
3
+ function queryParserSoft(string) {
4
+ return [prepareStringIndexation(string, '-')];
5
+ }
6
+
7
+ export default queryParserSoft;
@@ -0,0 +1,34 @@
1
+ import tokenizer from 'string-tokenizer';
2
+ import {
3
+ filterStemmer,
4
+ filterLength,
5
+ filterDouble,
6
+ getRegExpFromPattern,
7
+ filterToLower,
8
+ } from '../../commons-tokenizer';
9
+ import { composeFilters } from '../../commons-tokenizer/filters';
10
+
11
+ const filterTokens = composeFilters(
12
+ filterDouble,
13
+ filterStemmer,
14
+ filterToLower,
15
+ filterLength
16
+ );
17
+
18
+ function toArray(tokens) {
19
+ if (tokens) {
20
+ return Array.isArray(tokens) ? tokens : [tokens];
21
+ }
22
+ return [];
23
+ }
24
+
25
+ function queryParserTokenized(query = '', { pattern, ...args } = {}) {
26
+ const patternForTokens = { tokens: getRegExpFromPattern(pattern) };
27
+ const { tokens } = tokenizer()
28
+ .input(query)
29
+ .tokens(patternForTokens)
30
+ .resolve();
31
+ return filterTokens(toArray(tokens), args);
32
+ }
33
+
34
+ export default queryParserTokenized;
@@ -1,6 +1,6 @@
1
- import { queryParserTokenized, queryParserSoft } from '../query-parser';
1
+ import { queryParserTokenized, queryParserSoft } from './query-parser';
2
2
 
3
- async function resolve(name, queryParser) {
3
+ async function resolve(queryParser) {
4
4
  try {
5
5
  const { type } = queryParser;
6
6
  switch (type) {
@@ -43,7 +43,7 @@ async function searching(search, { name, version = '1' }) {
43
43
  const db = await getDb(name, version);
44
44
  const info = await getEntity(db, CONSTANTES.STORE_INFO_NAME, name);
45
45
  const { queryParser, max, order } = info;
46
- const parser = await resolveQueryParser(name, queryParser);
46
+ const parser = await resolveQueryParser(queryParser);
47
47
  const transaction = db.transaction(
48
48
  CONSTANTES.STORE_DATA_NAME,
49
49
  'readonly'
@@ -62,7 +62,7 @@ async function searching(search, { name, version = '1' }) {
62
62
  }
63
63
  return { results: [], search };
64
64
  } catch (e) {
65
- console.err(e);
65
+ console.error(e);
66
66
  throw e;
67
67
  }
68
68
  }
@@ -15,7 +15,9 @@ export const updateQuestionnaire =
15
15
  !updatedValues
16
16
  )
17
17
  return questionnaire;
18
+
18
19
  const { variables, components, ...other } = questionnaire;
20
+
19
21
  if (!components || components.length === 0) return questionnaire;
20
22
  const varsAndRefs = Object.entries(updatedValues).reduce(
21
23
  (acc, [key, value]) => {
@@ -59,6 +61,26 @@ export const updateQuestionnaire =
59
61
  };
60
62
  };
61
63
 
64
+ export const updateExternals =
65
+ (questionnaire) => (logFunction) => (updatedValues) => {
66
+ const { variables, ...other } = questionnaire;
67
+ const { EXTERNAL } = variables;
68
+ const newVariables = {
69
+ ...variables,
70
+ EXTERNAL: { ...EXTERNAL, ...updatedValues },
71
+ };
72
+
73
+ const newVariablesWithCalculated = addCalculatedVars(
74
+ newVariables,
75
+ updatedValues
76
+ )(logFunction);
77
+
78
+ return {
79
+ ...other,
80
+ variables: newVariablesWithCalculated,
81
+ };
82
+ };
83
+
62
84
  export const buildNewValue =
63
85
  (preferences) => (valueType) => (oldValues) => (value) => {
64
86
  if (preferences.length === 1) return value;
@@ -33,23 +33,22 @@ const getCalculatedFromVariables = (variables) =>
33
33
  const getExternalFromVariables = (variables) =>
34
34
  (variables && variables[C.EXTERNAL]) || {};
35
35
 
36
- export const getCollectedStateByValueType = (questionnaire) => (
37
- valueType,
38
- displayNull
39
- ) =>
40
- ['PREVIOUS', 'COLLECTED', 'FORCED', 'EDITED', 'INPUTED'].includes(valueType)
41
- ? Object.entries(getCollectedState(questionnaire)).reduce((_, v) => {
42
- if (displayNull || v[1][valueType] !== null)
43
- return {
44
- ..._,
45
- [v[0]]: v[1][valueType],
46
- };
47
- return _;
48
- }, {})
49
- : {};
36
+ export const getCollectedStateByValueType =
37
+ (questionnaire) => (valueType, displayNull) =>
38
+ ['PREVIOUS', 'COLLECTED', 'FORCED', 'EDITED', 'INPUTED'].includes(valueType)
39
+ ? Object.entries(getCollectedState(questionnaire)).reduce((_, v) => {
40
+ if (displayNull || v[1][valueType] !== null)
41
+ return {
42
+ ..._,
43
+ [v[0]]: v[1][valueType],
44
+ };
45
+ return _;
46
+ }, {})
47
+ : {};
50
48
 
51
49
  export const getBindings = (questionnaire) => {
52
50
  const { variables } = questionnaire;
51
+
53
52
  return {
54
53
  ...getCollectedStateByValueType(questionnaire)('COLLECTED', true),
55
54
  ...getCalculatedFromVariables(variables),
@@ -1,106 +1,106 @@
1
- import { interpret } from '../interpret';
2
- import { isDev, buildVectorialBindings } from '../../lib';
3
-
4
- let cache = {};
5
-
6
- const customFilterPagination = ({ page }, pagination, currentPage) => {
7
- return pagination ? currentPage.split('.')[0] === page : true;
8
- };
9
-
10
- const filterComponents = ({ components, updatedVars, features, bindings }) => {
11
- const localCache = {};
12
- const filtered = components.filter(({ conditionFilter }) => {
13
- if (!conditionFilter || !conditionFilter.value) return true;
14
- const { bindingDependencies, value } = conditionFilter;
15
- if (localCache[value] !== undefined) return localCache[value];
16
- if (
17
- (!bindingDependencies ||
18
- !updatedVars.some((t) => bindingDependencies.includes(t))) &&
19
- cache[value] !== undefined
20
- )
21
- return cache[value];
22
- const vectorialBindings = buildVectorialBindings(bindings);
23
- const inter = interpret(features)(vectorialBindings)(value);
24
- localCache[value] = inter;
25
- return inter;
26
- });
27
- cache = { ...cache, ...localCache };
28
- return filtered;
29
- };
30
-
31
- const buildComponents = ({
32
- components,
33
- management,
34
- bindings,
35
- features,
36
- page,
37
- pagination,
38
- todo,
39
- }) => {
40
- if (management && !pagination) return components;
41
-
42
- if (management && pagination)
43
- return components.filter((c) =>
44
- customFilterPagination(c, pagination, page)
45
- );
46
-
47
- if (isDev) {
48
- console.log('Start filter');
49
- var start = new Date().getTime();
50
- }
51
-
52
- const updatedVars = Object.keys(todo);
53
-
54
- if (!pagination) {
55
- const filtered = filterComponents({
56
- components,
57
- updatedVars,
58
- features,
59
- bindings,
60
- });
61
- if (isDev) console.log(`End filter: ${new Date().getTime() - start} ms`);
62
- return filtered;
63
- }
64
-
65
- const pageComponents = components.filter((c) =>
66
- customFilterPagination(c, pagination, page)
67
- );
68
-
69
- const pageComponentsFiltered = filterComponents({
70
- components: pageComponents,
71
- updatedVars,
72
- features,
73
- bindings,
74
- });
75
- if (isDev) console.log(`End filter: ${new Date().getTime() - start}`);
76
- return pageComponentsFiltered;
77
- };
78
-
79
- let oldComponents = [];
80
- let memoryTodo = {};
81
-
82
- export const useFilterComponents = ({
83
- questionnaire,
84
- management,
85
- bindings,
86
- features,
87
- page,
88
- pagination,
89
- todo,
90
- }) => {
91
- if (Object.keys(todo).length > 0) {
92
- memoryTodo = todo;
93
- return oldComponents;
94
- }
95
- const components = buildComponents({
96
- components: questionnaire.components,
97
- management,
98
- bindings,
99
- features,
100
- page,
101
- pagination,
102
- todo: memoryTodo,
103
- });
104
- oldComponents = components;
105
- return components;
106
- };
1
+ import { interpret } from '../interpret';
2
+ import { isDev, buildVectorialBindings } from '../../lib';
3
+
4
+ let cache = {};
5
+
6
+ const customFilterPagination = ({ page }, pagination, currentPage) => {
7
+ return pagination ? currentPage.split('.')[0] === page : true;
8
+ };
9
+
10
+ const filterComponents = ({ components, updatedVars, features, bindings }) => {
11
+ const localCache = {};
12
+ const filtered = components.filter(({ conditionFilter }) => {
13
+ if (!conditionFilter || !conditionFilter.value) return true;
14
+ const { bindingDependencies, value } = conditionFilter;
15
+ if (localCache[value] !== undefined) return localCache[value];
16
+ if (
17
+ (!bindingDependencies ||
18
+ !updatedVars.some((t) => bindingDependencies.includes(t))) &&
19
+ cache[value] !== undefined
20
+ )
21
+ return cache[value];
22
+ const vectorialBindings = buildVectorialBindings(bindings);
23
+ const inter = interpret(features)(vectorialBindings)(value);
24
+ localCache[value] = inter;
25
+ return inter;
26
+ });
27
+ cache = { ...cache, ...localCache };
28
+ return filtered;
29
+ };
30
+
31
+ const buildComponents = ({
32
+ components,
33
+ management,
34
+ bindings,
35
+ features,
36
+ page,
37
+ pagination,
38
+ todo,
39
+ }) => {
40
+ if (management && !pagination) return components;
41
+
42
+ if (management && pagination)
43
+ return components.filter((c) =>
44
+ customFilterPagination(c, pagination, page)
45
+ );
46
+
47
+ if (isDev) {
48
+ console.log('Start filter');
49
+ var start = new Date().getTime();
50
+ }
51
+
52
+ const updatedVars = Object.keys(todo);
53
+
54
+ if (!pagination) {
55
+ const filtered = filterComponents({
56
+ components,
57
+ updatedVars,
58
+ features,
59
+ bindings,
60
+ });
61
+ if (isDev) console.log(`End filter: ${new Date().getTime() - start} ms`);
62
+ return filtered;
63
+ }
64
+
65
+ const pageComponents = components.filter((c) =>
66
+ customFilterPagination(c, pagination, page)
67
+ );
68
+
69
+ const pageComponentsFiltered = filterComponents({
70
+ components: pageComponents,
71
+ updatedVars,
72
+ features,
73
+ bindings,
74
+ });
75
+ if (isDev) console.log(`End filter: ${new Date().getTime() - start}`);
76
+ return pageComponentsFiltered;
77
+ };
78
+
79
+ let oldComponents = [];
80
+ let memoryTodo = {};
81
+
82
+ export const useFilterComponents = ({
83
+ questionnaire,
84
+ management,
85
+ bindings,
86
+ features,
87
+ page,
88
+ pagination,
89
+ todo,
90
+ }) => {
91
+ if (Object.keys(todo).length > 0) {
92
+ memoryTodo = todo;
93
+ return oldComponents;
94
+ }
95
+ const components = buildComponents({
96
+ components: questionnaire.components,
97
+ management,
98
+ bindings,
99
+ features,
100
+ page,
101
+ pagination,
102
+ todo: memoryTodo,
103
+ });
104
+ oldComponents = components;
105
+ return components;
106
+ };
@@ -1 +1 @@
1
- export { default } from './lunatic';
1
+ export { default } from './use-lunatic';